Hubungan ternary: apa perbedaan antara memiliki satu tabel dan beberapa tabel?


8

Pertimbangkan hubungan terner berikut: hubungan ternary

Misalkan semua entitas hanya memiliki dua atribut (PK dan Nama).


Berikut adalah tabel yang saya peroleh (5 tabel):

Sector
-------------------------
ID_Sector    SectorName
-------------------------

Product
-------------------------
ID_Product    ProductName
-------------------------

Company
--------------------------------------
ID_Company    ID_Sector    CompanyName
--------------------------------------

Relationship 1 (R1)
-------------------------
ID_Sector    ID_Product
-------------------------

Relationship 2 (R2)
-------------------------
ID_Company    ID_Product
-------------------------

Pertanyaan:

Apakah ini solusi yang baik untuk hubungan ternary itu? Apa perbedaan antara memiliki 2 tabel (R1 dan R2) daripada tabel tunggal berikut:

Ternary table
-------------------------------------
ID_Sector    ID_Company    ID_Product    
-------------------------------------

Bagi saya, sepertinya memiliki 2 tabel terpisah untuk setiap hubungan (R1 dan R2) adalah solusi yang lebih baik bila dibandingkan dengan memiliki satu tabel, tapi saya tidak tahu apakah itu benar atau apakah itu praktik yang baik.

Jawaban:


6

Kedua solusi ini memodelkan aturan yang berbeda. Dengan tabel ternary Anda mengatakan bahwa suatu perusahaan hanya dapat memiliki produk tertentu di sektor tertentu. Di sektor yang berbeda akan ada satu set produk yang berbeda, meskipun kedua set tersebut mungkin tumpang tindih, tentu saja.

Dengan tabel biner Anda menyatakan bahwa sektor tidak memiliki pengaruh terhadap produk apa yang terkait dengan perusahaan saya. Demikian pula perusahaan tidak memiliki pengaruh terhadap produk apa yang ada di sektor mana.

Pilihan antara alternatif ini akan ditentukan oleh aturan bisnis Anda. Itu tidak bisa dijawab dengan diskusi akademis yang abstrak. Saya telah menemukan yang terbaik untuk menyebutkan hubungan antara entitas. Mengatakan bahwa perusahaan terkait dengan produk, katakanlah, menarik; mengatakan mengapa perusahaan terkait dengan produk bahkan lebih baik. "Perusahaan membeli produk" adalah informasi yang berbeda dengan "perusahaan membuat produk" atau "perusahaan tidak memiliki izin keamanan untuk menggunakan produk". Dengan melakukan ini, saya sering menemukan hubungan, atribut, dan tipe entitas baru. Anda mungkin membutuhkan tabel biner dan terner!

Edit : Untuk aturannya

  1. sebuah Perusahaan menghasilkan banyak produk / setiap produk diproduksi oleh tepat satu perusahaan
  2. sebuah Perusahaan melaporkan tepat di satu sektor / setiap sektor melaporkan banyak perusahaan
  3. suatu Produk dijual dalam satu sektor / setiap sektor memiliki banyak produk.

Saya akan memiliki tipe entitas ini

Sektor - SektorID

Perusahaan - CompanyID, SectorID

Produk - ProductID, CompanyID

Jika ada aturan Anda banyak-ke-banyak maka Anda akan membutuhkan tabel asosiasi biner.

Selain itu, nama-nama hubungan "memiliki", "milik" dan "adalah" sering menyembunyikan lebih banyak daripada yang diterangkan. Jika Anda menemukan BA Anda menggunakan ini minta mereka untuk memiliki pemikiran lain.


Misalkan aturan bisnisnya adalah: 1) Perusahaan menghasilkan produk; 2) Perusahaan milik sektor (contoh sektor: mesin, makanan, perangkat lunak); 3) Produk milik sektor. Saya mencoba untuk ringkas dan membayar harga menyembunyikan informasi penting. Terima kasih!
rasakan ini

Komentar saya menimbulkan pertanyaan lain: Aturan bisnis manakah yang model ERD di atas? Apakah ada cara untuk membuat ERD sangat tepat mengenai aturan bisnis? Apakah tabel ternary secara akurat mewakili ERD di atas? Jika demikian, maka ERD di atas adalah model yang salah sehubungan dengan 3 aturan bisnis yang disebutkan, kan?
rasakan ini

Aturan bisnis mana yang ERD model di atas: tabel ternary akan berarti bahwa ada hal yang memiliki ProductID, SectorID dan CustomerID sebagai kunci yang diperlukan dan cukup. Sesuatu seperti "GE (perusahaan) membiayai (Produk) 90% (atribut) dari semua mesin aero (sektor)" sedangkan "Goldman mendanai 5% dari mesin aero" dan "GE membiayai 3% dari kincir angin".
Michael Green

@feelthhis - "Apakah ada cara untuk membuat ERD sangat tepat mengenai aturan bisnis": ya! Itu yang dilakukan ERD. Saya akan mengedit jawaban saya. "Apakah tabel ternary secara akurat mewakili ERD di atas": Saya pikir maksud Anda "aturan di atas". Tidak. Produk dibuat oleh satu perusahaan. Perusahaan milik persis satu sektor. Mengetahui ProductID seseorang dapat secara unik mengidentifikasi pelanggan dan sektor dan IDss ini akan menjadi berlebihan dalam tabel ternary. Karenanya itu tidak dinormalisasi sesuai dengan 3 aturan Anda. "Jika demikian ..": Saya setuju.
Michael Green

Ternary Table: a company may...Menggunakan notasi (IDSector, IDCompany, IDProduct), apakah ini berarti bahwa tupel (1, 1, 1) dan (1, 1, 2) diperbolehkan ("c1" menghasilkan "p1" dan "p2" dalam "s1" ); dan bahwa tupel (1, 1, 1) dan (2, 1, 2) tidak diperbolehkan ("c1" menghasilkan "p1" dalam "s1" dan menghasilkan "p2" dalam "s2")? Mengapa? Haruskah tidak tabel terner memungkinkan setiap kemungkinan tuple (IDSector, IDCompany, idProduct)? Binary Tables: sector has...; company has...Aku meskipun bahwa tabel terner adalah setara dengan binari, jika tabel terner memungkinkan setiap tuple (IDSector, IDCompany, idProduct).
rasakan ini
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.