Mysql
 sql >> база данни >  >> RDS >> Mysql

Как са свързани тези таблици?

Една поръчка винаги ще има клиент, нали? Така че това не е ляво, а вътрешно присъединяване.

Това, което ги свързва, е customer_id. Така че вашият SQL е просто:

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;

Връзка на обект:

Поръчайте CustomerCustomer_Id 0...N>---+ 1 Customer_Id... ...

Тази EF релация е от примерната база данни на MS SQL Server Northwind. В тази примерна база данни, точно като вашата, има клиенти и поръчки. Таблиците Клиенти и Поръчки са свързани чрез полетата CustomerId в двете таблици (това е първичният ключ в Customers и външният ключ в таблицата Orders). Когато моделирате това като релация на обект, имате горната диаграма. Обектът на клиента има свойство за навигация „Поръчки“ (чрез customerId), което сочи към конкретни поръчки на клиента. И обектът за поръчка има свойство за навигация, което сочи към своя клиент (отново чрез CustomerId). Връзката е 1 към 0 или много (1 - *), което означава, че Клиентът може да има 0 или повече Поръчки.

Когато правите присъединяването от страната на клиента, използвате ЛЯВО присъединяване "ако искате да видите всички клиенти, независимо дали имат поръчка(и) или не" - 0 или повече поръчки(и). Ако искате да видите само тези с поръчка(и), тогава използвате вътрешно присъединяване.

Когато правите присъединяването от страната на поръчките, тогава поръчката трябва да има клиент, така че да не може да бъде ЛЯВО присъединяване. Това е ВЪТРЕШНО присъединяване.

Можете да проверите връзката от двете страни, като използвате свързващото поле CustomerId.

Не бихте имали отделна таблица за "OrderId, CustomerId", тъй като това не е релация много към много (това би било чисто излишък и би създало аномалии при нормализиране).

Надявам се сега да е по-ясно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да влезете автоматично в MySQL от шел скрипт?

  2. 10 причини да се придържате към MySQL

  3. JSON_MERGE_PRESERVE() – Обединяване на множество JSON документи в MySQL

  4. MySQL тригер:Актуализиране при достигане на определена дата и час

  5. Какво е значението на въпросителния знак в MySQL в колона WHERE =??