Adakah yang bisa menjelaskan bagaimana menerapkan hubungan satu-ke-satu, satu-ke-banyak dan banyak-ke-banyak sambil merancang tabel dengan beberapa contoh?
sql
oracle
database-design
gudang senjata
sumber
sumber
Jawaban:
Satu-ke-satu: Gunakan kunci asing ke tabel yang dirujuk:
Anda juga harus meletakkan batasan unik pada kolom kunci asing (
addess.student_id
) untuk mencegah beberapa baris dalam tabel anak (address
) terkait dengan baris yang sama dalam tabel yang direferensikan (student
).Satu-ke-banyak : Gunakan kunci asing di banyak sisi hubungan yang menghubungkan kembali ke sisi "satu":
Banyak ke banyak : Gunakan tabel persimpangan ( contoh ):
Contoh pertanyaan:
sumber
student
diberikanaddress
.student_classes
baris seharusnya hanya memiliki hubungan satu-ke-satu. JikastudentA
ada diclassA
danclassB
, maka harus ada dua barisstudent_classes
, satu untuk hubungan mana.Berikut adalah beberapa contoh dunia nyata dari jenis hubungan:
Satu lawan satu (1: 1)
Hubungan adalah satu-ke-satu jika dan hanya jika satu catatan dari tabel A terkait dengan maksimum satu catatan dalam tabel B.
Untuk membangun hubungan satu-ke-satu, kunci utama dari tabel B (tanpa catatan anak yatim) harus menjadi kunci sekunder dari tabel A (dengan catatan anak yatim).
Sebagai contoh:
Satu-ke-banyak (1: M)
Hubungan adalah satu-ke-banyak jika dan hanya jika satu catatan dari tabel A terkait dengan satu atau lebih catatan di tabel B. Namun, satu catatan di tabel B tidak dapat dikaitkan dengan lebih dari satu catatan di tabel A.
Untuk membangun hubungan satu-ke-banyak, kunci utama tabel A (tabel "satu") harus menjadi kunci sekunder tabel B (tabel "banyak").
Sebagai contoh:
Banyak ke banyak (M: M)
Hubungan adalah banyak-ke-banyak jika dan hanya jika satu catatan dari tabel A terkait dengan satu atau lebih catatan di tabel B dan sebaliknya.
Untuk membangun hubungan banyak-ke-banyak, buat tabel ketiga yang disebut "ClassStudentRelation" yang akan memiliki kunci utama dari tabel A dan tabel B.
sumber
Satu-ke-banyak
Hubungan tabel satu-ke-banyak terlihat sebagai berikut:
Dalam sistem database relasional, hubungan tabel satu-ke-banyak menghubungkan dua tabel berdasarkan
Foreign Key
kolom pada anak yang mereferensikanPrimary Key
baris tabel induk.Dalam diagram tabel di atas,
post_id
kolom dalampost_comment
tabel memilikiForeign Key
hubungan dengan kolompost
id tabelPrimary Key
:Satu-ke-satu
Hubungan tabel satu-ke-satu terlihat sebagai berikut:
Dalam sistem basis data relasional, hubungan tabel satu-ke-satu menghubungkan dua tabel berdasarkan
Primary Key
kolom pada anak yang juga merupakanForeign Key
referensiPrimary Key
dari baris tabel induk.Oleh karena itu, kita dapat mengatakan bahwa tabel anak berbagi
Primary Key
dengan tabel induk.Dalam diagram tabel di atas,
id
kolom dalampost_details
tabel juga memilikiForeign Key
hubungan dengan kolompost
tabelid
Primary Key
:Banyak ke banyak
Hubungan tabel banyak-ke-banyak terlihat sebagai berikut:
Dalam sistem basis data relasional, hubungan banyak-ke-banyak tabel menghubungkan dua tabel induk melalui tabel anak yang berisi dua
Foreign Key
kolom referensiPrimary Key
kolom dari dua tabel induk.Dalam diagram tabel di atas,
post_id
kolom dalampost_tag
tabel juga memilikiForeign Key
hubungan dengan kolompost
id tabelPrimary Key
:Dan,
tag_id
kolom dalampost_tag
tabel memilikiForeign Key
hubungan dengan kolomtag
id tabelPrimary Key
:sumber
Hubungan satu ke satu (1-1): Ini adalah hubungan antara kunci utama & kunci asing (kunci utama yang terkait dengan kunci asing hanya satu catatan). ini adalah hubungan satu lawan satu.
Hubungan Satu ke Banyak (1-M): Ini juga hubungan antara hubungan kunci primer & asing tetapi di sini kunci utama terkait dengan beberapa catatan (mis. Tabel A memiliki info buku dan Tabel B memiliki beberapa penerbit satu buku).
Many to Many (MM): Banyak ke banyak mencakup dua dimensi, dijelaskan sepenuhnya seperti di bawah ini dengan sampel.
sumber