Frage

Ich höre viel über Tabellen Subtypisierung, wenn ein Datenbankdesign und ich bin voll und ganz bewusst von der Theorie hinter ihnen. Ich habe jedoch nie tatsächlich Tabelle Subtyping in Aktion gesehen. Wie können Sie Subtypen von Tabellen erstellen? Ich bin mit MS Access, und ich bin auf der Suche nach einer Möglichkeit, es in SQL zu tun, als auch über die grafische Benutzeroberfläche (Access 2003).

Cheers!

War es hilfreich?

Lösung

Ein einfaches Beispiel wäre eine Person Tabelle in der Tabelle mit einem Primärschlüssel und einige Spalten zu haben. Jetzt können Sie eine andere Tabelle namens Schüler erstellen, die einen Fremdschlüssel für den Personen-Tisch hat (sein Supertyp). Nun ist der Schülertisch hat einige Spalten, die der Supertyp nicht wie GPA, Major hat, etc. Aber den Namen, Nachname und so würde in der übergeordneten Tabelle sein. Sie können immer die Studentennamen in der Tabelle Person durch den Fremdschlüssel in der Tabelle Student Zugriff zurück.

Wie auch immer, nur nicht vergessen, die folgende:

  • Die Hierarchie zeigt Beziehung zwischen übergeordneten Typen und Subtypen
  • geordneten Typen haben gemeinsame Attribute
  • Formationsglieder haben unique Attribute

Andere Tipps

Subtypen von Tabellen ist eine konzeptionelle Sache in EER-Diagramme. Ich habe nicht einen RDBMS (ausschließlich objektrelationalen Datenbankverwaltungssysteme), die es unterstützt direkt gesehen. Sie werden in der Regel implementiert entweder

  1. Eine Reihe von Nullable-Spalten für jede Eigenschaft des Subtyps in einer einzigen Tabelle
  2. Mit einem Tisch für Basistyp Eigenschaften und einige andere Tabellen mit höchstens eine Zeile pro Basistabelle, die Subtyp Eigenschaften enthalten

Der Begriff der Tabellenuntertypen ist nützlich, wenn ein ORM-Mapper mit dem Klassenuntertyp-Hierarchie, die genau modelliert die Domain zu erzeugen.

Ein Untertyp Tabelle wird sowohl ein Fremdschlüssel zu seinen Eltern zurück, die auch die Untertypen Tabelle Primärschlüssel ist.

Beachten Sie, dass eine gebundene Anwendung bei der Gestaltung, wie mit einer Access-Anwendung, Subtypen hohe Kosten in den Auflagen der Joins.

Zum Beispiel, wenn Sie eine Supertyp-Tabelle mit drei Subtyp Tabellen haben, und Sie müssen sofort all drei in einer einzigen Form angezeigt werden (und Sie müssen nicht nur den Supertyp Datum zeigen), beenden Sie mit einer Auswahl an mit bis drei Outer-Joins und Nz (), oder Sie brauchen eine UNION aLL von drei sich gegenseitig ausschließende SELECT-Anweisungen (eine für jeden Subtyp). Keines von beiden wird bearbeitet werden.

Ich wollte einige SQL von dem ersten Haupt App einfügen, wo ich mit Super- / Subtyp Tabellen gearbeitet, aber es zu betrachten, ist die SQL so kompliziert, es würde nur die Menschen verwirren. Das ist nicht so sehr, weil meine app war kompliziert, aber es ist, weil die Natur des Problems ist komplex - der vollen Satz von Daten für den Benutzer, sowohl Über- und Subtypen, ist von Natur aus komplex. Mein Fazit aus der Arbeit mit ihm war, dass ich weg mit nur einem Subtyp Tisch besser sein würde.

Das ist nicht zu sagen, dass es unter Umständen nicht sinnvoll ist, nur, dass Access des gebundenen Formen müssen nicht machen es einfach, diese Daten an den Benutzer zu präsentieren.

Ich habe ein ähnliches Problem, das ich gearbeitet habe.

für ein wiederholbares Muster Während der Suche, wollte ich sicherstellen, dass ich nicht referentielle Integrität verlassen hatte, was bedeutete, dass ich nicht ein (TABLE_NAME, PK_ID) Lösung verwenden würde.

ich schließlich ließ sich auf:

Niedrige Art Tabelle: CUSTOMER

Unterkategorie Tables: Person, Geschäft, GOVT_ENTITY

Ich habe NULL festlegbare PRERSON_ID, BUSINESS_ID und GOVT_ENTITY_ID Felder in KUNDE, mit Fremdschlüssel auf jedem, und eine Check-Einschränkung, dass nur eine nicht null ist. Es ist einfach, neue Untertypen hinzuzufügen, nur um den Nullable-Fremdschlüssel hinzufügen muß und das Prüf-Integritäts ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top