Ürün paketleri olan ürünler için veritabanı tasarımı


14

Perakende işim için bir veritabanı sistemi kuruyorum. Bazı tablolar ayarladım:

  • Ürün
  • Satın alma
  • Satış
  • Denge

Hepsi birbirine bağlı ve envanter seviyemi gösterebiliyor.

Yaşadığım sorun, bireysel fiyatlarından farklı fiyatlara sahip ürün paketleri de satmam.
Örnek: Portakalı 1 dolara, bir elmayı 1.2 dolara satıyorum; 3,8 $ için meyve paketi 1 (2 portakal ve 2 elma), 7 $ için paket 2 (4 portakal ve 4 elma) satıyorum.

Bu ürün paketleri için ilişki oluşturmanın doğru bir yolu var mı?

Not: Bunu oluşturmak için FileMaker Pro kullanıyorum.

Yanıtlar:


16

Tanımladığınız desene genellikle " parça patlaması " veya " malzeme listesi " denir . Veri yapılarının incelenmesinde grafikler ve ağaçlar kısmının bir parçasıdır . Çözümün özü, verilen herhangi bir "ürünün" diğer "ürünlerden" oluşabileceğini anlamaktır. Tasarım daha sonra Product, her ürün için bir satır içeren bir tablonun bulunduğu bir ağ yapısıdır - diğer ürünlerden yapılmış olsun ya da olmasın, ve sonra Product Componentdiğer ürünlerden oluşan her ürün için bir sıra olan bir tablo ve o ürünün bir bileşeni olan karşılık gelen her ürün. Sizin durumunuzda, her ürünün bir fiyatı vardır. Yani böyle bir şey olurdu

Product
-----------------------------------
|Name             |Price          |
-----------------------------------
|Orange           |1             |
|Apple            |1.20          |
|Fruit Package    |3.80          |
-----------------------------------

Product Component
----------------------------------------------------------
|Product               |Contains                |Quantity|
----------------------------------------------------------
|Fruit Package         |Orange                  |2       |
|Fruit Package         |Apple                   |2       |
----------------------------------------------------------

Bu tasarım, gerçekten iki varlık türünü - düğümleri ve bağlantıları - temiz bir şekilde ayırdığı için yinelemeli bir ilişkilendirmeye sahip tek bir tabloya tercih edilir. Bizim durumumuzda, ürünler düğümlerdir ve ürün bileşenleri bağlantılardır.

Ağ tasarımı ortak bir yapı olmakla birlikte, sorgulama tamamen doldurulduğunda değişken derinlikte özyinelemeli bir yapıdır. Oracle ve SQL Server gibi endüstriyel güç DBMS'leri, sorguyu bildirimsel hale getirmeye yardımcı olmak için özel dil öğelerine (Oracle'ın CONNECT BY ve SQL Server'ın özyinelemeli CTE) sahiptir. Hakkında çok az şey bildiğim File Maker Pro kullandığınız düşünüldüğünde, bu tür dil yapılarına sahip olmayabilirsiniz ve ağda gezinmek için yordam kodu yazmanız gerekebilir. Bununla birlikte, ağın sabit derinlikte olduğu ortaya çıkarsa, her ürünün ya bir bileşeni ya da bir bileşen seviyesi olduğunu varsayalım. Veritabanı tasarımındaki ağ yapıları ile ilgili bazı referanslar:

  1. Veritabanı Yönetiminde Pratik Konular - Fabian Pascal . Bölüm 7, bulduğum en iyi ve en anlaşılır açıklamayı sunar.
  2. Joe Celko'nun Smarties için SQL'deki Ağaçları ve Hiyerarşileri, İkinci Baskı . Bu, SQL standardına özgü konuyla ilgili tüm bir kitaptır.
  3. Kurumsal Model Kalıpları - David Hay . Tüm kuruluşlar için ortak olan kalıplar hakkında bir kitap (maalesef ER Diyagramları UML'de sunulmaktadır, ancak üstesinden gelinebilir) ağ yapılarının birkaç örneği vardır.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.