定义此实体关系

时间:2014-05-06 22:34:02

标签: database-design uml relational-database relationship

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

我打算在纸板包装上保留库存。在大多数情况下,包装公司为每个箱子设计提供一个纸板组件。例如,案例类型x仅需要1个单位的纸板类型y来完成装配。这是一个简单的"多对多"我要定义的关系。从tblCasetblCardboard获取主键并创建新表tblCaseCardboard等...

对我而言,麻烦源于需要多个组件的案例类型。示例:案例类型z需要纸板组件a,b,c才能完成装配。显然,我以前的多对多表不会为我解决这个问题。

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

3 个答案:

答案 0 :(得分:1)

除了真实的包装数据之外,您还应该考虑建模打包规则。正如你自己所说,规则并不总是微不足道(n..n),而是依赖于案例和组件类型。这个事实自然会带来对规则进行建模的需要,并且基于这些规则能够检查包装结构的有效性。

换句话说......在你的例子中,你谈论" tvpes"这不属于您的模型。如果你想将相应的验证逻辑移出"粗略的条件语句",你只需要把它带到数据库(一种元建模:))

这是一个示例图,用于描述您的情况,如所述。

enter image description here

请务必妥善分析所有可能的规则,以便涵盖所有规则。如果规则比这更简单,则可以删除关联类。

答案 1 :(得分:0)

2个实体之间的理想多对多关系,实际上意味着3个实体,其中onse侧存在一对多关系,而另一个实体之间存在多对一关系。

通常,两个端点实体是目录或工作表,而两者中间的实体只存储其他表的键,加上自己的键。

您的帖子是一种情况,其中目录表(“省”表)可能与工作表混淆(“客户”表参考“省”表)。

...........................
..+---------------------+..
..|     <<Catalog>>     |..
..|         Case        |..
..+----------+----------+..
.............|.1...........
.............^.............
............/.\............
...........<...>...........
............\./............
.............v.............
.............|.*...........
..+----------+----------+..
..|     <<Catalog>>     |..
..|  ComponentForCase   |..
..+---------------------+..
.............|.*...........
.............^.............
............/.\............
...........<...>...........
............\./............
.............v.............
.............|.1...........
..+----------+----------+..
..|     <<Catalog>>     |..
..|  CardboardComponent |..
..+---------------------+..
...........................

这是一种情况,其中目录表示标题表加上详细信息表,而不仅仅是单个表。

Case = {CaseID,CaseEtc};

CardboardComponent = {CCID,CCShortName,CCLongDescr};

ComponentForCase = {CFCID,CaseID,CCID,Qty};

并且,只有目录。

干杯。

答案 2 :(得分:0)

感谢各种输入! @Aleks和@ SJuan76都帮我看了一眼。 @ SJuan76在他的一条评论中提出了一切。 @Aleks帮助我实现了抽象。

原始模型是为2个实体(案例和纸板)设计的。添加纸板组件实际上是第三个实体的添加。我试图模拟文字2实体。

我刚刚将finished_cardboard变成了一个抽象的第三个实体。 finished_cardboard是与cardboard_components和finished_case的一对多关系。因此,允许我通过finished_cardboard中的链接与finished_case中的_components进行交互。

再次感谢大家!