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

Нуждаете се от съвет и обратна връзка относно кодирането на много:много отношения в MySQL

Едно дете може да има не повече от 2 родители, като и двамата имат специфични роли (майка срещу баща) и може да има ситуация, при която единият или двамата родители са неизвестни.

Така че това не е истинска връзка "много към много", а всъщност "много към нула или едно или две", които могат да бъдат естествено представени по този начин (и двете MotherID и FatherID са с възможност за NULL):

Ако поставите LastName и в двата Parent и Player (или общ суперклас във вашия случай), това също естествено покрива ситуацията, при която родителите имат различни фамилни имена от децата си.

След това можете лесно да получите "деца на родител" по този начин (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

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

Горният модел позволява несъответствие между Parent пол на и неговата майка/баща роля. Ако искате да предотвратите това, можете да прекалите и да направите нещо подобно...

...но предпочитам да не усложнявам и да се придържам към първия модел и да наложа това на ниво приложение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използването на заявка води до друга заявка

  2. 'Не мога да се свържа с MySQL сървър на \'db\' Django-Restframework с Mysql в docker

  3. Предайте PHP масив чрез jQuery Ajax

  4. Изчисляване на общото количество оборудване за период от време

  5. Как да напиша подготвен израз в PHP за SELECT BETWEEN mysql заявка между две дати/часове?