Assosiativ entitet

Fra Wikipedia, den frie encyklopedi
En assosiativ entitet (register-tabellen) uttrykt med Chen-notasjon
Skisse av en avbildingstabell

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]

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 | rediger kilde]

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 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 | rediger kilde]

Referanser[rediger | rediger kilde]