Jednostka stowarzyszona - Associative entity

Byt asocjacyjny to termin używany w teorii relacji i encji-relacji . Relacyjna baza danych wymaga implementacji relacji bazowej (lub tabeli bazowej) w celu rozwiązania relacji wiele-do-wielu . Relacja bazowa reprezentująca ten rodzaj bytu nazywana jest nieformalnie tabelą asocjacyjną .

Jednostka asocjacyjna (za pomocą notacji Chen )

Jak wspomniano powyżej, encje asocjacyjne są implementowane w strukturze bazy danych za pomocą tabel asocjacyjnych, które mogą zawierać odniesienia do kolumn z tej samej lub różnych tabel bazy danych w tej samej bazie danych.

Koncepcja tabeli mapującej

Tabela asocjacyjna (lub skrzyżowania) mapuje dwie lub więcej tabel razem, odwołując się do kluczy podstawowych (PK) każdej tabeli danych. W efekcie zawiera pewną liczbę kluczy obcych (FK), każdy w relacji wiele-do-jednego od tabeli skrzyżowań do poszczególnych tabel danych. PK tabeli asocjacyjnej zazwyczaj składa się z samych kolumn FK.

Tabele asocjacyjne są potocznie znane pod różnymi nazwami, w tym tabeli asocjacji , tabela mostu , tabela odsyłacza , przejścia dla pieszych , stolika pośredniego , tabela przecięcia , dołączanej tabeli , tabela połączeniową , tabela łącza , łączący tabeli , wiele-do-wielu selsynem , Map Table , tabela odwzorowania , łącząc tabeli , stół obrotowy (używane nieprawidłowo laravel - nie należy ich mylić z prawidłowego wykorzystania tabeli przestawnej w arkuszach ) lub stole przejściowego .

Korzystanie z tabel asocjacyjnych

Przykładem praktycznego wykorzystania tabeli asocjacyjnej byłoby przypisanie uprawnień użytkownikom. Może być wielu użytkowników, a każdemu użytkownikowi można przypisać zero lub więcej uprawnień. Poszczególne uprawnienia można przyznać jednemu lub większej liczbie użytkowników.

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

-- This is the junction table.
CREATE TABLE UserPermissions (
    UserLogin varchar(50) REFERENCES Users (UserLogin),
    PermissionKey varchar(50) REFERENCES Permissions (PermissionKey),
    PRIMARY KEY (UserLogin, PermissionKey)
);
Wizualne przedstawienie opisanego schematu tabeli ze wskazanymi relacjami

SELECT -statement na stole przyłączeniowej zwykle polega łączącej główną tabelę z tabeli przyłączeniowej:

SELECT * FROM Users
JOIN UserPermissions USING (UserLogin);

Spowoduje to zwrócenie listy wszystkich użytkowników i ich uprawnień.

Wstawianie do tabeli skrzyżowań obejmuje wiele kroków: najpierw wstawianie do tabeli głównej, a następnie aktualizowanie tabeli skrzyżowań.

-- Creating a new User
INSERT INTO Users (UserLogin, UserPassword, UserName)
VALUES ('SomeUser', 'SecretPassword', 'UserName');

-- Creating a new Permission
INSERT INTO Permissions (PermissionKey, PermissionDescription)
VALUES ('TheKey', 'A key used for several permissions');

-- Finally, updating the junction
INSERT INTO UserPermissions (UserLogin, PermissionKey)
VALUES ('SomeUser', 'TheKey');

Używając kluczy obcych, baza danych automatycznie wyczyści wartości tabeli UserPermissions z własnymi tabelami.

Zobacz też

Bibliografia

  • Hoffer, Jeffrey A.; Prescott, Mary B.; McFadden, Fred R. (2004). Nowoczesne zarządzanie bazami danych (wyd. 7). Sala Prezydencka. Numer ISBN 978-0131453203.
  • Dorsz, EF (1970). „Relacyjny model danych dla dużych banków wspólnych danych”. Komunikaty ACM . ACM. 13 (6): 377–387. doi : 10.1145/362384.362685 .