Une base de données sans liens ni triggers
Utilisez-vous des liens entre les tables, dans vos développements ? Des liens déclarés au niveau de la base, comme par exemple l’intégrité référentielle ?
J’ai vu une application avec des dizaines de tables, sans aucun lien entre les tables. Tout est géré par le programme, y compris l’intégrité référentielle. A priori donc, sauf bug, il ne peut y avoir d’incohérence dans sa base.
Je n’ai aucun problème avec les notions présidant à la conception de base de données, mais je n’ai pas l’expérience d’un gros développement avec. Aussi je me demande si c’est la meilleure façon de coder une application qui se sert intensément d’une base de données.
J’essaie de voir le pour et le contre.
- Je suppose que la conception de la base (scripts de création des tables et scripts de mise à jour des tables) est plus simple comme cela, puisque que l’on ne se préoccupe pas de lien ou d’intégrité.
- Je me pose des questions sur les performances. Admettons que le programme ne soit pas bugué, n’obtient-on pas les résultats plus rapidement, en général, si l’on affiche des données d’une table parent et de sa table enfant, s’il y a déjà un lien au niveau de la base ?
- Est-ce que la gestion des erreurs n’est pas plus sure, si une violation d’intégrité référentielle est signalée par une exception générée par un trigger, au niveau de la base, plutôt que codée dans l’application ?
Bref, je suis un peu confus, là, car il me semblait naturel, jusqu’ici, de définir au moins les liens d’intégrité référentielle au niveau de la base.
Votre avis ? Merci de vos réponses :)