Some Data Design Cautions
While the preceding data design guidelines are helpful, they cannot dictate your final data design decisions. The technical infrastructure and developer skills that surround your application development process will eventually come face-to-face with design practicality and thereby complicate matters. Specifically, there are three practical issues to keep in mind.
First, remember that the preceding guidelines will often conflict each other. For example, if maintainability is most important to you, you might be willing to sacrifice some performance. Similarly, just because a rule deserves aggressive enforcement does not necessarily indicate that the DBMS should enforce it. If the rule involves data that spans multiple tables (or files) and those tables are stored in separate databases, the DBMS might not be able to enforce it.
Second, remember that maintainability is not an abstract concept. It is a concrete concept that depends primarily on the expertise of your staff. Designing a maintainable implementation of a rule means first and foremost choosing an implementation that capitalizes on your programmers' skills. If the rule can be implemented with SQL, but your staff has substantially more expertise in Visual Basic than SQL, concerns about maintainability might encourage you to implement the rule in Visual Basic.
Third, remember that it is very difficult to anticipate where performance problems will occur. During the implementation phase, you should not exert much effort trying to fine-tune your implementation to achieve maximum performance. Applications have become so complex, it is almost impossible to anticipate where the performance problems will occur. Rather, you should honor the basic quality design goals, and then discover and fix performance problems during the quality assurance phase.