2012-04-05 4 views
1

Wenn Sie Dinge online kaufen, fügen Sie sie Ihrem Warenkorb hinzu und wenn Sie etwas zu Ihrem Warenkorb hinzugefügt haben, erstellen Sie einen Auftrag. Im Grunde versuche ich, den besten Weg zu finden, mehrere Gegenstände in eine Reihenfolge zu bringen. Dies ist eher ein Fall von nicht zu wissen, wie die Daten in einer Datenbank in Access gespeichert werden. Ich kann nicht herausfinden, wie die Felder heißen sollen. Mein aktueller Versuch ist dies:Einen 'Korb' für ein Lagerverwaltungsprogramm erstellen?

tblOrders 
OrderID (Primary Key) 
CustomerID (Foreign Key) 
OrderDetailsID 


tblOrderDetails 
OrderDetailsID 
PartID (Foreign Key) 
Quantity 

This ist ein Bild von der ersten Tabelle mit Beispieldaten und this ist ein Beispiel für die zweite Tabelle. Es ist sehr wahrscheinlich, dass ich etwas ganz offensichtlich übersehen habe.

Vielen Dank im Voraus.

Antwort

1

ich es so strukturieren würde:

OrderHeader 
    ID (Primary Key) 
    CustomerID (Foreign Key) 

OrderDetail 
    ID (Primary Key) 
    OrderHeaderID (Foreign Key) 
    PartID (Foreign Key) 
    Quantity 
  • Informieren Sie sich über Hungarian Notation als Namenskonvention, und betrachten Sie Ihre tbl Präfixe fallen. Dies ist nur eine Einstellung, die Sie möglicherweise ignorieren möchten.
  • OrderDetailID auf der OrderHeader wird nicht funktionieren, weil Sie nicht in der Lage sein werden, die erforderliche 1:M Beziehung zu erzeugen, wo eine Bestellung mehrere Detailzeilen haben kann.
  • Verwenden Sie die Ersatzzeichen ID Felder für Ihre Primärschlüssel. Sie erleichtern die Arbeit mit JOIN viel einfacher. Wenn Sie eine Bedingung erzwingen möchten, dass eine Bestellung nur ein Teil einmal verwenden kann, sollten Sie dies mit einer eindeutigen Datenbankeinschränkung für die Spalten OrderHeaderID und PartID tun.

Hier ist eine Beispielabfrage für Ihren Kommentar ...

SELECT H.ID OrderID, D.PartID, D.Quantity 
FROM OrderHeader AS H INNER JOIN 
    OrderDetail AS D ON H.ID = D.OrderHeaderID 
WHERE H.ID = 1234; 
+0

Okay, ich glaube, ich dies und vielen Dank für die interessante Lektüre über die ungarische Notation verstehen! Ich bin ein etwas Anfänger bei der Programmierung, dies klingt vielleicht albern, aber mit Ihrer Struktur oben würde ich dann [this] (http://www.w3schools.com/sql/sql_join.asp) verwenden? Ich kann sehen, dass dies die Lösung wäre, aber ich habe Probleme, es zu visualisieren. Wenn Sie Ihr Beispiel mit dem obigen Link verwenden, bedeutet dies, dass unser verwandtes Feld OrderHeaderID ist und ich glaube, dass ein INNER JOIN verwendet wird. Ich kann meinen Fall nicht einfach in das Beispiel auf der Website integrieren ... – Paul

+1

@ user1305482 Ja, Sie haben recht, wenn Sie 'INNER JOIN' verwenden. Ich habe die Antwort mit einem Beispiel aktualisiert. – Yuck

+0

Okay vielen Dank, Yuck. Ich werde es geben und hoffentlich wird es meine Probleme lösen! :) – Paul

Verwandte Themen