Desain basis data untuk produk dengan bundel produk

13

Saya sedang membangun sistem database untuk bisnis ritel saya. Saya telah menetapkan beberapa tabel yaitu:

  • Produk
  • Membeli
  • Penjualan
  • Keseimbangan

Semua terhubung satu sama lain dan dapat menunjukkan tingkat inventaris saya.

Masalah yang saya miliki adalah saya juga menjual bundel produk - yang memiliki harga berbeda dari harga masing-masing.
Contoh: Saya menjual jeruk seharga $ 1, apel seharga $ 1.2; Saya menjual paket buah 1 (2 jeruk dan 2 apel) seharga $ 3,8, paket 2 (4 jeruk dan 4 apel) seharga $ 7.

Apakah ada cara yang benar bagaimana membuat hubungan untuk bundel produk ini?

PS: Saya menggunakan FileMaker Pro membuat ini.

Shandery
sumber

Jawaban:

16

Pola yang Anda gambarkan sering disebut " ledakan bagian " atau " bahan baku ". Ini adalah bagian dari grafik dan bagian pohon dalam studi struktur data. Inti dari solusi ini adalah untuk menyadari bahwa "produk" apa pun yang diberikan dapat terdiri dari "produk" lain. Desain kemudian merupakan struktur jaringan di mana ada Producttabel yang memiliki baris untuk setiap produk - apakah itu terdiri dari produk lain atau tidak, dan kemudian Product Componenttabel yang memiliki baris untuk setiap produk yang terdiri dari produk lain dan setiap produk yang sesuai yang merupakan komponen dari produk itu. Dalam kasus Anda, setiap produk memiliki harga. Jadi Anda akan memiliki sesuatu seperti ini

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       |
----------------------------------------------------------

Desain ini lebih disukai daripada tabel tunggal dengan asosiasi rekursif karena memisahkan dengan rapi apa yang sebenarnya dua tipe entitas - node dan tautan. Dalam kasus kami, produk adalah simpul, dan komponen produk adalah tautan.

Sementara desain jaringan adalah struktur umum, permintaan itu bermasalah karena ketika diisi penuh itu adalah struktur rekursif dengan kedalaman yang berbeda-beda. Kekuatan industri DBMS 'seperti Oracle dan SQL Server memiliki elemen bahasa khusus (Oracle CONNECT BY dan SQL Server recursive CTE) untuk membantu dalam membuat kueri deklaratif. Mengingat Anda menggunakan File Maker Pro, yang saya tahu sedikit tentang, Anda mungkin tidak memiliki konstruksi bahasa untuk membantu dan mungkin harus menulis kode prosedur untuk melintasi jaringan. Namun masalah ini dapat diredakan jika jaringan ternyata memiliki kedalaman yang tetap - katakanlah setiap produk tidak memiliki komponen, atau satu tingkat komponen. Berikut adalah beberapa referensi yang berkaitan dengan struktur jaringan dalam desain basis data:

  1. Masalah Praktis dalam Manajemen Basis Data - Fabian Pascal . Bab 7 memberikan penjelasan terbaik dan paling mudah dipahami yang saya temukan.
  2. Pohon dan Hierarki Joe Celko dalam SQL untuk Smarties, Edisi Kedua . Ini adalah seluruh buku tentang topik khusus untuk standar SQL.
  3. Pola Model Perusahaan - David Hay . Sebuah buku tentang pola-pola umum untuk semua organisasi (sayangnya Diagram ER disajikan dalam UML tetapi itu dapat diatasi) ada beberapa contoh struktur jaringan.
Todd Everett
sumber