【发布时间】:2022-01-04 19:29:42
【问题描述】:
我正在设计一个数据库架构。
目前有2张桌子:
- 任务(TaskID、TaskName)
- 描述(DescriptionID、描述)
一个任务可以有多个描述,但同一个描述不应该被多个任务共享。描述可以有 0 或 1 个任务(用户应该能够在没有任务的情况下添加描述,并且以后能够链接任务)。
选项 1:
在 Description 表中添加 TaskID 作为可为空的外键。
选项 2
相反,我可以创建另一个名为 TaskDescription(RowID, TaskID, DescriptionID) 的表。 但现在是 M:M。一个任务可以有多个描述,一个描述可以被多个任务共享。在这种情况下,如何防止多个任务共享相同的描述?
【问题讨论】:
-
在选项 2 中,您可以创建独立于任务的描述,即使该任务不存在。这有意义吗?使用 OPT 1 all columns NOT NULL 这使得描述可选。也不要忘记 Description_Text 上的 UNIQUE。
-
选项 1 还允许通过使外键为空来创建独立于任务的描述。
-
你好在吗?
标签: sql-server database database-design entity-framework-core database-schema