雙向關係我有兩個表:
1)用戶
2)場景捕獲在MySQL
關係可以描述爲:
用戶可以具有0個或多個場景
場景必須與一個用戶相關聯
一種方法是創建User_Scenario_rels並使用用戶和場景表中的ID創建關係。但這是最佳做法嗎?這是1對多關係嗎?
雙向關係我有兩個表:
1)用戶
2)場景捕獲在MySQL
關係可以描述爲:
用戶可以具有0個或多個場景
場景必須與一個用戶相關聯
一種方法是創建User_Scenario_rels並使用用戶和場景表中的ID創建關係。但這是最佳做法嗎?這是1對多關係嗎?
這是一個「一對多」的關係 - 一個場景有一個用戶,一個用戶有很多場景。
它通常由場景表上的「user_id」列建模。根據本領域實踐的數據庫設計,「用戶具有0個或更多場景」和「用戶具有1個或更多場景」沒有區別。從理論上講,如果你想強加一條規則,即所有用戶必須至少有一個場景,那麼你需要實現一個約束。
一種方法是創建User_Scenario_rels並使用用戶ID和 方案表創建關係。但是,這是最好的 的做法?這是1對多關係嗎?
它是否符合您的要求並實現1:n關係取決於您是否正確地獲得了密鑰和約束。這不是唯一的方法,在這種特殊情況下,它允許一個場景在沒有用戶的情況下存在。
create table users (
user_id integer primary key
);
create table scenarios (
scenario_id integer primary key
);
-- Separate table allows users to have zero scenarios.
create table user_scenarios (
user_id integer not null references users (user_id),
scenario_id integer not null references scenarios (scenario_id),
-- This primary key lets each user have multiple scenarios
primary key (user_id, scenario_id),
-- This unique constraint allows each scenario id number to
-- be used only once. (So it's associated with only one user.)
unique (scenario_id)
);
這是更好(更容易),包括在場景表不可空user_id列,如內維爾K說。
0和1以上是否有差異? – sachin