【发布时间】:2014-12-02 01:21:21
【问题描述】:
我正在尝试编写一个包含以下关系的数据库设计,我试图从上到下分层地解决它们,但这些关系似乎以另一种方式更好地连接,我只是看不到或表达如何。
(这来自工作中的 FOUO 系统,因此已更改名称以反映该分类,这就是名称可能看起来很奇怪的原因。)
每个分支 1:n 功能区,
每个建筑 1:n 组,
每个组 1:n 单位,
每个功能区 1:n 清单,
每个清单 1:n 项目,和
每个单元 1:n 清单和
这个问题是通过重新评估关系来解决的,而不用考虑它们所持有的大小或数据类型。使用 1:n 关系代替 n:n。
【问题讨论】:
-
是的。如果是多对多,则需要“桥接”表
-
如果你不局限于关系型数据库,像 Neo4j 这样的图形数据库可以轻松处理。如果你受限于关系型数据库,Strawberry 的评论是你最好的选择。
-
每个功能区域是特定于一个分支,还是可以属于多个分支?如果它可以属于多个分支,那么它是多对五的,您需要一个桥接表。但是,如果功能区域属于特定分支,您只需要 BranchID 作为功能区域表中的外键。处理每个关系,回答相同的问题并选择适当的结构。
-
尝试使用基数(1 或 1 或更多)指定每个关系的双方。例如。建筑物包含? 1个或多个功能区。功能区包含在 ?1 建筑物中。您还可以查看这两个选项。建筑物可以没有功能区吗?一个功能区可以没有建筑物而存在吗?这更精确一些。您可以从那里构建。
标签: mysql sql database ms-access