sql >> Databasteknik >  >> RDS >> Mysql

Kan jag använda samma begränsning för främmande nyckel i två olika tabeller?

Det finns kolumner och det finns främmande nycklar (FK) och det finns begränsningar.

Du kan ha ett kolumnnamn i en tabell oavsett andra tabeller.

En FK är en referenstabell och kolumnuppsättning och en referenstabell och kolumnuppsättning. Alla namnen tillsammans identifierar en FK. Det är en konceptuell sak med en databas.

En FK-begränsning, som är en begränsning, är en sak vars namn måste vara unikt över databasen. Den har och verkställer en associerad FK, nämligen den som beskrivs i dess deklaration. Du kan ha flera FK-begränsningar i en tabell som upprätthåller samma FK.

DBMS har automatiska unika namn för FK-begränsningar. T.ex. en namndel plus en nummerdel där begränsningen är den nummer FK-begränsningen i tabellen med det namnet. Du kan faktiskt ha samma namnlösa FK-begränsningsdefinitionstext flera gånger i en tabell och i flera tabeller, var och en för olika FK-begränsningar. (De inuti en given tabell upprätthåller samma FK.)

Du bör ha ett unikt namnschema för när du vill namnge dem. Referens- och refererade tabellnamn bör inkluderas, och vid behov särskilja kolumnnamn.

Förvirrande nog säger vi FK när vi menar FK-begränsning.

När du säger "Det är samma främmande nyckel i två olika tabeller", missbrukar det termer. Det är två olika FK inblandade och motsvarande FK-begränsningar. Du menar kanske "det är samma refererande kolumner och refererade tabeller och kolumner i båda FK-begränsningarna" eller "det är samma text som refererar till båda tabelldeklarationernas FK-begränsningsdeklarationer". Men FK-begränsningsnamnen måste vara unika.

När du säger "I båda fallen hänvisar det till en intern användare", bekräftar du att typen och/eller tabellen för den refererade kolumnen är samma för båda FK-begränsningarna. Men de är olika FK-begränsningar för olika FK.



  1. Det ultimata emoji-kodningsschemat

  2. Hur man väljer poster från de senaste 24 timmarna med PostgreSQL

  3. SQL Server :ger NEWID() alltid ett unikt ID?

  4. Hur man tvingar utvärdering av subquery innan man går med / trycker ner till främmande server