sql >> Databasteknik >  >> RDS >> Mysql

Utländska nycklar - Vad gör de för mig?

Främmande nycklar ger referensintegritet. Data i en främmande nyckelkolumn är validerad - värdet kan bara vara ett som redan finns i tabellen och kolumnen som definieras i den främmande nyckeln. Det är mycket effektivt för att stoppa "dålig data" - någon kan inte skriva in vad de vill - siffror, ASCII-text, etc. Det betyder att data är normaliserade - upprepande värden har identifierats och isolerats till sin egen tabell, så det finns inga fler problem om att hantera skiftlägeskänslighet i text... och värdena är konsekventa. Detta leder till nästa del - främmande nycklar är vad du använder för att sammanfoga tabeller.

Din fråga för projekten som en användare har skulle inte fungera - du hänvisar till en kolumn från USERS tabell när det inte finns någon referens till tabellen i frågan och det inte finns någon underfråga som används för att få den informationen innan den länkas till PROJECTS tabell. Det du verkligen skulle använda är:

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


  1. Giltiga modifierare för SQLites datum/tid-funktioner

  2. Hitta liknande bilder i (ren) PHP / MySQL

  3. hur infogar man datum och tid i Oracle?

  4. MySQL-replikering och GTID-baserad failover - en djupdykning i felaktiga transaktioner