小编t.O*_*t.O的帖子

从实体关系图中的属性中提取实体

我正在开发一个数据库模型,我需要在其中捕获有关停车场内停车位租赁合同的信息。因此,我定义了一个名为 PARKING CONTRACT 的实体。

要求 (r.) 说,每份停车合同都应为恰好 1 辆车签署,而这辆车又恰好由 1 位车主拥有。

要完全定义停车合同,r。比如说,我需要记录车主和他的车的各种信息。每位车主:全名、地址、护照号等。 每辆车:技术护照号、注册号、品牌等。

根据 r。(这些细节就不赘述了,这里我是根据需要定义的属性来判断的!),车主可以通过护照号码唯一识别;汽车可以通过注册号来识别。

我首先认为将 CAR OWNER 和 CAR 建模为单独的实体会很好,然后想到了这个:

.-----------------.                      .-------.                 .------------.
| PARKING CONTRACT|     Is signed for    |  CAR  |   Is owned by   |  CAR OWNER |
|                 |O_____________________|       |O________________|            |
'-----------------' 1                   1'-------' 1..*           1'------------'
Run Code Online (Sandbox Code Playgroud)

但后来我意识到,通过这种设计,我们可以随心所欲地存放尽可能多的车主,而他们中的任何人都没有任何车辆的停车合同。我认为这不好 - 为什么数据库应该能够存储有关从未有任何停车合同的人的信息。

我在这里看到的另一个选项是不将 CAR 和 CAR OWNER 提取到单独的实体中,而是将有关它们的所有信息保存在 PARKING CONTRACT 表中,对于每个 PARKING CONTRACT。

但是这个选项似乎也不太好,因为 PARKING CONTRACT 表,恕我直言,变成了一个试图处理太多不同信息的嵌合体。

此外,我已阅读本手册:https : //support.ca.com/cadocs/0/CA%20ERwin%20Data%20Modeler%20r8-ENU/Bookshelf_Files/PDF/ERwin_Methods.pdf

在第 38 页上,它告诉您,当您最终得到诸如停车合同签名者护照号码之类的属性名称时,则表明存在设计问题。

问题是:处理这种情况的最常见方法是什么?这两种方法中的任何一种是首选吗?或者,也许,有一种完全不同的第三种方法?为什么这种方法是首选?谢谢!

database-design

6
推荐指数
2
解决办法
1428
查看次数

标签 统计

database-design ×1