Associativ enhet
En associativ enhet är en term som används i relationsteori och entitet-relationsteori . En relationsdatabas kräver implementering av en basrelation (eller bastabell) för att lösa många-till-många-relationer . En basrelation som representerar denna typ av entitet kallas, informellt, en associativ tabell .
Som nämnts ovan implementeras associativa enheter i en databasstruktur med hjälp av associativa tabeller, som är tabeller som kan innehålla referenser till kolumner från samma eller olika databastabeller inom samma databas.
En associativ (eller kopplings-) tabell mappar två eller flera tabeller tillsammans genom att referera till primärnycklarna ( PK ) i varje datatabell. I själva verket innehåller den ett antal främmande nycklar (FK), var och en i en mång-till-en relation från kopplingstabellen till de individuella datatabellerna. PK för den associativa tabellen är vanligtvis sammansatt av själva FK-kolumnerna.
Associativa tabeller är allmänt kända under många namn, inklusive associationstabell , bryggtabell , korsreferenstabell , övergångsställe , mellantabell , skärningstabell , sammanfogningstabell , korsningstabell , länktabell , länkningstabell , många-till-många resolver , karttabell , mappningstabell , parningstabell , pivottabell (som används felaktigt i Laravel - inte att förväxla med korrekt användning av pivottabell i kalkylblad ), eller övergångstabell .
Använda associativa tabeller
Ett exempel på praktisk användning av en associativ tabell skulle vara att tilldela behörigheter till användare. Det kan finnas flera användare och varje användare kan tilldelas noll eller fler behörigheter. Individuella behörigheter kan ges till en eller flera användare.
SKAPA TABELL Användare ( UserLogin varchar ( 50 ) PRIMARY KEY , UserPassword varchar ( 50 ) NOT NULL , UserName varchar ( 50 ) NOT NULL ); SKAPA TABELL Behörigheter ( PermissionKey varchar ( 50 ) PRIMARY KEY , PermissionDescription varchar ( 500 ) NOT NULL ); -- Det här är korsningstabellen. SKAPA TABELL UserPermissions ( UserLogin varchar ( 50 ) REFERENSER Användare ( UserLogin ), PermissionKey varchar ( 50 ) REFERENSER Behörigheter ( PermissionKey ), PRIMÄRKEY ( UserLogin , PermissionKey ) ) ;
En SELECT -sats på en kopplingstabell innebär vanligtvis att man sammanfogar huvudtabellen med kopplingstabellen:
VÄLJ * FRÅN användare GÅ MED UserPermissions MED ( Användarinloggning) ;
Detta kommer att returnera en lista över alla användare och deras behörigheter.
Att infoga i en korsningstabell innefattar flera steg: först infogning i huvudtabellen/huvudtabellerna, sedan uppdatera korsningstabellen.
-- Skapa en ny användare INSERT INTO Users ( UserLogin , UserPassword , UserName ) VÄRDEN ( 'SomeUser' , 'SecretPassword' , 'UserName' ); -- Skapa en ny behörighet INSERT INTO Behörigheter ( PermissionKey , PermissionDescription ) VÄRDEN ( 'TheKey' , 'En nyckel som används för flera behörigheter' ) ; -- Slutligen, uppdatering av korsningen INSERT INTO UserPermissions ( UserLogin , PermissionKey ) VALUES ( 'SomeUser' , 'TheKey' ) ;
Med hjälp av främmande nycklar, kommer databasen automatiskt att avreferera värdena i tabellen UserPermissions till sina egna tabeller.
Se även
- Hoffer, Jeffrey A.; Prescott, Mary B.; McFadden, Fred R. (2004). Modern Database Management (7:e upplagan). Prentice Hall. ISBN 978-0131453203 .
- Codd, EF (1970). "En relationsmodell av data för stora delade databanker" . Kommunikation från ACM . ACM. 13 (6): 377–387. doi : 10.1145/362384.362685 .