sql >> Database >  >> RDS >> Mysql

Relatiekenmerken vertalen van ER-diagram naar SQL

Ja, u moet een Meeting maken entiteit om de veel-op-veel relatie tussen Student weer te geven en Supervisor . Daarin kunt u betrekking hebben op die tabellen met behulp van externe sleutels die overeenkomen met die respectievelijke tabellen. In SQL kan het er ongeveer zo uitzien:

Create table Meeting {
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
student_id INT NOT NULL,
supervisor_id INT NOT NULL,
//rest of the fields...   
FOREIGN KEY (student_id) REFERENCES Student(id)
FOREIGN KEY (supervisor_id) REFERENCES Supervisor(id)
}

Je zou hetzelfde doen voor de Supervise tussen Project en Supervisor . Je zou ook iets kunnen gebruiken dat een samengestelde sleutel wordt genoemd op je vergadertafel, ik denk dat het neerkomt op persoonlijke voorkeur, ik doe het meestal op deze manier bij het vertegenwoordigen van veel tot veel relaties. Ik zeg niet dat dit de syntaxis is die je gaat gebruiken, dat hangt af van je database, dit was slechts een voorbeeld om je in de goede richting te wijzen. Ik hoop dat het helpt.

Ook voor je diagram (ik vermoed dat dit voor een klas is) wil je misschien kijken naar software zoals visio of visueel paradigma om je ER-diagram te maken. Hoewel de meeste mensen uw huidige diagram kunnen begrijpen, is dat geen correcte modellering.

Voor de lol heb ik een diagram gemaakt op basis van je tabellen:

U wilt een entiteit tussen Supervisor en Project als ze een veel-op-veel-relatie zijn. Dit heet een associative entity . Ik heb de mijne gelabeld SupervisorProject zodat ze wat duidelijker zijn.

Bewerken Over het hoofd gezien dat Student en project een veel-op-een waren, opgelost, sorry.



  1. Dynamische pivot-query met PostgreSQL 9.3

  2. Vind het totale aantal resultaten in mySQL-query met offset+limiet

  3. In MySQL 5 is SELECT COUNT(1) FROM table_name erg traag

  4. SQL om matrixtabel te maken