2017-04-21 7 views
0

sind meine Tabellen sind, habe ich eine tbl_relation geschaffen, die data_id von tbl_data und tag_id von tbl_tags haben. data_id kann so viele tag_ids haben.Datenbank in einer zu viele Beziehung Gestaltung

Zum Beispiel im folgenden Fall: John ist mit Essen assoziiert, Apfel, Orange. Linus ist mit Nahrung, Kartoffel verbunden.

Ist dies der richtige Weg in Bezug auf Geschwindigkeit und Speicher? wie meine tbl_tags und tbl_data kann mindestens 1 Million Einträge und eine name in tbl_data kann mit mindestens 5 tag_name zugeordnet werden.

tbl_tags 
+----+--------+ 
| id | name | 
+----+--------+ 
| 1 | food | 
+----+--------+ 
| 2 | apple | 
+----+--------+ 
| 3 | orange | 
+----+--------+ 
| 4 | potato | 
+----+--------+ 
| 5 | fruit | 
+----+--------+ 

tbl_data 
+----+--------+ 
| id | name | 
+----+--------+ 
| 1 | John | 
+----+--------+ 
| 2 | Linus | 
+----+--------+ 
| 3 | Bill | 
+----+--------+ 
| 4 | Steve | 
+----+--------+ 
| 5 | Dennis | 
+----+--------+ 

tbl_relation 
+---------+--------+ 
| data_id | tag_id | 
+---------+--------+ 
| 1  | 1  | 
+---------+--------+ 
| 1  | 2  | 
+---------+--------+ 
| 1  | 3  | 
+---------+--------+ 
| 2  | 1  | 
+---------+--------+ 
| 2  | 4  | 
+---------+--------+ 
+0

Dies sieht eine kanonische Art der Speicherung Ihrer zwei Arten von Daten und der Beziehungen zwischen ihnen. Die Herausforderung besteht darin, die richtigen Indizes zu erstellen, damit Verknüpfungen effizient durchgeführt werden können. –

+0

+ Ja das ist in der Tat der beste Weg – Milney

+0

Eine 1: viele Beziehung ist am besten mit einer zusätzlichen Spalte in einer der Tabellen, _not_ über eine zusätzliche Tabelle getan. –

Antwort

0

Was ist das?

Der Titel sagt "1 zu viele". In diesem Fall sollte tags eine Spalte haben, die besagt, welche Person (data_id) mit diesem Tag verbunden ist.

Vielleicht Sam likes apple und potato und kiwi? Das heißt, der Text impliziert, dass es viele sein könnten: viele. In diesem Fall benötigen Sie eine zweispaltige Tabelle, im Wesentlichen wie beschrieben. Hier sind my tips auf die optimale Gestaltung einer solchen Tabelle. Die Tipps behandeln Ihre Fragen zu Geschwindigkeit und Raum.

0

Dies scheint wie eine Viele-zu-Viele-Beziehung zu sein, da tbl_data_id mehreren tbl_tags_id zugeordnet werden kann und umgekehrt (Einträge in tbl_relation sehen). Wenn dies der Fall ist, scheint Ihr Ansatz ziemlich normal wie die normalen Formulare.

Eine Empfehlung lautet, dass Sie Fremdschlüsseleinschränkungen für Ihre Tabelle tbl_relation erstellen.

Verwandte Themen