Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana tabel ini terkait?

Sebuah pesanan akan selalu memiliki pelanggan, bukan? Jadi itu bukan gabungan kiri tapi batin.

Yang menghubungkan mereka adalah customer_id. Jadi SQL Anda adalah:

select o.order_number, o.customer_ID, o.address, 
    c.first_name, c.last_name
from orders o
inner join customer c on o.customer_ID = c.customer_ID;

Hubungan entitas:

Pesan Customer_Id Pelanggan 0...N>---+ 1 ID_Pelanggan... ...

Relasi EF ini berasal dari database sampel MS SQL Server Northwind. Dalam database sampel itu, sama seperti milik Anda, ada Pelanggan dan Pesanan. Tabel Pelanggan dan Pesanan terkait melalui bidang CustomerId di kedua tabel (ini adalah kunci utama di Pelanggan, dan kunci asing di tabel Pesanan). Ketika Anda memodelkannya sebagai relasi Entitas daripada Anda memiliki diagram di atas. Entitas pelanggan memiliki properti navigasi "Pesanan" (melalui customerId) yang mengarah ke Pesanan Pelanggan tertentu. Dan entitas Pesanan memiliki properti navigasi yang menunjuk ke Pelanggannya (sekali lagi melalui CustomerId). Relasinya adalah 1 hingga 0 atau banyak (1 - *), artinya Pelanggan mungkin memiliki 0 Pesanan atau lebih.

Ketika Anda bergabung dari sisi Pelanggan, Anda menggunakan gabungan KIRI "jika Anda ingin melihat semua Pelanggan terlepas dari mereka memiliki Pesanan atau tidak" - 0 atau lebih Pesanan. Jika Anda hanya ingin melihat mereka yang memiliki Pesanan, maka Anda menggunakan gabungan dalam.

Ketika Anda melakukan join dari sisi Orders, maka sebuah Order harus memiliki Customer sehingga tidak bisa menjadi LEFT join. Ini adalah INNER bergabung.

Anda dapat memeriksa relasi dari kedua sisi menggunakan bidang CustomerId penghubung.

Anda tidak akan memiliki tabel terpisah untuk "OrderId, CustomerId" karena ini bukan relasi banyak-ke-banyak (ini akan menjadi redundansi murni dan akan membuat anomali normalisasi).

Semoga lebih jelas sekarang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lisensi MySQL dan GPL

  2. Tidak dapat terhubung ke mysql dari visual studio 2015

  3. Lewati parameter ke baris perintah skrip MySQL

  4. #1242 - Subquery mengembalikan lebih dari 1 baris - mysql

  5. Bekerja dengan Database MySQL cPanel