Database design 定义此实体关系

Database design 定义此实体关系,database-design,uml,relational-database,relationship,Database Design,Uml,Relational Database,Relationship,首先,请原谅我的无知。我很难理解如何在我试图设计的库存数据库中定义特定的关系 我打算保留纸板包装的库存。在大多数情况下,包装公司为我们提供一个纸板组件每箱设计。例如,箱子类型x只需要1个纸板类型y就可以完成组装。对我来说,这是一种简单的“多对多”关系。从tblCase和tblCardboard中获取主键,并创建一个新表tblCaseCardboard,等等 对我来说,问题在于案例类型需要多个组件。示例:箱型z需要纸板组件a、b、c来完成装配。显然,我以前的多对多表并不能解决这个问题 我确信有一种

首先,请原谅我的无知。我很难理解如何在我试图设计的库存数据库中定义特定的关系

我打算保留纸板包装的库存。在大多数情况下,包装公司为我们提供一个纸板组件每箱设计。例如,箱子类型
x
只需要1个纸板类型
y
就可以完成组装。对我来说,这是一种简单的“多对多”关系。从
tblCase
tblCardboard
中获取主键,并创建一个新表
tblCaseCardboard
,等等

对我来说,问题在于案例类型需要多个组件。示例:箱型
z
需要纸板组件
a、b、c
来完成装配。显然,我以前的多对多表并不能解决这个问题


我确信有一种相对有效的方法来定义它,而不是用一个粗糙的条件语句列表来捕获异常。任何意见都将不胜感激!谢谢。

理想的2个实体之间的多对多关系实际上意味着3个实体,一方是一对多关系,另一方是多对一关系

通常,这两个端点实体是目录或工作表,而中间的实体只将密钥存储到其他表中,加上它自己的密钥。

在您的帖子中,目录表(“省”表)可能与工作表(“客户”表引用“省”表)混淆

。。。。。。。。。。。。。。。。。。。。。。。。。。。
..+---------------------+..
..|          |..
..|案例|。。
..+----------+----------+..
.............|.1...........
.............^.............
............/.\............
......................
............\./............
v
.............|.*...........
..+----------+----------+..
..|          |..
..|外壳组件|。。
..+---------------------+..
.............|.*...........
.............^.............
............/.\............
......................
............\./............
v
.............|.1...........
..+----------+----------+..
..|          |..
..|卡板组件|。。
..+---------------------+..
...........................
在这种情况下,目录意味着一个标题表加上一个明细表,而不仅仅是一个表

Case={CaseID,CaseEtc}

CardboardComponent={CCID,CCShortName,CCLongDescr}

ComponentForCase={CFCID,CaseID,CCID,Qty}

而且,只有目录


欢呼。

< P>这里,你应该考虑建模<强>包装规则< /强>,除了真实的包装数据之外。正如您自己所说,规则并不总是琐碎的(n..n),而是取决于大小写和组件类型。这一事实自然而然地需要对规则进行建模,并根据这些规则检查包装结构的有效性

换句话说。。。在您的示例中,您提到了不属于您的模型的“TVPE”。如果要将相应的验证逻辑从“原始条件语句”中移出,只需将其带到DB(类似于元建模:)

如前所述,这是一个模拟您的情况的示例图


一定要分析好所有可能的规则,以便涵盖所有规则。如果规则更简单,您可以删除关联类。

感谢您的各种输入!@Aleks和@SJuan76都帮助我看到了光明@SJuan76在他的一篇评论中把一切都放在了正确的角度。而@Aleks帮助我实现了抽象

原始模型设计用于2个实体(箱子和纸板)。纸板组件的添加实际上是第三个实体的添加。我试图对文字2实体进行建模

我刚刚把完成的纸板变成了一个抽象的第三实体。成品纸板与纸板组件和成品盒之间是一对多关系。因此,我可以通过成品纸板的链接与成品包装箱中的组件进行交互


再次感谢大家

我不明白你的意思。“简单”的情况可以通过一对一的关系解决,但复杂的情况可以通过多对一或多对多的关系解决(首选,因为您不知道将来是否需要)。你尝试过什么,你称之为“多对多”是什么?是@SJuan76说的。我只是想问:你的意思是你真的需要一个多级层次结构,其中一个组件可以有一个子组件(和子组件等)?它不是“两个实体之间的多对多关系实际上意味着三个实体”,而是“两个实体之间的一个多对多关系表示为三个表”当转换为关系模型时,这正是他目前拥有的不适用于他的模型。你只是在急诊室的表格上显示出来。
...........................
..+---------------------+..
..|     <<Catalog>>     |..
..|         Case        |..
..+----------+----------+..
.............|.1...........
.............^.............
............/.\............
...........<...>...........
............\./............
.............v.............
.............|.*...........
..+----------+----------+..
..|     <<Catalog>>     |..
..|  ComponentForCase   |..
..+---------------------+..
.............|.*...........
.............^.............
............/.\............
...........<...>...........
............\./............
.............v.............
.............|.1...........
..+----------+----------+..
..|     <<Catalog>>     |..
..|  CardboardComponent |..
..+---------------------+..
...........................