Mysql
 sql >> Base de données >  >> RDS >> Mysql

Extension des classes dans la base de données

Je vous recommande fortement de consulter le Class Table Inheritance motif tel que défini par Martin Fowler.

Ce modèle de conception crée une table unique qui contient les données communes à tous les bâtiments, par exemple, et nécessite ensuite une table distincte pour toutes les données liées à un type de bâtiment spécifique. Une chose que je trouve utile est de stocker un champ "type" dans la table parent afin que vous sachiez quel type d'entité vous avez sans avoir à rechercher les enregistrements correspondants dans les tables enfants.

Je recommanderais qu'à moins que vous n'ayez une raison très spécifique et bien définie d'utiliser une conception Entity-Attribute, que vous l'évitiez. D'une part, il devient impossible lors de l'utilisation de ce type de conception de tirer parti des contraintes sur la base de données pour contrôler les entrées requises et les types de valeurs autorisés. D'autre part, cela ralentira considérablement toutes les requêtes qui doivent extraire des données de ces types de champs, car les données stockées dans ces champs ne peuvent pas être indexées comme vous le feriez habituellement.