Согласно определению, Junction Table (мост стол/таблица соединений) используется для многих-ко-многим, когда используется как это:Может ли соединительная таблица (таблица соединений) также использоваться для отношений «один ко многим»?
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)
)
Но не мог он быть использован так же, как легко для один-ко-многим отношениям, так как в этом примере, в котором один пользователь связан со многими заказами:
(я не понимаю базы данных хорошо, поэтому, пожалуйста, поправьте меня, если я что-то неправильно .)
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)
)
Вы говорите, что это плохо? –
Иногда это может быть удобно, если вы хотите иметь одну и ту же структуру таблиц db, но решаете тип отношения в приложении: от одного до многих или от многих до многих. (в качестве параметра) Бывают случаи, когда вы разрабатываете отношения один-на-один, зная, что это очень вероятно, что многие из них изменятся. –
Я вижу. И если вы хотите принудительно использовать в базе данных «один-ко-многим» или «многие-ко-многим», вместо этого вы используете какой-то тип ограничения? –