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.