Mysql
 sql >> Baza danych >  >> RDS >> Mysql

W jaki sposób te tabele są powiązane?

Zamówienie zawsze miałoby klienta, nie? Więc nie jest to sprzężenie lewe, ale wewnętrzne.

To, co je łączy, to identyfikator_klienta. Więc twój SQL jest po prostu:

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;

Relacja podmiotu:

Zamów CustomerCustomer_Id 0...N>---+ 1 Customer_Id... ...

Ta relacja EF pochodzi z przykładowej bazy danych MS SQL Server Northwind. W tej przykładowej bazie danych, podobnie jak w Twojej, znajdują się Klienci i Zamówienia. Tabele Klienci i Zamówienia są powiązane poprzez pola CustomerId w obu tabelach (jest to klucz podstawowy w tabeli Klienci i klucz obcy w tabeli Zamówienia). Kiedy modelujesz to jako relację Entity, masz powyższy diagram. Jednostka klienta ma właściwość nawigacji „Zamówienia” (za pośrednictwem identyfikatora klienta), która wskazuje na konkretne zamówienia klienta. A encja Order ma właściwość nawigacji, która wskazuje na jej klienta (ponownie za pośrednictwem CustomerId). Relacja wynosi od 1 do 0 lub wiele (1 - *), co oznacza, że ​​Klient może mieć 0 lub więcej Zamówień.

Kiedy wykonujesz dołączenie ze strony Klienta, używasz LEWEJ dołączenia „jeśli chcesz zobaczyć wszystkich Klientów niezależnie od tego, czy mają Zamówienie(-a) lub nie” - 0 lub więcej Zamówień. Jeśli chcesz zobaczyć tylko te z Zamówieniem, użyj sprzężenia wewnętrznego.

Kiedy wykonujesz dołączenie ze strony Zamówień, Zamówienie musi mieć Klienta, więc nie może być dołączeniem LEWYM. Jest to połączenie WEWNĘTRZNE.

Możesz sprawdzić relację z obu stron za pomocą łączącego pola CustomerId.

Nie miałbyś oddzielnej tabeli dla "OrderId, CustomerId", ponieważ nie jest to relacja wiele-do-wielu (byłaby czysta nadmiarowość i powodowałaby anomalie normalizacyjne).

Mam nadzieję, że teraz jest to bardziej jasne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. W przypadku aktualizacji zduplikowanego klucza tak samo jak w przypadku wstawiania

  2. Kontrola wersji MySQL — Subversion

  3. Jak wykonać kopię zapasową zaszyfrowanej bazy danych za pomocą serwera Percona Server dla MySQL 8.0?

  4. Python od podstaw:stwórz dynamiczną stronę internetową

  5. Interfejs bazy danych GUI MySQL