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

Kan en fremmednøgle fungere som primærnøgle?

Selvfølgelig. Dette er en almindelig teknik kendt som supertyping tabeller. Som i dit eksempel er ideen, at en tabel indeholder et supersæt af entiteter og har fælles attributter, der beskriver en generel enhed, og andre tabeller indeholder undersæt af disse entiteter med specifikke attributter. Det er ikke ulig et simpelt klassehierarki i objektorienteret design.

For dit andet spørgsmål kan en tabel have to kolonner, som er separate fremmednøgler til den samme anden tabel. Når databasen bygger forespørgslen, forbinder den den anden tabel to gange. For at illustrere i en SQL-forespørgsel (ikke sikker på MySQL-syntaks, jeg har ikke brugt det i lang tid, så dette er specifikt MS SQL-syntaks), ville du give den tabel to forskellige aliaser, når du vælger data. Noget som dette:

SELECT
    student_accounts.name AS student_name,
    counselor_accounts.name AS counselor_name
FROM
    student_rec
    INNER JOIN user_accounts AS student_accounts
      ON student_rec.student_number = student_accounts.user_id
    INNER JOIN user_accounts AS counselor_accounts
      ON student_rec.guidance_counselor_id = counselor_accounts.user_id

Dette tager i bund og grund student_rec tabellen og kombinerer den med user_accounts tabel to gange, én gang på hver kolonne, og tildeler to forskellige aliaser, når de kombineres for at adskille dem.



  1. Opret tabel, hvis den ikke findes fra mysqldump

  2. MySql ser ydeevne

  3. Find ud af datatypen for de kolonner, der returneres i et resultatsæt i SQL Server

  4. Hvad er placeringen af ​​mysql-klienten .my.cnf i XAMPP til Windows?