首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将实体放在层次结构中,还是作为具有查找表的属性?

将实体放在层次结构中,还是作为具有查找表的属性?
EN

Stack Overflow用户
提问于 2018-01-23 01:32:22
回答 1查看 61关注 0票数 0

比方说,我的公司正在生产医疗产品,这些产品用于许多不同的实验室测试仪器。业务逻辑层次结构如下所示:

代码语言:javascript
复制
A lab has multiple locations (Up to thousands)
A location has multiple departments (Chemistry, Hematology, 3-5 per location)
A department has multiple instruments (No more than 10-20 instruments per location)
An instrument has many products.(No more than 1-5 product types per instrument)

表结构当前反映了业务逻辑,如左侧所示。我建议我们做一个小改动,显示在右边。

每种方法的优缺点是什么?我觉得左边的方法可能会慢一点,因为在一行中链接了这么多Joins

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 01:40:15

我在右边看到的最大的“骗局”是,你失去了部门和位置之间的关联。对于你在帖子顶部描述的关系,从设计的角度来看,左边的结构是正确的。

然而..。

您拥有的设计意味着您的圣安东尼奥设施的质谱仪将具有与您的丹佛设施不同的ID。这是故意的吗?

您已经描述了几个多对多关系-一个位置将拥有多个仪器,而多个位置可以拥有相同的仪器(例如质谱仪)。为了支持这一点,您需要交叉引用表。这是一个初步的草图。我的标准是将表的主键称为"ID",任何名为"table-name_ID“的字段都是对应表的外键:

代码语言:javascript
复制
Lab
    ID
    Name

Location
    ID
    Lab_ID
    Street_Address
    City
    etc.

Department
    ID
    Name

Location_Department    -- this lists the departments at a given location
    ID
    Department_ID
    Location_ID

Instrument        -- Scale, Oscilloscope, Mass Spectrometer, etc.
    ID
    Name
    Description

Location_Department_Instrument    -- inventory at a given location
    Location_Department_ID
    Instrument_ID
    Instrument_Serial_Number

让我知道这是否有意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48387172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档