我是数据库初学者,我对实体关系感到困惑。我不知道何时应将想法归类为属性(即字段)或表格(即实体)。你能帮我理解一下吗?谢谢。
答案 0 :(得分:2)
简短回答:
实体是我们描述的任何内容,由表格键中的值表示。属性是描述,由一对值表示的一对一关系。关系是值集之间的任何关联,属性是一种特殊的关系。列表示值集。表表示关联的值集,因此表示一个或多个关系。键表示实体。外键约束表示值集的子集。
答案很长:
Peter Chen将属性定义为从实体集或关系集映射到值集(或值集的笛卡尔积)的函数。他还解释说,实体存在于头脑中,并由数据库中的值表示。因此,实体是功能依赖的概念域,即在规范化数据库中,实体集是我们用键表示的。
属性不等于字段,而是它们是映射,在表中由(键,值)对表示。例如,一个人的年龄是一个属性,由人员ID和年龄字段中的年数物理地表示。 Age列本身就是函数的图像(从属侧)。
从陈的文章中可以清楚地看出,实体并没有在表格中表示为行,这与普遍看法相反。实体由值表示,属性由值对表示。因此,关系实体表表示由密钥表示的实体集上的关系,该关系可以是一个或多个属性。这也意味着我们可以拥有任意数量的表来描述相同的实体集,允许我们根据需要将相关属性组合在一起。
更多信息,我建议您查看基本集理论,例如: MathIsFun,然后阅读陈的论文:The Entity-Relationship Model - Toward a Unified View of Data
(PDF可在网上获得)。该论文的参考书目参考了其他有用的论文。
实际上,它可能会帮助您查看Object-Role Modeling
。 ORM是一种无属性的图表符号和规则,允许人们设计逻辑模型而无需在实体和属性之间进行选择。该决定可以推迟到物理设计阶段,可以根据模型中的键和功能依赖性而不是任意进行。
最后,比尔肯特在他的书Data and Reality
中探讨了概念问题。这是对数据建模和关系概念主题的精彩介绍。
答案 1 :(得分:1)
术语问题可能令人困惑。由于自1970年推出关系模型以来,专家和作者并不总是彼此保持一致,因此特别难以为您提供帮助。以下是我学习它的方法。
在概念层面,人们关心数据库存储和管理的值如何与主题相关。主题被分析为实体和实体之间的关系(ER模型)。属性是可以由数据值描述的实体或关系的特征。数据库值是属性的实例。
在逻辑层面,人们关注的是数据的关系模型。关系数据模型中的关系非常类似于数学关系,因此可以假设关系数学成立。在概念级别发现的属性成为(命名)关系的属性。关系是具有共同属性的元组集。元组由键标识,并由外键引用。对数据的约束强制执行某些业务规则。值存储在属性和元组的交集处。
在物理层面,一个是关于由行和列组成的表。此外,还有数据库对象,例如可能是DBMS特定的索引和表空间。表是关系的表示,其中行表示元组,列表示属性。值存储在行和列的交叉点。
SQL Server文档倾向于使用术语记录和字段,我将使用术语行和列。
概念级别描述了不考虑实现的要求。 逻辑级别特定于关系实现。 物理级别特定于特定的DBMS产品,如Oracle或SQL服务器。
实际上,我在SQL术语中表达逻辑层,例如表,行和列,但我尝试使其免受DBMS依赖性的影响。
我担心这种描述非常浓缩。有能力的作者可以花费一百页的文字来充实我刚才所说的内容。但我希望它有所帮助。