Assosiativ entitet

(Omdirigert fra «Brotabell»)

En assosiativ entitet er et begrep som brukes innen teori om relasjonsdatabaser og entitet-relasjonsmodeller. En relasjonsdatabase krever implementering av en baserelasjon (eller basistabell) for å løse mange-til-mange-relasjoner. En basisrelasjon[1] som representerer denne typen entitet kalles uformelt en assosiativ tabell.[2]

En assosiativ entitet (register-tabellen) uttrykt med Chen-notasjon
Skisse av en avbildingstabell

Som nevnt ovenfor implementeres assosiative entiteter i en databasestruktur ved hjelp av assosiative tabeller som er tabeller som kan inneholde referanser til kolonner fra den samme eller andre databasetabeller i samme database.

En assosiativ tabell (eller koblingstabell) avbilder to eller flere tabeller sammen ved å referere til primærnøklene i hver av datatabellene. Med andre ord inneholder koblingstabellen en rekke fremmednøkler som hver har en mange-til-en-relasjon fra koblingstabellen til de enkelte datatabellene. Primærnøkkelen til den assositative tabellen er typisk sammensatt av kolonnene med selve fremmednøklene.[klargjør]

Assosiative tabeller er kjent under mange navn, inkludert assosiasjonstabell, avbildningstabell, brotabell, kryssreferansetabell, krysstabell, lenketabell, mellomtabell, sammenføyningstabell (join table), snittabell (intersection table) eller transisjonstabell.

Bruke av assosiative tabeller

rediger

Et eksempel på praktisk bruk av en assosiativ tabell kan være å tildele tillatelser til brukere. Det kan være flere brukere, og hver bruker kan tildeles null eller flere tillatelser. Individuelle tillatelser kan gis til en eller flere brukere.

CREATE TABLE Users (
    UserLogin varchar(50) PRIMARY KEY,
    UserPassword varchar(50) NOT NULL,
    UserName varchar(50) NOT NULL
);

CREATE TABLE Permissions (
    PermissionKey varchar(50) PRIMARY KEY,
    PermissionDescription varchar(500) NOT NULL
);

-- Dette er koblingstabellen
CREATE TABLE UserPermissions (
    UserLogin varchar(50) REFERENCES Users (UserLogin),
    PermissionKey varchar(50) REFERENCES Permissions (PermissionKey),
    PRIMARY KEY (UserLogin, PermissionKey)
);
 
En visuell avbildning av tabellskjemaet beskrevet, med relasjoner angitt

En SELECT-kommando på et koblingstabell innebærer vanligvis skjøting (join) av hovedtabellen med koblingstabellen:

SELECT * FROM Users
JOIN UserPermissions USING (UserLogin

Dette vil returnere en liste over alle brukere og deres tillatelser.

Insetting av en krysstabell innebærer flere steg. Først setter man inn data i hovedtabellen(e), og deretter oppdateres krysstabellen.

-- Opprett en ny bruker
INSERT INTO Users (UserLogin, UserPassword, UserName)
VALUES ('SomeUser', 'SecretPassword', 'UserName');

-- Opprett en ny tillatelse
INSERT INTO Permissions (PermissionKey, PermissionDescription)
VALUES ('TheKey', 'A key used for several permissions');

-- Til slutt oppdateres koblingstabellen
INSERT INTO UserPermissions (UserLogin, PermissionKey)
VALUES ('SomeUser', 'TheKey');

Ved hjelp av fremmednøkler vil databasen automatisk dereferere verdiene til UserPermissions-tabellen til sine egne tabeller.

Se også

rediger

Referanser

rediger