6 ms·
The article read like it is written by someone who has never understood how to use a SQL database. To quote Mr Torvalds himself: "Bad programmers worry about
by callesgg 10y ago
The article read like it is written by someone who has never understood how to use a SQL database.
To quote Mr Torvalds himself:
"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."
Something that i struggled with before i learned how to use a SQL/relational database was to actualy use the database relations in my code. I first specified the relations in the database then i basicly redid them in the code.
The way i tend to program these days is to have basically all my relations restrictions and relational rules in the database.
Whenever i want to change something you just alter stuff in the database GUI.
Most of the application code will just follow along.
- bpicolo 10y agoI mean, it was written by a writer, not a developer/software engineer...
- wvenable 10y agoIn my experience, if you have the relational database model fully defined and correct then the rest of the application is pretty much designed. All the screens and elements you need are obvious.
- hire_charts 10y agoThis matches my experience. That's not to say that your application doesn't need to do any work on top of the data. Sometimes you need to interpret the data in different ways for different use cases, and often that means applying transformations at the application layer. But if you find yourself fighting against your own data model, it might be time to consider restructuring the data to better support your use cases.
- abraae 10y agoIndeed, but if you are building in microservices, a new level is introduced. If you can get your service boundaries and APIs fully defined and correct, then the relational database models (underpinning each of those services) just fall from the tree for you. And then as you say the screens and elements are obvious.
- wvenable 10y agoHonestly I'd still prefer to go other way -- from the relational database models you get your APIs defined and correct and then the screens and elements are obvious. I find if you start at the database model layer you much less likely to screw up the API design. The database model forces a bit of rigor that you can't get going the other direction.
- abraae 10y agoIMO it's dead easy to create APIs from a database schema, where that schema underpins your monolith and you're opening said monolith up to the outside world, and you don't really care too much what goes on out there. But if you're building a system which is not a monolith, and instead is made of up of, say, 20 services, then putting good boxes around those services and defining the lines that connect them (the APIs) is an essential prereq to designing the databases that sit inside the boxes. (Though really what's happening, as always, is you're doing it all in parallel, just with more emphasis on the higher level stuff).
- wvenable 10y agoI can't really disagree with that. I usually design micro-services the same as do monoliths; it's just the client is different (another service).
- easuter 10y agoOn this topic I'd like to plug a book that really drove this home for me: "SQL Antipatterns" by Bill Karwin.