【问题标题】:Database table relationship design数据库表关系设计
【发布时间】: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


【解决方案1】:

在设计数据库时,您需要具体说明关系。例如,您需要提及诸如“一个功能区域只能属于一个分支”之类的内容。这些将有助于确定我们是否将拥有 1:1 关系或 1:n 或其他关系。

但是我想出了一个答案。

【讨论】:

  • 这完成了大部分工作,但改变了 Branch 1:n Building 和 Branch 1:n FunctionalArea。在 [Link]stackoverflow.com/users/4296944/andras@Andras 提到现在这个数字是任意的之后,就不需要构建 FUnctionalArea,让我想得更清楚一点。
【解决方案2】:

我用过的一种简单的方法来处理这个问题是为每个配对设置表格:分支功能、建筑功能、建筑组、组单元、单元清单、清单项目、保留对象和关系分开。

它基本上是元组汤,但保持排序是关系数据库擅长的。访问将在多个表上进行主键连接。您希望您的数据集增长到多大?

限制(100 个清单等)是政策规定的。为简单性和性能设计架构,在应用层实施策略。

【讨论】:

  • 谢谢,暂时不用担心数字让我对这种关系有更清晰的思考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 2010-11-14
相关资源
最近更新 更多