gpt4 book ai didi

mysql - 将实体放入层次结构中,还是作为带有查找表的属性?

转载 作者:行者123 更新时间:2023-11-29 10:25:26 25 4
gpt4 key购买 nike

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

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)

表结构当前反射(reflect)了业务逻辑,如左侧所示。我建议我们做一些小的改变,显示在右侧。

enter image description here

每种方法都有哪些优缺点?我觉得左侧方法可能会慢一些,因为连续链接了这么多Join

最佳答案

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

但是...

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

------------------评论讨论后修改------------------

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

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

请告诉我这是否有意义。

关于mysql - 将实体放入层次结构中,还是作为带有查找表的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48387172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com