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

Potrzebujesz porady i opinii na temat kodowania relacji wiele:wiele w MySQL

Dziecko może mieć nie więcej niż 2 rodziców, oboje mają określone role (matka vs ojciec) i może dojść do sytuacji, w której jedno lub oboje rodzice są nieznani.

Więc nie jest to prawdziwa relacja „wiele do wielu”, w rzeczywistości jest to „wiele do zera lub jeden lub dwa”, które można naturalnie przedstawić w ten sposób (zarówno MotherID i FatherID są zdolne do NULL):

Jeśli wpiszesz LastName w obu Parent i Player (lub powszechną superklasę w twoim przypadku), naturalnie obejmuje to również sytuację, w której rodzice mają inne nazwiska niż ich dzieci.

Następnie możesz łatwo uzyskać „dzieci na rodzica” w ten sposób (SQL Fiddle )...

SELECT
    ParentID,
    Parent.FirstName ParentFirstName,
    Parent.LastName ParentLastName,
    PlayerID,
    Player.FirstName PlayerFirstName,
    Player.LastName PlayerLastName
FROM
    Parent
    LEFT JOIN Player
        ON Parent.ParentID = Player.MotherID
        OR Parent.ParentID = Player.FatherID
ORDER BY ParentId

...i przestawiaj dane w kodzie aplikacji, jeśli tego chcesz.

Powyższy model pozwala na niezgodność między Parent płeć i rola matki/ojca. Jeśli chcesz temu zapobiec, możesz przesadzić i zrobić coś takiego...

...ale wolę nie komplikować i trzymać się pierwszego modelu i wymuszać go na poziomie aplikacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zmienić domyślny limit czasu połączenia Mysql podczas łączenia się przez Pythona?

  2. MySQL5.6 utknął w procesie próbującym uruchomić usługę

  3. Generowanie i odczytywanie kodów kreskowych

  4. Yii2:Kartik Gridview suma kolumny w stopce

  5. Nie mogę uzyskać tego zapytania sprzężenia mysql, aby uzyskać pożądany wynik