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 .

En associativ enhet (med Chen -notation)

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.

Concept of a mapping table

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  )  )  ;   

A visual depiction of the table schema described, with relationships indicated

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 .