J'ai beaucoup travaillé avec les bases de données relationnelles et je pense comprendre assez bien les concepts de base d'une bonne conception de schéma. J'ai récemment été chargé de reprendre un projet où la base de données avait été conçue par un consultant hautement rémunéré. S'il vous plaît laissez-moi savoir si mon intestin instinct - "WTF ??!?" - est justifié, ou est-ce un gars si génial qu'il opère hors de mon royaume?
DB en question est une application interne utilisée pour saisir les demandes des employés. En regardant une petite partie de celle-ci, vous avez des informations sur les utilisateurs et des informations sur la demande en cours. Je concevrais ceci comme si:
Table utilisateur:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
Table de demande
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
Simple, non?
Le consultant l'a conçu comme suit (avec des exemples de données):
Tableau d'utilisateurs
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
DépartementsTable
DepartmentID Name
1 Sales
2 HR
3 IT
UserDepartmentTable
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
RequestTable
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
La base de données entière est construite comme ceci, avec chaque donnée encapsulée dans sa propre table, avec des ID numériques reliant tout. Apparemment, le consultant avait entendu parler d’OLAP et souhaitait connaître la «vitesse de recherche des nombres entiers».
Il dispose également d'un grand nombre de procédures stockées pour faire référence à toutes ces tables.
Cette conception est-elle valide pour une base de données SQL de taille petite à moyenne?
Merci pour les commentaires / réponses ...