Apa perbedaan nyata antara hubungan satu-ke-banyak dan banyak-ke-satu? Itu hanya terbalik, jenis?
Saya tidak dapat menemukan tutorial 'baik-dan-mudah-dipahami' tentang topik ini selain yang ini: SQL untuk Pemula: Bagian 3 - Hubungan Database
Apa perbedaan nyata antara hubungan satu-ke-banyak dan banyak-ke-satu? Itu hanya terbalik, jenis?
Saya tidak dapat menemukan tutorial 'baik-dan-mudah-dipahami' tentang topik ini selain yang ini: SQL untuk Pemula: Bagian 3 - Hubungan Database
Jawaban:
Ya, itu sebaliknya. Itu tergantung pada sisi hubungan mana entitas itu berada.
Misalnya, jika satu departemen dapat mempekerjakan beberapa karyawan, maka departemen ke karyawan adalah hubungan one to many (1 departemen mempekerjakan banyak karyawan), sedangkan hubungan karyawan ke departemen adalah banyak dengan satu (banyak karyawan bekerja di satu departemen).
Info lebih lanjut tentang jenis hubungan:
Hubungan Database - dokumentasi IBM DB2
sumber
Dari halaman ini tentang Terminologi Database
sumber
Ada perbedaan konseptual antara istilah-istilah ini yang akan membantu Anda memvisualisasikan data dan juga kemungkinan perbedaan dalam skema yang dihasilkan yang harus dipahami sepenuhnya. Sebagian besar perbedaannya adalah salah satu perspektif.
Dalam hubungan satu ke banyak , tabel lokal memiliki satu baris yang mungkin terkait dengan banyak baris di tabel lain. Dalam contoh dari SQL untuk pemula , satu
Customer
dapat dikaitkan dengan banyakOrder
s.Dalam hubungan banyak-ke-satu yang berlawanan , tabel lokal mungkin memiliki banyak baris yang terkait dengan satu baris di tabel lain. Dalam contoh kita, banyak
Order
s dapat dikaitkan dengan satuCustomer
. Perbedaan konseptual ini penting untuk representasi mental.Selain itu, skema yang mendukung hubungan dapat direpresentasikan secara berbeda dalam tabel
Customer
danOrder
. Misalnya, jika pelanggan memiliki kolomid
danname
:Kemudian agar a
Order
dikaitkan denganCustomer
, banyak implementasi SQL menambahkan keOrder
tabel kolom yang menyimpanid
dari yang terkaitCustomer
(dalam skema inicustomer_id
:Pada baris data di atas, jika kita melihat
customer_id
kolom id, kita melihat bahwaBill Smith
(customer-id # 1) memiliki 2 pesanan yang terkait dengannya: satu untuk $ 12,34 dan satu untuk $ 7,58.Jim Kenshaw
(customer-id # 2) hanya memiliki 1 pesanan seharga $ 158.01.Yang penting untuk disadari adalah bahwa biasanya hubungan satu-ke-banyak tidak benar-benar menambahkan kolom apa pun ke tabel yang merupakan "satu". Tidak
Customer
memiliki kolom tambahan yang mendeskripsikan hubungan denganOrder
. BahkanCustomer
kekuatan juga memiliki hubungan satu-ke-banyak denganShippingAddress
danSalesCall
meja dan belum memiliki kolom tambahan ditambahkan keCustomer
meja.Namun, untuk hubungan banyak-ke-satu yang akan dijelaskan, seringkali
id
kolom ditambahkan ke tabel "banyak" yang merupakan kunci asing ke tabel "satu" - dalam hal inicustomer_id
kolom ditambahkan keOrder
. Untuk pesanan terkait # 10 sebesar $ 12,34Bill Smith
, kami menetapkancustomer_id
kolom keBill Smith
id 1.Namun, mungkin juga ada tabel lain yang menjelaskan hubungan
Customer
danOrder
, sehingga tidak ada bidang tambahan yang perlu ditambahkan keOrder
tabel. Alih-alih menambahkancustomer_id
bidang keOrder
tabel, mungkin adaCustomer_Order
tabel yang berisi kunci untukCustomer
danOrder
.Dalam hal ini, one-to-many dan many-to-one semuanya bersifat konseptual karena tidak ada perubahan skema di antara keduanya. Mekanisme mana yang bergantung pada skema dan implementasi SQL Anda.
Semoga ini membantu.
sumber
javax.persistence.OneToMany
berbeda denganManyToOne
. Apakah Anda mengatakan bahwa mereka identik atau hanya tergantung pada penerapannya? Apakah jawaban saya salah?Tidak ada perbedaan. Ini hanya masalah bahasa dan preferensi tentang cara Anda menyatakan hubungan tersebut.
sumber
Jawaban untuk pertanyaan pertama Anda adalah: keduanya serupa,
Jawaban untuk pertanyaan kedua Anda adalah: satu-ke-banyak -> seorang PRIA (tabel PRIA) dapat memiliki lebih dari satu istri (tabel PEREMPUAN) banyak-ke-satu -> lebih dari satu wanita telah menikah dengan satu PRIA.
Sekarang jika Anda ingin menghubungkan relasi ini dengan dua tabel MAN dan WOMEN, satu baris tabel MAN mungkin memiliki banyak relasi dengan baris pada tabel WOMEN. semoga jelas.
sumber
Contoh
Dua tabel dengan satu relasi
SQL
Dalam SQL, hanya ada satu jenis relasi, yang disebut Referensi. (Bagian depan Anda mungkin melakukan hal-hal yang membantu atau membingungkan [seperti di beberapa Jawaban], tetapi itu adalah cerita yang berbeda.)
Referensi
sebuah Primary Key pada tabel lain ( referenc ed tabel)
Dalam istilah SQL, Bar mereferensikan Foo
Bukan sebaliknya
Karena
Foo.Foo
merupakan Kunci Utama, itu unik, hanya ada satu baris untuk nilai tertentuFoo
Bar.Foo
merupakan Referensi, Kunci Asing, dan tidak ada indeks unik di atasnya, dapat terdapat banyak baris untuk nilai tertentu dariFoo
Foo::Bar
adalah satu-ke-banyakBar::Foo
banyak-ke-satuBar
baris, hanya ada satuFoo
baris yang ReferensiHanya ada satu hubungan, oleh karena itu tidak ada perbedaan. Persepsi (dari satu "ujung" atau "ujung" lainnya) atau membacanya secara terbalik, tidak mengubah relasi.
Kardinalitas
Kardinalitas dideklarasikan pertama kali dalam model data, yang artinya Logis dan Fisik (maksud), lalu dalam implementasinya (maksud terealisasi).
Kardinalitas
One to zero-to-many
Dalam SQL hanya itu (di atas) yang diperlukan.
One to one-to-many
Anda memerlukan Transaksi untuk menerapkan yang ada di tabel Referensi.
One to zero-to-one
Anda membutuhkan
Bar
:Satu ke satu
Anda memerlukan Transaksi untuk menerapkan yang ada di tabel Referensi.
Banyak ke banyak
Tidak ada hal seperti itu di tingkat Fisik (ingat, hanya ada satu jenis relasi dalam SQL).
Pada level Logika awal selama latihan pemodelan, akan lebih mudah untuk menggambar relasi seperti itu. Sebelum model mendekati implementasi, sebaiknya model ditingkatkan menggunakan hanya hal-hal yang bisa ada. Hubungan seperti itu diselesaikan dengan menerapkan Tabel Asosiatif.
Banyak ke banyak Terselesaikan
sumber
One-to-Many dan Many-to-One serupa dalam Multiplisitas tapi tidak Aspek (yaitu Directionality).
Pemetaan Asosiasi antara kelas entitas dan Hubungan antar tabel. Ada dua kategori Hubungan:
sumber
Tidak ada perbedaan praktis. Gunakan saja hubungan yang paling masuk akal mengingat cara Anda memandang masalah Anda seperti yang diilustrasikan oleh Devendra.
sumber
--- Banyak menjadi satu --- Ketiga anak itu dapat memiliki satu Orang Tua.
Keduanya mirip. Ini bisa digunakan milik kebutuhan. Jika Anda ingin mencari anak untuk orang tua tertentu, Anda dapat memilih One-To-Many. atau, ingin mencari orang tua untuk anak kembar, Anda bisa memilih Many-To-One. Juga....,
sumber
satu-ke-banyak memiliki kelas induk berisi n jumlah anak jadi ini adalah pemetaan koleksi.
many-to-one memiliki n jumlah anak berisi satu orang tua sehingga merupakan pemetaan objek
sumber