2012-04-10 8 views
0

Wann sollte man eins zu eins Beziehungen verwenden? Wann sollten Sie neue Felder hinzufügen und wann sollten Sie sie in eine neue Tabelle aufteilen?MySQL - Wann man eins zu eins Beziehungen hat

Es scheint mir, dass Sie es verwenden würden, wenn Sie Felder gruppieren und/oder diese Gruppe tendenziell optional ist. Ja?

Ich versuche, die Tabellen für ein Objekt zu erstellen, aber Gruppierung/Trennung alles würde mich etwa 20 Joins und einige sogar 4 Ebenen tief erfordern.

Mache ich etwas falsch? Wie kann ich mich verbessern?

+0

Siehe auch: http://stackoverflow.com/questions/6352324/when-we-need-to-use-1-relationship-in-database-design/6362543#6362543 –

+0

@ RS7 Hat dies getan dir helfen? Wenn ja, sollten Sie die Antwort akzeptieren! –

Antwort

6

Zunächst empfehle ich das Lesen about Normal Forms

Eine normalisierte relationale Datenbank ist äußerst nützlich, und dies zu tun ist eigentlich der Grund-Tools wie Hibernate existieren - zu helfen, den Unterschied zwischen Objekten repräsentiert-as-relational- zu verwalten Abbildungen und Objekte als progrommatic-entities.

Alles, was eine Eins-zu-Eins-Zuordnung hat, sollte sich wahrscheinlich in derselben Tabelle befinden. Eine Person hat nur einen Vornamen, einen Nachnamen. Diese sollten logisch in derselben Tabelle sein. Ein Verweis auf eine Tabelle von Namen ist nicht notwendig - insbesondere weil wenig zusätzliche Daten über einen Namen gespeichert werden können. Offensichtlich ist dies nicht immer wahr (eine Etymologie-Datenbank könnte genau das tun), aber für die meisten Anwendungen interessiert es Sie nicht, wo ein Name herkommt - in der Tat ist alles, was Sie wollen, der Name.

Denken Sie daher an die dargestellten Objekte. Eine Person hat einige singuläre Datenpunkte und einige Eins-zu-Viele-Beziehungen (Adressen, an denen sie beispielsweise gelebt haben). Eins zu viele und viele zu viele werden fast immer einen separaten Tisch benötigen (oder zwei, um viele zu viele zu haben). Nach diesen zwei Richtlinien können Sie eine normalisierte Datenbank ziemlich schnell erhalten.

Beachten Sie, dass optionale Felder möglichst vermieden werden sollten. In der Regel ist dies eine separate Tabelle, die das Feld mit einem Verweis auf die ursprüngliche Tabelle enthält. Versuchen Sie, Ihre Tabellen schlank zu halten. Wenn ein Feld wahrscheinlich nicht über etwas verfügt, sollte es wahrscheinlich eine Zeile in der eigenen Tabelle sein. Viele dieser Eigenschaften schlagen eine Eigenschaftstabelle vor, die beliebige optionale Eigenschaften eines bestimmten Typs enthalten kann (dh wie sie auf eine Person angewendet werden).

+0

@ RS7 Hat Ihnen das geholfen? Wenn ja, sollten Sie die Antwort akzeptieren! –

Verwandte Themen