设施相关项目的数据库

时间:2016-06-03 00:17:25

标签: database-design

我正在尝试围绕创建数据库来跟踪设施相关项目: 例如:

  1. 电气设备:面板,安全读卡器,烟雾探测器, 扬声器/锣等。
  2. 管道装置:洒水喷头,关闭装置,消防栓等。
  3. 地板记录
  4. 绘画记录
  5. 危险品测试/材料
  6. ...... ..以及其他太多要在此列出

    他们之间的一个共同点是他们的位置。其中任何一个/每个都可以位于:

    • 网站(不附属于建筑物)
    • 附属于建筑物(外部): 可能(但不保证知道楼层/楼层和/或房间)。
    • 建筑物内部(室内):确切的房间将是已知的

    由于我在设计数据库表方面的经验有限,我认为有两种可能的情况:

    • 单表(列为):站点,建筑物,楼层,房间。任何未知或不适用的字段都是Null。这将是单人桌,但很多Nulls。
    • 3x独立桌子:仅限现场,外部建筑,室内装饰。并记录仅相关数据。对于站点表,仅记录站点ID。仅限室内记录房间ID。对于建筑外部,我会记录建筑物ID(以及水平或房间IF可用)。

    长话短说,我的问题归结为两个主要问题:

    • 我是单独处理每个主题/群组位置还是尝试将它们分组?
    • 我是否创建了一个包含大量Null或3X三个独立表的表?

    以下是5个科目的可能组合:

    • 所有科目和所有分组的单个表:表计数= 1
    • 每个主题的单个表格和所有分组的位置:表格数量= 5
    • 每个主题和每个位置的单个表:表计数= 15.

    我希望这有道理吗?我会感激任何评论? 谢谢

1 个答案:

答案 0 :(得分:0)

通常,如何设计数据库的答案取决于所要求的数据问题。您想知道特定地点的所有Hazmat材料吗?然后,正如评论中所建议的那样,您需要一个规范化的数据库。

解决方法是创建一个包含描述,位置类型(站点/建筑物/楼层等)和locationID的Locations表。然后你可以添加一个ParentLocation字段来链接房间到楼层,楼层到建筑物等等。好处是你可以在不改变任何表格的情况下添加/取消关卡。您可以将各种ID存储在项目记录中,并且父信息将自动可用。

如果您有任何特定于每种位置类型的字段,但您仍希望拥有单独的表格。