I'm in early stages of creating a database-driven system and also the biggest area of the system involves an inheritance kind of relationship. There's a parent or gaurdian entity about 10 posts and you will see about 10 child organizations getting in the parent. Each child entity may have about 10 posts. I figured it made sense to provide parents entity its very own table and provide each one of the children their very own tables - a table-per-subclass structure.
Today, my customers asked for to determine the dwelling from the system I produced. They balked thinking on the table-per-subclass structure. They'd prefer one large ~100 column table because it might be simpler to allow them to perform their very own custom queries.
Must I consider denormalizing the database with regard to the customers?
Definitely not. You could produce a view later to exhibit them what they need to determine.
They're effectively requesting a study.
You can provide them with use of a view that contains all of the fields they might require... this way you do not screw up your computer data model.
No. Structure the information correctly and when the customers require the a denormalized look at the information create it as being a VIEW within the database.
Alternatively, take into account that possibly an RDBMS isn't the appropriate storage tool with this project.
Those are the customers and never the developers from the system for any reason. Give a separate interface for his or her queries. Energy customers such as this can both be useful along with a discomfort to cope with. Just explain you'll need the database developed a certain way to help you do your work, period. Once that's accomplished you and also provide other way to make querying simpler.
Exactly what do they are fully aware!? You can reason that customers should not be also getting immediate access to some database to begin with.
Doing that leaves you available to massive performance issues, must be handful of customers are running absurd queries.
What about should you produced a VIEW within the format your customers wanted while still maintaining a correctly stabilized table?
Apart from many of the technical causes of or against your users' proposition, you have to be on same page in interacting the effects of numerous scenarious and (more to the point) the costs of individuals effects. When the customers are the clients and they're having to pay you to definitely perform a job, explain their
awful "suggested" ideas could cost them more income in development time, additional hardware assets, etc.
Hopefully you are able to explain it in a way that shows your expertise and why your idea is a far greater value for your customers over time.
As everybody pretty much pointed out, this way lies madness, and you will always develop a view.
Should you cannot encourage them to plainly about this point, consider showing them this thread and the amount of professionals who considered in stating that the customers are meddling with stuff that they do not completely understand, and also the impact is going to be an compromised foundation.
A large area of the developer's craft may be the sense of what will not exercise long-term, and also the rules of normalization are almost canonical for the reason that respect. You will find situations where you have to denormalize (data warehouses, etc) but this does not seem like one of these!
Additionally, it sounds as if you might have an especially troubling make of user in your hands -- the amatuer developer who thinks they might do your work better themselves if perhaps they'd time. This might help, but I have discovered that individuals types respond well to presentation -- a couple of occasions now I have discovered that basically dress sharp and show some pressure during my personality, it will help them seem like I am a specialist and prevents a lot of issues before they begin.