【发布时间】:2020-06-12 00:22:00
【问题描述】:
我是一个新手,试图设计一个有商店并且每个商店都有营业时间(1 对 1 关系)的数据库,然后我将有一个名为“create_Store”的过程,在这个过程中我必须创建一个商店行和“opening_times”行。
问题是我不知道哪种方式更好,是否有其他更好的设计方式。
第一种方式:
表:存储
id_store int 主键自增,
fk_id_opening_hours int 外键 (Opening_hours) 不为空
表:Opening_hours
id_opening_hours primary_key 自动递增,
...
...
我对这种方式的想法是,一家商店只有一个“营业时间”行,因此商店引用了“营业时间”,但如果我想这样做,我必须插入第一行一个 Opening_hour 行(因为 Store 的外键不接受空值)并且因为它具有自动增量,那么我将不得不以某种方式找到“Opening_Time”id 来创建商店行。
第二种方式:
表:存储
id_store int 主键自增,
...
...
表:Opening_hours
id_opening_hours primary_key 自动递增,
fk_Store int 外键(存储)不为空
通过这种方式,我可以先创建商店(我觉得这样更自然),然后在同一过程中创建“Opening_hours”行,但现在我必须以某种方式搜索商店 ID(因为它是自动递增的) 创建 opening_hours 行。
我不知道第一种方法是否更有效或更好,因为我已经在表中存储了“开放时间”ID。
【问题讨论】:
-
向我们展示
SELECT,我们可以向您展示JOIN所需的索引。由此,您可以推断出所需的 FK。
标签: mysql database database-design foreign-keys