Według definicji, Junction Table (tabela most/link tabela) jest używany przez wiele-do-wielu związkach, gdy używany tak:Czy tabela skrzyżowań (tabela łączenia) może być również używana dla relacji jeden do wielu?
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)
)
Ale nie może to być również używany tak łatwo na jeden-do-wielu relacji, jak w tym przykładzie, w którym jeden użytkownik jest związane z wielu zleceń:
(nie rozumiem bazy dobrze więc proszę mnie poprawić, jeśli mam coś źle .)
CREATE TABLE Users
(
UserLogin varchar(50) PRIMARY KEY,
UserPassword varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
)
CREATE TABLE Orders
(
OrderKey varchar(50) PRIMARY KEY,
OrderDescription varchar(500) NOT NULL
)
--This is the junction table.
CREATE TABLE UserOrders
(
UserLogin varchar(50) REFERENCES Users (UserLogin),
OrderKey varchar(50) REFERENCES Orders (OrderKey),
PRIMARY KEY (UserLogin, OrderKey)
)
Czy mówisz, że to jest złe? –
Czasami może być przydatny, jeśli chcesz mieć tę samą strukturę tabelek db, ale zdecydować o typie relacji w aplikacji: jeden do wielu lub wiele do wielu. (jako parametr) Są chwile, kiedy rozwijasz jedną do wielu relacji, wiedząc, że bardzo prawdopodobne jest, że zmieni się wielu na wielu. –
Rozumiem. A jeśli chcesz wymusić jeden-do-wielu lub wiele-do-wielu w bazie danych, zamiast tego używasz jakiegoś rodzaju ograniczenia? –