Eins-zu-eins-Beziehung könnte normalerweise in derselben Tabelle gespeichert werden. Gibt es Gründe, sie nicht in derselben Tabelle zu speichern?Gibt es in SQL/MySQL Gründe, keine Eins-zu-Eins-Beziehung in dieselbe Tabelle zu stellen?
Antwort
Anzahl und Art der Spalten. Die Größe der Spalten in einer Tabelle ist begrenzt. Siehe here. Es gibt maximal 8.060 Bytes pro Zeile.
Sehr große Tabellen können sich ebenfalls auf die Leistung auswirken und können schwierig zu optimieren und zu indexieren sein.
Dies ist abgesehen von Daten zu halten ist konzeptionell anders, voneinander getrennt. Zum Beispiel haben ein Land und eine Währung eine 1: 1-Beziehung (anschauliches Beispiel, ich weiß, dass dies nicht immer der Fall ist). Ich würde sie immer noch nicht zusammenhalten.
Sie werden einige Informationen über finden, wenn es nützlich ist, eine Eins-zu-Eins-Beziehungen unter http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.html
das Wichtigste zu erstellen ist folgende:
Der Schlüsselindikator für einen möglichen Bedarf für Eine Eins-zu-Eins-Beziehung ist eine Tabelle, die Felder enthält, die nur für eine bestimmte Teilmenge der Datensätze in dieser Tabelle verwendet werden.
Ich habe dies getan, um Sperren/Blockierung zu verhindern, setzen Sie die schweren Spalten in einer Tabelle lesen die Aktualisierung schweren Spalten in einer anderen, arbeitete wie ein Charme. Viele große fette Update-Transaktionen verlangsamten viele Lesevorgänge.
Eins - zu Null-oder-Eins-Beziehungen sind üblich und vom optionalen zum obligatorischen verknüpft - das Beispiel in http://onlamp.com/pub/a/onlamp/2001/03/20/aboutSQL.html ist von dieser Art, nicht eins zu eins. Typ-/Subtyprelationen können so implementiert werden.
Eins-zu-Eins-Beziehungen treten auf, wenn jede eine klare, aussagekräftige Entität darstellt, die in einem anderen Kontext in einer anderen Beziehung stehen kann und eine geringfügige Änderung der Anforderungen die Kardinalität der Beziehung ändern kann. Es ist willkürlich, welche Links zu welchen, so dass es am besten ist, eins zu wählen, um optional zu sein und zu Eins zu Null oder Eins zu konvertieren.
- 1. So stellen Sie sicher, es gibt keine Laufzeitfehler in Python
- 2. Gibt es Gründe, nicht mit Android Studio Lombok zu verwenden
- 3. In Java, warum sind Arrays Objekte? Gibt es bestimmte Gründe?
- 4. Gibt es irgendwelche Gründe, "this" ("Self", "Me", ...) nicht zu verwenden?
- 5. Gibt es Gründe, Boost :: shared_ptrs nicht zu verwenden?
- 6. Gibt es Gründe, die CSS-Regel "@import" noch zu verwenden?
- 7. Es gibt keine primären oder Kandidatenschlüssel in der referenzierten Tabelle
- 8. Gibt es Gründe dafür, dass Sie keine foreign_key in einer Assoziation haben möchten?
- 9. SQL in Tabelle Mehrere Abfragen dieselbe Spalte
- 10. dieselbe Tabelle zweimal sperren
- 11. Es gibt keine Daten in Fremdschlüssel Spalte
- 12. Gibt es Gründe, warum die h2-Datenbank nicht in der Produktion verwendet werden sollte?
- 13. Gibt es Gründe dafür, boolesche Werte in SQL nicht als Bitdatentypen zu speichern?
- 14. Gibt es Gründe, ARIA-Status und -Rollen nicht als Selektoren in CSS zu verwenden?
- 15. Gibt es Gründe, einen COM-Server in einer COM + -Anwendung nicht zu hosten?
- 16. Gibt es eine einfache Möglichkeit, Bilder schräg zu stellen?
- 17. Postgresql Join-Tabelle auf der gleichen Tabelle, bis es keine Daten mehr zu geben gibt
- 18. Es gibt keine catalina.out
- 19. Warum gibt es in JavaFX keine ObservableQueues?
- 20. Gibt es in Darwin wirklich keine Mrmap?
- 21. Gibt es Vorteile, KEINE Funktionsprototypen in C zu verwenden?
- 22. Warum gibt es keine Seq.partition in F #
- 23. Warum gibt es in Java keine Binärliterale?
- 24. mysql - Ergebnisse der Abfrage in dieselbe Tabelle mit Joins einfügen
- 25. Gibt es Gründe, mit "val Kapazität: Int" statt "val Int Capacity" in Scala
- 26. Gründe, nicht tf.train.AdamOptmizer zu verwenden?
- 27. Gibt es eine Möglichkeit, dieselbe Hibernate-Entität mehreren Tabellen in verschiedenen Schemata zuzuordnen
- 28. Warum gibt es keine Zeichenfolge.Split (String) Überladung?
- 29. Gründe, CVS noch zu verwenden?
- 30. Gute Gründe, PHP-Bibliotheken in Namespaces zu migrieren
Zu breite Tabellen können auch langsamer zugänglich sein. – HLGEM
@HLGEM - Ganz richtig. Zur Antwort hinzugefügt :) – Oded
Das Limit von 8060 Bytes pro Zeile war ein OLD SQL Server-Limit. Dies funktioniert in SQL Server 2005: 'create table big_row (ein varchar (5000), b varchar (5000), c varchar (5000), d varchar (5000), e varchar (5000), f varchar (5000), g varchar) (5000), h varchar (max)), in big_row Werte einfügen (replizieren ('A', 5000), replizieren ('B', 5000), replizieren ('C', 5000), replizieren ('D', 5000), replizieren ('E', 5000), replizieren ('F', 5000), replizieren ('G', 5000), replizieren ('H', 10000)) 'Dein Link ist für SQL Server, jedenfalls dachte ich Frage war über MySql. Aber Ihr bisschen über große Tabellen (ich nehme an, Sie meinen, Breite und nicht Zeilen) ist richtig. –