2016-08-02 26 views
0

ich vier Tische haben:Wie eine Liste der Elemente in Auftragstabelle speichern (MySQL)

Bestellung [orderId, * itemId, Totalprice]

Item [itemId, * orderId, Menge]

Poster [posterId, * orderId, Größe, Material]

Card [CARDID, * orderId, Größe, Text]

Artikel ist im wesentlichen eine abstrakte Tabelle, die relevanten Daten für jedes Element hält . Alle Gegenstände (Poster und Karten) haben einige einzigartige Eigenschaften.

Zwei Fragen:

  1. Gibt es eine Möglichkeit, eine Vererbungsbeziehung zwischen Items-Tabelle und Plakate/Karte einzurichten? So, dass die Order-Tabelle nur die ItemId eines Child eines Items akzeptiert?
  2. Eine Bestellung kann mehrere Artikel enthalten, daher sollte sie eine Liste mit fremden Artikelschlüsseln enthalten, nicht nur eine. Wie gehe ich das an?
+0

Was sind diese * Sternchen? – jonju

+0

Wenn es Fremdschlüssel darstellt, dann denke ich, Sie brauchen 'itemId' nicht in' Order' Tabelle – jonju

+0

Ja, mit Sternchen meinte ich einen Fremdschlüssel – Mike

Antwort

0

Sie können eine Tabelle für Elemente erstellen und die Fremdschlüsseleinschränkung in der Poster-/Kartentabelle in der Tabelle "Elemente" einrichten.

Gibt es eine Möglichkeit, eine Vererbungsbeziehung zwischen Artikel Tabelle und Poster/Karte einzurichten? So, dass die Order-Tabelle nur die ItemId eines Child eines Items akzeptiert?

Legen Sie eine Fremdschlüsseleinschränkung für die Tabelle "Bestellung" auf "Artikeltabelle" fest.

Eine Bestellung kann mehrere Artikel enthalten, daher sollte sie eine Liste mit fremden Artikelschlüsseln enthalten und nicht nur einen. Wie gehe ich das an?

In einer a viele zu eins Beziehung Mapping sollte auf einer Seite, d. H. Artikel Seite in Ihrem Fall nicht Bestellseite gespeichert werden. Und wenn die Item-Tabelle statisch ist, sollten Sie eine Mapping-Tabelle erstellen, um die Beziehung zwischen Item und Order zu verwalten, und nicht in der Order-Tabelle.

0

Besser Sie entfernen itemId und orderId von Order bzw. Item Tabelle. Behandle sie beide als Master. Wie Sie ein Order sagte mehrere items haben kann, eine dritte Tabelle zB order_item erstellen und zwei Spalten orderId & itemId erstellen und sie dem entsprechenden master_tables

orderId|itemId| 
-------+------+-- 
    1 | 1 | 
    1 | 2 | 
    1 | 3 | 

Auf diese Weise beziehen können Sie mulitple Items für einzelne Order haben, und Sie können Machen Sie das gleiche für andere Tabellen

+0

Ich denke, diese Art wird ein bisschen einfacher für mich zu implementieren, danke ! – Mike

+0

Sie sind willkommen Kumpel !!! – jonju