sql >> Database >  >> RDS >> Mysql

Foreign Keys - Wat doen ze voor mij?

Buitenlandse sleutels bieden referentiële integriteit. De gegevens in een externe-sleutelkolom worden gevalideerd - de waarde kan slechts een waarde zijn die al bestaat in de tabel en kolom die zijn gedefinieerd in de externe sleutel. Het is zeer effectief bij het stoppen van "slechte gegevens" - iemand kan niet invoeren wat ze willen - cijfers, ASCII-tekst, enz. Het betekent dat de gegevens zijn genormaliseerd - herhalende waarden zijn geïdentificeerd en geïsoleerd in hun eigen tabel, dus er zijn geen zorgen meer over het omgaan met hoofdlettergevoeligheid in tekst... en de waarden zijn consistent. Dit leidt naar het volgende deel - buitenlandse sleutels zijn wat je gebruikt om tabellen samen te voegen.

Uw zoekopdracht voor de projecten die een gebruiker heeft, zou niet werken - u verwijst naar een kolom uit de USERS tabel wanneer er geen verwijzing naar de tabel in de query is en er geen subquery wordt gebruikt om die informatie op te halen voordat deze wordt gekoppeld aan de PROJECTS tafel. Wat je echt zou gebruiken is:

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


  1. Word lid van het Q&A-forum voor ontwikkelaars

  2. Hoe u kunt profiteren van de nieuwe partitioneringsfuncties in PostgreSQL 11

  3. Wat blokkeert SQL Server?

  4. Entity Framework en meerdere schema's