2012-10-21 50 views
0

一位朋友正在开发一个网站,并且必须使用SQL制作一个数据库。他问你为什么需要“has-a”或“is-a”关系,因为你可以把一个实体集的主键放在另一个适当的实体集中(反之亦然)以找到关系。为什么关系集很重要?

我无法回答这个问题,因为我刚才被告知关系集只是数据库的工作原理。

编辑:我不想进入正常化。他指出,信息在关系集中被复制。

回答

1

你的问题混合了两个不同的抽象层次,即概念层面和逻辑层面。

在概念层面,人们有兴趣描述建议数据库的信息需求。这样做很有用,而不会将描述倾向于一种解决方案或另一种解决方案。一个对此有用的模型是实体关系(ER)模型。在这个模型中,主题被分解为实体(主体)和这些实体之间的关系。所有数据都被视为描述其中一个实体或其中一个关系的某个方面。

“Is-a”和“has-a”关系在这个抽象层次上是相关的。在这个层面上,关系被识别出来,但没有被执行。

在创建数据库的概念模型之后,但是在创建数据库本身之前,通过逻辑设计阶段,导致数据库的逻辑模型很有用。如果数据库是关系数据库,那么使逻辑模型成为关系数据库非常有用。关系模型是下一个抽象层次。

这是主键和外键进来的地方。这些键实现了在概念阶段确定的关系。这就是关系模型如何实现关系。在这个阶段,你会涉及设计问题,如联结表,表格组成和规范化。

除了概念级别和逻辑级别,还有物理级别和脚本级别。但这些不在你的问题范围之内。

这两种关系是要解决的问题的特征。对主键的外键引用是所提出的解决方案的特征。