Maison >base de données >tutoriel mysql >L'héritage de sous-type doit-il être utilisé pour gérer les notes liées aux livres et aux articles dans une base de données ?

L'héritage de sous-type doit-il être utilisé pour gérer les notes liées aux livres et aux articles dans une base de données ?

DDD
DDDoriginal
2024-12-26 18:41:16902parcourir

Should Subtype Inheritance Be Used for Managing Notes Related to Books and Articles in a Database?

Conception de base de données : avantages et limites de l'héritage de sous-type

Dans la conception de bases de données, décider d'utiliser ou non l'héritage de sous-type peut être une décision cruciale qui a un impact normalisation et flexibilité des données. Explorons les avantages et les inconvénients de l'utilisation de l'héritage de sous-type dans le contexte d'un schéma avec des livres, des articles et des notes.

Conception originale avec table « Notes » partagée

Initialement, la conception comprenait trois tableaux principaux : « LIVRES », « ARTICLES » et « NOTES ». Les notes sur les livres et les articles étaient stockées dans la table « NOTES », avec des colonnes comprenant « note_id », « note_type », « note_type_id » et « note_content ». Cette conception nécessitait une opération JOIN entre 'NOTES' et 'BOOKS' ou 'ARTICLES' pour récupérer des notes spécifiques.

Conception alternative avec des tables séparées

Comme alternative , le concepteur a proposé de créer cinq tableaux distincts : "BOOKS", "ARTICLES", "NOTES", "BOOK_NOTES" et 'ARTICLE_NOTES.' Cette conception isole les notes sur les livres et les articles dans des tableaux distincts, chaque tableau contenant une clé étrangère vers le « BOOK_ID » ou « ARTICLE_ID » correspondant.

Comparaison des approches

La conception originale avec une table 'NOTES' partagée offre l'avantage de la simplicité et d'une redondance réduite des données. Cependant, cette méthode peut devenir moins efficace à mesure que le nombre de notes augmente, en particulier si les requêtes se concentrent sur des notes liées à un seul type de publication (par exemple, des livres ou des articles).

La conception alternative avec des tableaux séparés améliore l'organisation des données. et élimine le besoin de JOIN pour récupérer des notes pour un type de publication spécifique. Cependant, il introduit une redondance des données, car les notes sont stockées à la fois dans la table 'NOTES' et dans les tables 'BOOK_NOTES' ou 'ARTICLE_NOTES' correspondantes.

Héritage de supertype/sous-type comme compromis

Bien que l'héritage de sous-type soit souvent utilisé lorsque les sous-types ont des colonnes hautement spécialisées, ce n'est peut-être pas l'idéal solution pour ce scénario. Au lieu de cela, l'approche suivante est proposée :

  1. Créez une table de supertype appelée "PUBLICATION" avec des colonnes communes aux livres et aux articles (par exemple, "ID", "

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn