This is the Database Programmer blog, for anybody who wants practical advice on database use. You will find links to other essays in the bottom of this post. This blog has two desks of material, the Topical Table of Contents and the list of Database Skills. So what I am getting at is that developers of all stripes are addicted to abstraction, it offers us goosebumps and makes us feel warm and tingly, therefore we do it even when we do not need to. We build abstraction contraptions. Everybody desires to be appreciated for something. This legislation is not about data source gain access to, it is about data source design.
Table-based datastores are optimally abstract; they might need no additional abstraction when requirements are changed into desgin; they can not be reduced to a less abstract form. I should point out that this essay deals with structured atomic ideals, who live in the Kingdom of The Relational Database. The principles talked about do not connect with free-text documents or images here, or sound data files, or any other press.
My basic state here’s that you cannot create an abstraction of data schemas that will pay for itself. After that it will go downhill, because if we generate an abstraction that is not a simple one-to-one mapping, we obscure the end goal actually. Consider a good example so simple concerning border on the trivial or absured.
Why would we ever use the conditions “One-to-Many” or “Many-to-Many” when the more precise conditions “child table” and “cross-reference desk” present the same idea with no sound? I said above that this would sound trivial, and you could accuse me of nit-picking, but this is one of those camel’s nose things, or simply a slippery slope. When technical folk get to design a system together, we should call things what they are, rather than make up new words to make ourselves sound smarter.
The second fifty percent of Ken’s laws says that you cannot de-Abstract a desk schema into some simpler form. This will be very easy to understand, because relational directories deal with atomic values, that is, beliefs which cannot themselves be decomposed. If you fail to decompose something, it can’t be an abstraction of something more specific then.
Going further, if the schema has been normalized, then every simple truth is stored in exactly one place, so no more simplification is possible. If you fail to simplify it or solve it into something more specific, it is not an abstraction of another thing then. But Does it Work? On Later, when at a different position, the programmers received their instructions from Project Managers.
The best Project Managers caused their customers to determine what they were trying to keep an eye on, and handed us specifications which were essentially table designs. Since that time I’ve further learned that it’s very easy for those who who deals with non-technical people to bring them right to table design without telling them you are doing it.
All you should do is pay attention to what words they use and adopt your conversation accordingly. If they state things like “I want a screen that presents me purchases by customer types” they have informed you there will be a desk of customer types. Talk to them in conditions of screens.
If they state, “Our catalog has 3 different price list and four discount strategies” then you understand that you will see a PRICELIST desk, a DISCOUNTS desk, and likely some cross-references and parent-child interactions here taking place. So How Does ORM Come Into This? One of the greatest abstraction contraptions of this century (so far), is ORM, or Object-Relational Mapping, that i do not use because it can be an abstraction contraption specifically. To become clear, the mistake that ORM makes is not at the look phase, but at the access phase. Perhaps ORM should stand for Obscuring Reality Machine.
So think about that weird title involving head transplants? Obviously a mind transplant is impossible, making it most unlikely also, besides being ridiculous and non-sensical. It came to mind as a kind of aggregrate out of all the bizarre and unrealistic ideas about abstracting data designs that I’ve heard over time. One of these ideas is that it is possible and beneficial to make a design that is abstract so that it can be implemented in virtually any model: relational, hierarchical, or network.