sql >> Databáze >  >> RDS >> Mysql

Komplex MYSQL Union

Pokud je vaší požadovanou hierarchií program -> téma -> oblast -> rok -> jednotka -> událost_učení, měli byste tomu přizpůsobit strukturu tabulky. Zejména téma by mělo mít vztah cizího klíče mezi tématem a programem a na rok potřebujete další úroveň. Díky cizímu klíči mezi tématem a programem se vyhnete nutnosti křížového spojení. Křížové spoje mají ve zvyku vás kousat a obecně je třeba se jim vyhnout.

Pokud se podíváte na tento db housle uvidíte, že jsem tyto změny provedl. Nazval jsem úroveň roku strandyear, abych se vyhnul použití vyhrazeného slova, ale záměr by měl být jasný. Nyní se spojení stanou vnitřními spojeními (místo levými spojeními), aby převzali hodnoty popisu z vyšších úrovní ve stromu, a spodní úroveň (learning_events) automaticky obsahuje pouze hodnoty, které odpovídají řetězci, roku a jednotce, a to z žádného jiného důvodu než že struktura sama o sobě to zaručuje, a to prostřednictvím jednoduchého prostředku, že každá úroveň má cizí klíč k úrovni výše.

Všimněte si, že cizí klíče účinně řetězit. Nepotřebujete například konkrétní cizí klíč mezi learning_event a strand, protože intervenující klíče v řetězci zaručují vztah.



  1. Nelze se připojit ke vzdálené databázi pomocí php

  2. Neplatný posun řetězce 'Data_length'/'Index_length' pro každý řádek tabulky

  3. Laravel Od Raw DB k výmluvnému

  4. Oracle convert unix epoch time to date