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

Fremmednøgler - Hvad gør de for mig?

Fremmednøgler giver referentiel integritet. Dataene i en fremmednøglekolonne er valideret - værdien kan kun være en, der allerede findes i tabellen og kolonnen defineret i fremmednøglen. Det er meget effektivt til at stoppe "dårlige data" - nogen kan ikke indtaste, hvad de vil - tal, ASCII-tekst osv. Det betyder, at dataene er normaliseret - gentagne værdier er blevet identificeret og isoleret til deres egen tabel, så der er ikke flere bekymringer om håndtering af store og små bogstaver i tekst... og værdierne er konsekvente. Dette fører til den næste del - fremmednøgler er det, du bruger til at forbinde tabeller med.

Din forespørgsel efter de projekter, en bruger har ville ikke fungere - du refererer til en kolonne fra USERS tabel, når der ikke er nogen reference til tabellen i forespørgslen, og der ikke er nogen underforespørgsel, der bruges til at få disse oplysninger, før den linkes til PROJECTS bord. Det du virkelig ville bruge er:

SELECT p.*
   FROM PROJECTS p
   JOIN USERS u ON u.user_id = p.creator
WHERE u.username = 'John Smith'


  1. MySQL Tabelnavne med små bogstaver i Windows Navne med store bogstaver på Unix

  2. SQLite - Slip en tabel

  3. Hvordan kører man en lagret procedure hver dag i SQL Server Express Edition?

  4. Hvordan optimerer man MySQL Boolean Full-Text Search? (Eller hvad skal den erstattes med?) - C#