Saya relatif baru dalam desain basis data, dan saya memutuskan untuk membuat basis data hipotetis saya sendiri untuk praktik. Namun, saya mengalami masalah dalam memodelkan dan menormalkannya, karena saya hargai ada banyak hubungan banyak-ke-banyak (M: N).
Deskripsi skenario umum
Basis data dimaksudkan untuk menyimpan data tentang berbagai Orang yang telah bekerja pada seri Zelda. Saya ingin melacak Konsol tempat permainan dapat dimainkan, Karyawan yang memiliki bagian dalam pengembangan Game , Pekerjaan yang dimiliki Karyawan (banyak Karyawan yang bekerja pada Pekerjaan berbeda di beberapa Game ), dll.
Peraturan bisnis
- Banyak Karyawan dapat bekerja di beberapa Game .
- Beberapa Game dapat berada di Konsol yang sama .
- Beberapa Konsol dapat menjadi platform untuk Game yang sama .
- Banyak Karyawan dapat memiliki Pekerjaan yang sama .
- Seorang Karyawan dapat memiliki banyak Pekerjaan .
- Sebuah permainan dapat memiliki beberapa karyawan .
- Sebuah permainan dapat memiliki beberapa jenis Jobs dalam pembangunan itu
- Beberapa Game dapat memiliki jenis Pekerjaan yang sama .
- Sebuah Console dapat memiliki beberapa orang bekerja di atasnya.
- Sebuah Orang dapat bekerja pada beberapa konsol .
Nama atribut dan nilai sampel
- Nama Karyawan , yang dapat dibagi menjadi First dan Last (misalnya "John" dan "Doe")
- Judul Game (misalnya "Ocarina of Time")
- Judul Pekerjaan (misalnya "Desain Level", "Direktur", "Komposisi", "Desainer Level", "Programmer", "Lokalisasi", dll.).
- Nama Konsol (misalnya "Game Boy Advance")
Masalah
Sejauh ini, tampaknya apa pun yang saya desain ada redudansi data dan hubungan M: N antara jenis entitas yang diminati di mana-mana. Namun saya merasa bahwa perancang basis data harus mengalami masalah seperti ini setiap saat, jadi harus ada solusinya.
Catatan : Saya bisa menemukan data untuk mengisi tabel, masalahnya adalah mengorganisirnya ke dalam database dengan tabel dalam bentuk normal.
sumber
Jawaban:
Ya, identifikasi asosiasi atau hubungan banyak-ke-banyak (M: N untuk singkatnya) adalah situasi yang dihadapi oleh seorang praktisi basis data secara umum ketika menyusun skema konseptual. Asosiasi rasio kardinalitas tersebut muncul dalam lingkungan bisnis yang sifatnya sangat berbeda, dan ketika diwakili dengan tepat pada tingkat logis melalui, misalnya, pengaturan SQL-DDL, mereka tidak memperkenalkan redudansi berbahaya.
Dengan cara ini, tujuan dari latihan pemodelan basis data harus mencerminkan karakteristik yang relevan dari konteks bisnis yang diminati dengan presisi tinggi ; oleh karena itu, jika Anda mengidentifikasi dengan benar bahwa ada banyak asosiasi M: N, maka Anda harus mengungkapkannya dalam (a) skema konseptual dan juga dalam (b) deklarasi tingkat logis masing-masing, tidak peduli berapa banyak koneksi itu —atau lainnya— jenis rasio kardinalitas harus diatasi.
Peraturan bisnis
Anda telah memberikan pertanyaan yang dikontekstualisasikan dengan baik, dan juga telah mengklarifikasi bahwa database yang Anda kerjakan adalah murni hipotesis, yang merupakan poin penting karena saya hargai bahwa skenario bisnis "dunia nyata" seperti yang sedang dipertimbangkan akan jauh lebih luas dan, karenanya, akan menyiratkan persyaratan informasi yang lebih kompleks.
Saya memutuskan untuk (1) membuat beberapa modifikasi dan perluasan pada aturan bisnis yang telah Anda berikan untuk (2) menghasilkan skema konseptual yang lebih deskriptif — walaupun masih agak hipotetis—. Berikut adalah beberapa formulasi yang saya kumpulkan:
1 Pihak adalah istilah yang digunakan dalam konteks hukum ketika merujuk pada individu atau kelompok individu yang membentuk satu entitas, sehingga denominasi ini cocok untuk mewakili Orang dan Organisasi .
Diagram IDEF1X
Selanjutnya, saya membuat diagram IDEF1X 2 yang ditunjukkan pada Gambar 1 (pastikan untuk mengklik tautan untuk melihatnya dalam resolusi yang lebih tinggi), menggabungkan dalam satu perangkat grafis aturan bisnis yang disajikan di atas (bersama dengan beberapa lainnya yang tampaknya relevan):
2 Definisi Integrasi untuk Pemodelan Informasi ( IDEF1X ) adalah teknik pemodelan data yang sangat direkomendasikan yang ditetapkan sebagai standar pada bulan Desember 1993 oleh Institut Standar dan Teknologi Nasional (NIST) Amerika Serikat . Ini didasarkan pada (a) bahan teoritis awal yang ditulis oleh pencetus tunggal model relasional, yaitu, Dr. EF Codd; pada (b) tampilan entitas-hubungan data, yang dikembangkan oleh Dr. PP Chen ; dan juga pada (c) Teknik Desain Basis Data Logis, yang dibuat oleh Robert G. Brown.
Seperti yang Anda lihat, saya hanya menggambarkan tiga asosiasi M: N dengan cara tipe entitas asosiatif yang sesuai , yaitu:
Di antara aspek-aspek lain, ada dua struktur subtipe-supertipe yang berbeda , di mana:
Orang dan Organisasi adalah subtipe entitas yang saling eksklusif dari Pihak , supertipe entitas mereka
Produk adalah supertype dari System and Game , yang pada gilirannya adalah subtipe yang saling eksklusif
Jika Anda tidak terbiasa dengan asosiasi subtipe-supertipe, Anda mungkin menemukan bantuan, misalnya, jawaban saya untuk pertanyaan yang berjudul:
Ilustrasi tata letak SQL-DDL yang logis
Secara berturut-turut, kita harus memastikan bahwa, pada level logis:
Jadi saya menyatakan pengaturan DDL berikut berdasarkan diagram IDEF1X yang sebelumnya ditunjukkan:
Hal ini tepat untuk stres yang ada deklarasi dari komposit kendala PRIMARY KEY di beberapa meja, yang berdiri untuk hirarki koneksi yang terjadi antara jenis entitas konseptual, pengaturan yang dapat sangat bermanfaat yang berkenaan dengan data retrieval ketika, misalnya, mengungkapkan SELECT operasi yang menyertakan klausa GABUNG untuk mendapatkan tabel turunan .
Ya, (i) setiap asosiasi M: N dan (ii) setiap jenis entitas terkait dilambangkan dengan (iii) tabel terkait dalam struktur DDL logis, jadi berikan perhatian khusus pada kendala PRIMARY dan ASING KUNCI (dan catatan yang saya tinggalkan sebagai komentar) dari tabel yang mewakili elemen-elemen konseptual ini, karena mereka membantu memastikan bahwa hubungan antara baris yang relevan memenuhi rasio kardinalitas yang berlaku.
Penggunaan kunci komposit diperkenalkan oleh Dr. EF Codd dari awal paradigma relasional, seperti yang ditunjukkan dalam contoh-contoh yang ia masukkan dalam makalah seminal tahun 1970-nya yang berjudul A Model Relasional untuk Bank Data Bersama Besar (yang, tepatnya, juga menyajikan metode paling elegan untuk menangani asosiasi M: N konseptual).
Saya memasang db <> biola dan SQL Biola , keduanya berjalan di Microsoft SQL Server 2014, sehingga struktur dapat diuji "dalam tindakan".
Normalisasi
Normalisasi adalah prosedur tingkat logis yang menyiratkan, pada dasarnya berbicara:
Menghilangkan kolom non-atomik melalui bentuk normal pertama sehingga manipulasi dan penyempitan data jauh lebih mudah untuk diatasi dengan penggunaan bahasa terjemahan (misalnya, SQL).
Menyingkirkan dependensi yang tidak diinginkan di antara kolom tabel tertentu berdasarkan formulir normal berturut-turut untuk menghindari pembaruan anomali .
Secara alami, seseorang harus memperhitungkan makna yang dibawa oleh tabel dan kolom yang dipermasalahkan.
Saya suka menganggap normalisasi sebagai tes yang didasarkan pada sains bahwa seorang desainer berlaku untuk elemen-elemen terkait begitu ia telah melukiskan pengaturan level logis yang stabil untuk menentukan apakah item-itemnya memenuhi setiap bentuk normal atau tidak. Kemudian, jika perlu, perancang mengambil tindakan koreksi yang tepat.
Redundansi
Dalam model relasional, sementara duplikasi nilai yang terkandung dalam kolom tidak hanya dapat diterima tetapi diharapkan , baris duplikat dilarang . Sejauh itu, sejauh yang saya bisa lihat, baris duplikat dan jenis redundansi berbahaya lainnya dicegah di semua tabel yang terdiri dari tata letak logis yang diungkapkan sebelumnya, mungkin Anda ingin mengklarifikasi keprihatinan Anda dalam hal ini.
Bagaimanapun, Anda tentu saja dapat (a) mengevaluasi pada struktur Anda sendiri dengan memberikan formulir normal untuk menentukan apakah memenuhi persyaratan dan (b) memodifikasinya jika perlu.
Sumber terkait
Asosiasi ternary
Ada aspek penting lain yang Anda kemukakan melalui komentar (diposting dalam jawaban yang sekarang dihapus):
Keadaan itu tampaknya mengindikasikan bahwa salah satu kekhawatiran Anda berkaitan dengan asosiasi ternary konseptual . Pada dasarnya, asosiasi semacam ini muncul ketika ada (1) hubungan yang melibatkan (2) dua hubungan lain, dengan kata lain "hubungan antar hubungan" —sebuah situasi yang khas juga, karena suatu hubungan adalah suatu entitas dalam dirinya sendiri. -.
Pengaturan ini, bila dikelola dengan tepat, juga tidak membawa redudansi berbahaya. Dan, ya, jika ada kasus penggunaan tertentu di mana Anda mengidentifikasi bahwa hubungan tersebut menghadirkan diri di antara jenis entitas "dunia nyata", Anda harus (i) memodelkan dan (ii) menyatakannya dengan akurat di tingkat logis.
sumber