什么是“数据库实体”以及哪些类型的DBMS项被视为实体?

时间:2009-08-19 14:27:52

标签: database database-design

是桌子之类的东西吗?或者它还包括约束,存储过程,包等等?

我环顾互联网,但找到基本问题的基本答案有时候有点困难。

9 个答案:

答案 0 :(得分:14)

这是一个非常普遍的问题!

基本上,数据库系统本身提供的所有类型,如NUMERIC,VARCHAR等,或者所选择的编程语言(int,string等)都将被视为“原子”数据(基础)类型。

根据您的计划或业务要求 - 根据您的业务对象等构建的实体,您所做的任何事情都是实体。

表,约束等是存储和检索数据所需的数据库内部对象,但这些通常不被视为“实体”。存储在表格中的数据在检索并转换为对象时, 则是一个实体。

马克

答案 1 :(得分:12)

在实体关系世界中,实体是可以独立存在的东西,因此实体和数据库表之间通常存在一对一的关系。但是,此映射是一个实现决策:例如,ER图可能包含三个实体:Triangle,Square和Circle,这些实体可能被建模为单个表:Shape。

另请注意,某些数据库表可能表示实体之间的关系。

答案 2 :(得分:3)

这似乎有帮助:http://en.wikipedia.org/wiki/Entity-relationship_model

在数据库中,实体是一个表。该表格表示您尝试建模的任何真实世界概念(人员,交易,事件)。

Contraints可以表示实体之间的关系。这些将是外键。它们还强制执行first_name之类的规则不能为空(null)。交易必须包含1个或多个项目。活动必须有日期时间。

存储过程/包/触发器可以处理更复杂的关系和/或它们可以处理业务规则,只取决于它正在做什么。

答案 3 :(得分:2)

这个主题解释了为什么很难找到“基本问题的基本答案”的一个原因。不同的编程范例已经使用了某些词来表示不同的东西(尝试询问一群OO程序员,有时候Class和Object之间的区别是什么)。

这是我的看法。

我第一次遇到实体作为SSADM中的建模术语(问你的爸爸)。在该上下文中,实体用于在需求收集/分析阶段期间建模逻辑数据块。使用实体关系图对实体之间的关系进行建模,并使用实体生活历史对Enity的概况进行建模。 ELH图在COBOL系统中非常有用,但在关系数据库中却非常糟糕。另一方面,ERD在今天仍然有用。

在设计和实现阶段,实体将被解析为COBOL输入文件中的数据库表,对象或记录。在该过程的过程中,逻辑实体可以在多个表之间拆分,或者可以将多个实体划分到单个表中,或者可以存在一对一映射。有时,一个实体被完全解决或作为一个视图或一个存储过程徘徊。

答案 4 :(得分:2)

我的回答显然有点晚了,但这里是数据库认证教科书中定义的:

实体:关于将数据存储在数据库中的唯一可识别元素。

并清除实体和表格混淆,

实体不是表格。表可以称为“表”或“关系”,单词是同义词。

答案 5 :(得分:1)

这取决于您如何看待它以及如何为问题域建模。大多数情况下,当您听到实体时,它们是映射到对象类的数据库表(一个或多个)。因此,在查询并转换为类实例之前,它不是真正的实体。

但同样,这取决于您的建模方法,并且有多个: - )

答案 6 :(得分:1)

<强>更新

在我的博客中看到这篇文章,我试着更详细地介绍这个主题:


实体是来自entity-relationship model的术语。

relational model(您的数据库架构)是实施ER模型的方法之一。

关系表表示简单类型(如整数和字符串)之间的关系,它们可以代表所有内容:实体,属性,关系。

你不能只从关系结构中知道它是什么,你需要看到ER模型。

persons

id   name  surname
1    John  Smith

idnamesurname是现实世界中的实体,可能代表也可能不代表基础ER模型中的实体。

表中存在记录的事实意味着这些实体具有以下关系:“person 1 具有名称John具有Smith“。

在上面的示例中,实体由id定义(从模型的角度来看)。

如果某人将其姓名从John更改为Jack,则该人保持不变(再次,从模型的角度来看),但与另一个name相关。< / p>

在上面的示例中,namesurname可以视为attribute(而不是entity),但同样,您需要查看此模式的ER模型实现告诉它是什么。

在一些ER到关系模型映射中,应该在一个可以引用FOREIGN KEY的表中定义一个实体,将其视为entity(应该约束其域)。

但是,这种约束可以存在但不能在数据库中表示(由于技术限制或其他原因)。

同样,我们不能保留所有可能名称的列表,但@#$^#的名称很可能是非名称,因此,它不属于名称域。

因此,attributeentity,可以参与某个关系,但不能包含在域定义表中。

例如,表prices

good_id  price

定义商品集合(由表goods定义)与实数集合之间的关系(由于它不可数,因此不能包含在表格中)。

仍然每个价格(如$2.00)也是一个现实世界的实体。

答案 7 :(得分:1)

我们需要了解一些背景信息。人们在设计数据库时分析数据时有时会做的一件事就是创建一个实体实现图,在这个图中,您正在考虑您正在管理的数据项及其关系。

我想知道这是你的意思吗?

如果是这样的话,或许读一下这个article会让你开始吗?

答案 8 :(得分:1)

实体对用户/企业/企业/问题域“重要的事情”