26

Meine Frage bezieht sich auf die Vererbungsmodellierung in relationalen Datenbanksystemen. Ich habe ein kanonisches Datenmodell und ich habe einige Felder in Bezug auf die Preisgestaltung von Produkten, die bestimmte Attribute aus der Produkttabelle erben, und ich möchte diese Vererbung in der relationalen MySQL-Datenbank modellieren und so,Wie wird die Vererbungsmodellierung in relationalen Datenbanken durchgeführt?

"Wie können wir Vererbungsmodellierung in Relational machen Datenbanken? "

Danke.

Antwort

27

Martin Fowler diskutiert dies ausführlich in seinem Buch Patterns of Enterprise Application Architecture Buch. Holen Sie sich dieses Buch und schauen Sie in:

  1. Single Table Inheritance
  2. Class Table Inheritance
  3. Concrete Table Inheritance

Die Website sollte Ihnen eine Vorstellung geben. Vielleicht möchten Sie auch den Abschnitt inheritance mappers lesen. Jeder der verschiedenen Ansätze hat seine Vor- und Nachteile, also wähle weise.

+18

Diese Antwort beinhaltet den Kauf eines Buches, um vollständig realisiert zu werden. Gibt es eine Chance, ähnliche Webressourcen hinzuzufügen? –

3

Relationale Datenbanken nicht mit Objekten tun (und damit Vererbung) - sie mit Beziehungen umgehen. Was Sie wirklich fragen ist, wie Sie Ihre Objektstruktur auf Ihre Datenbank abbilden - und die Antwort darauf lautet: "Das hängt von Ihrer ORM-Ebene ab".

Werfen Sie einen Blick auf Mapping Objects to Relational Databases: O/R Mapping In Detail Artikel für einige Details. Wenn Sie uns mitteilen, welchen Software-Stack Sie verwenden, erhalten Sie wahrscheinlich eine genauere Antwort.

+1

Das klingt vielleicht pedantisch, aber ich glaube nicht, dass relationale Datenbanken mit Beziehungen zu tun haben, sondern eher so, weil sie sich mit den hier definierten Beziehungen befassen: http://en.wikipedia.org/ wiki/Relation_ (Datenbank) –

+1

@Ralph: Wiki ist ein Abszess; Die Konfabulatoren haben keine Zertifizierung. Relationale Datenbanken befassen sich mit Entitäten und Relationen, nicht mit Objekten. Objekte können einfach zugeordnet werden, wenn das RDb wirklich relational ist; und nicht, wenn es nicht ist. – PerformanceDBA

+3

Sie können Tabellenvererbung ohne ORM haben –

2

Wenn Sie nur bei einigen Web-Artikel aussehen wollen stattdessen ein Buch zu lesen, können Sie einige gute Artikel von Googeln finden Sie unter:

Generalization Specialization Relational Modeling 

Die gen-spec Muster, das eine Menge von der gleichen Boden abdeckt, Vererbung funktioniert in OOP-Umgebungen.

Wenn Sie Google auf

Generalization Specialization Object Modeling 

Sie eine ganz neue Charge von Artikeln erhalten, von denen die meisten Erbe explizit erwähnen.

Es gibt eine Design-Technik, die im folgenden Tag unter dem Info-Tag zusammengefasst ist. Dies erlaubt es Ihnen, Unterklassen-Tabellen zu verwenden, um eine Klassentabelle zu "erweitern", wenn Sie eine seltsame Verwendung des Wortes "erweitern" erlauben. Es gibt einige Arbeiten, aber es lohnt sich.

+0

Während dies nicht wirklich eine Antwort in einem idealisierten S.O. Sinn, ich fand es sehr nützlich. – derekv

1

Kapitel 6 von "Praktische Fragen in der Datenbankverwaltung" ist wahrscheinlich eine interessante Lektüre für Sie.

Wie wahrscheinlich alle anderen Kapitel, aber diese beziehen sich nicht direkt auf Ihre Frage.