2016-04-12 15 views
0

Birinin aynı sipariş üzerine bir veya daha fazla kişiye hediye alabileceği bir ödeme var. Bu, bir sipariş anlamına gelir, aslında aynı sipariş şemsiyesi altında 1,2,3 veya daha fazla kişi sevk edilebilir. Bunu veritabanında temsil etmenin bir yolunu bulmaya çalışıyorum. Aşağıda düşündüğüm şey var. orders tablosu temel sipariş bilgilerini saklar, order_groups bu yüzden öğeleri ilişkilendirebilir ve sipariş için tek bir kişiye gönderebilir, order_items ürünlerdir, order_shipping kendiliğinden açıklayıcıdır.MySql - Birden çok kişiye gönderilebilen siparişler nasıl depolanır

orders 
id, amount, customer_id 

order_groups 
id, order_id 

order_items 
id, item_id, unit_price, quantity, total_price, order_group_id 

order_shipping 
id, name, address1, address2, city, state, zip, order_group_id 

Bunun iyi olduğuna inanıyorum, ancak order_groups gitmek için bir yol olmayabilir hissediyorum. Bunu yapmanın iyi bir yolu mu, yoksa duruma daha iyi bir çözüm olup olmadığını soruyorum.

cevap

1

Gruptaki tek sıra bile olsa, her sipariş bir grubun parçasıysa, hayatınız çok daha basit olacaktır.

Böylece bir bağlantı tablosunda, sırayla kendisinde bir gruba bir başvuru tutmak gerektiğini belirterek,

groups 
id, [group-related info] 

orders 
id, group_id, amount, customer_id 
+0

Ne demek istediğin hakkında biraz kafam karıştı. [Grupla ilgili bilgi], gruplar tablosundaki mağaza bilgilerini mi yoksa öğeleri ve nakliye tablolarını group_id ile olduğu gibi mi saklıyor? – Naterade

+0

@Naterade: Grupla ilgili verileri (ödeme bilgileri, ödeme yapan müşteri bilgileri vb.) Gruplar halinde ve siparişle ilgili verileri (gönderim adresleri, müşteri bilgileri vb.) Siparişlerde saklamanız gerekir. Sipariş öğeleri, gruplara değil, siparişlere bağlı olmalıdır. – Quassnoi

+0

Ah, anlıyorum! Veri temsili açısından çok daha iyi bir çözüm ve daha mantıklı olduğunu düşünüyorum. Teşekkürler! ~ – Naterade

0

Birçok ilişkiye olası bir tane oluşturmanız gerekir.

order_addresses (table) 
order_id, address_id 

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

Ayrıca ürün, hangi adrese sevk edildiği takip etmek gerekir ve benzer bir stratejiyi kullanmak gerekir.

İlgili konular