sql >> Database teknologi >  >> RDS >> Mysql

MYSQL kompleks Union

Hvis dit ønskede hierarki er program -> tema -> streng -> år -> enhed -> learning_event, så bør du justere din tabelstruktur for at afspejle dette. Især tema skal have et fremmednøgleforhold mellem tema og program, og du har brug for et ekstra niveau for år. At have en fremmednøgle mellem tema og program undgår behovet for en krydssammenføjning. Cross joins har for vane at bide dig og skal generelt undgås.

Hvis du ser på denne db violin du vil se, at jeg har foretaget disse ændringer. Jeg har kaldt årsniveauet strandår for at undgå at bruge et reserveret ord, men hensigten burde være klar. Nu bliver sammenføjningerne indre sammenføjninger (i stedet for venstre sammenføjninger) for at hente beskrivelsesværdierne fra højere niveauer i træet, og bundniveauet (læringshændelser) indeholder automatisk kun værdier, der matcher streng, år og enhed, uden anden grund end at strukturen i sig selv garanterer det, gennem den enkle løsning, at hvert niveau har en fremmednøgle til niveauet ovenfor.

Bemærk, at fremmednøglerne effektivt kæder sammen. Du behøver for eksempel ikke en specifik fremmednøgle mellem learning_event og strand, fordi de mellemliggende nøgler i kæden garanterer forholdet.



  1. Indsamlingsmetoder:FØRSTE &SIDSTE funktioner i Oracle-databasen

  2. Sådan bruges AspNet.Identity-kernen i My Sql-database

  3. Docker med mysql:Fejlen betyder, at mysqld ikke har adgangsrettighederne til mappen

  4. SQL Server:Forskellen mellem PARTITION BY og GROUP BY