2016-04-12 3 views
0

Ich habe eine Kasse, wo jemand Geschenke für eine oder mehrere Personen auf der gleichen Bestellung kaufen kann. Dies bedeutet eine Bestellung, kann tatsächlich 1,2,3 oder mehr Personen unter dem gleichen Auftragsschirm versendet werden. Ich versuche einen Weg zu finden, dies in der Datenbank darzustellen. Unten ist was ich denke. Die orders Tabelle speichert die grundlegenden Bestellinformationen, die order_groups ist, so kann ich die Artikel und Versand an eine einzelne Person für die Bestellung beziehen, die order_items sind die Produkte, die order_shipping ist selbsterklärend.MySql - wie Bestellungen zu speichern, die an mehrere Personen versenden können

Ich glaube, das ist in Ordnung, aber ich habe das Gefühl, die order_groups möglicherweise nicht der Weg zu gehen. Ich frage, ob dies ein guter Weg ist, oder ob es eine bessere Lösung für die Situation gibt.

Antwort

1

Ihr Leben wird viel einfacher sein, wenn jede Bestellung Teil einer Gruppe ist, auch wenn es die einzige Bestellung in der Gruppe ist.

sagte Damit Sie einen Verweis auf eine Gruppe in der Reihenfolge sich in einer Verknüpfungstabelle, nicht halten sollte:

groups 
id, [group-related info] 

orders 
id, group_id, amount, customer_id 
+0

Ich bin ein wenig verwirrt, was Sie meinen. Bedeutet die [gruppenbezogene Information] Geschäftsinformation in der Gruppentabelle oder behalten Sie die Artikel und Versandtabellen unverändert bei der Gruppennummer? – Naterade

+0

@Naterade: Sie sollten gruppenbezogene Daten (wie Zahlungsinformationen, zahlende Kundeninformationen usw.) in Gruppen und auftragsbezogene Daten (Lieferadressen, erhaltene Kundeninformationen usw.) in Aufträgen speichern. Bestellartikel sollten mit Bestellungen verknüpft sein, nicht mit Gruppen. – Quassnoi

+0

Ah, ich verstehe! Ich denke, das ist eine viel bessere Lösung und logischer vom Standpunkt der Datenrepräsentation. Danke! ~ – Naterade

0

Sie setzen müssen, um eine möglich, eine Beziehung auf.

order_addresses (table) 
order_id, address_id 

order_shipping (table) 
address_id, name, address1, address2, city, state, zip, order_group_id 

Sie werden auch verfolgen, welche halten müssen Elemente geliefert werden, an welche Adresse und Sie erhalten eine ähnliche Strategie verwenden müssen.