The problem is that “we try to maintain the normalization of the database” is almost certainly the answer is wrong - it plays the ball in a court of mistrust and cross-purposes.
You need to pay attention to the ultimate goal, how best to fulfill this final goal (possibly in several versions) and what it will cost in the short and long term. I noticed that the mention of technical debt in the responses and estimates should take these factors into account.
Could it be a bad idea to "just add another column?". You really didn’t give the whole business case. On the other hand, they challenged your negative answer with an uninformed technical question. This does not go to the point to help you understand this requirement, because they did not like to hear no. (I would like to know what the original statement of the problem is.)
Normalizing the database is a technical problem and is not related to the requirements that the system must satisfy - this is the principle of system design that you use to deliver systems with certain properties, such as maintainability. But supported systems that do not meet the needs of users have a value of zero, and invalid systems that satisfy the needs of users have a non-zero value (which can be exceeded by the cost of service - which is a problem for the business). Regardless of whether EAV or some other mechanism is required, this is actually not the case — it simply leads to an increase in system complexity or cost.
If the requirements are too expensive to implement, then this is part of the business case. You have not sufficiently informed us about the architecture or type of entities that use these tables. Say you have 100 customers. Columns in a specific object may have overlap. Just as 95% of customers will never use the optional Billing-Address or Middle-Name column, this does not mean that these columns are not taken into account - and not only that, they are often in the original design! Alternatively, if this is the Products table, and each client wants a lot of special columns, and there is no overlap, you may need a user-defined field system (EAV / XML / tag - the design must meet the requirements) instead, to maintain a holistic system design .
I rarely found that a business ignores the argument for technical debt, especially if the proposed solution can be met by the needs of the user, and flexibility can be a selling point. What I discovered is that business often prefers if you offer solutions as quickly and thoroughly as possible without spending more time explaining why something cannot be done or how much it will cost than it would take to fasten a couple in the afternoon and actually do the work done.
Cade Roux Nov 13 '09 at 4:23 2009-11-13 04:23
source share