强弱实体类型的示例


72

我试图在Google上对实体类型强实体类型进行了不错的解释,但是我还没有完全理解它们。

有人可以给我一个强弱实体类型的例子吗?

Answers:


131

弱实体是只有当另一个实体拥有时才能存在的实体。例如:ROOM只能存在于BUILDING中。另一方面,轮胎可能被认为是一个坚固的实体,因为轮胎也可以不连接到汽车而存在。


15
我不明白为什么要接受这一点,这是完全错误的。@Paul描述的内容应使用存在依赖关系进行建模。Chen在1976年的论文中的定义是,如果不能根据其自身属性的值唯一地标识其实体,则该实体集将是弱的,并且必须依赖相关实体集的(关键)属性。另一个实体必须存在并拥有弱实体的说法仅是此定义的逻辑含义,而并非相反。弱实体向实体添​​加有序编号的正确示例(即问题的答案编号)。
沃克斯特,

53

只是玩这个问题,问题是很强的实体类型,答案很弱。问题总是存在的,但是答案需要存在一个问题。

示例:不要问“为什么?” 如果你父亲是化学教授


2
这是错误的,您可以同时回答强和弱。区别在于答案很弱,您可以为每个问题使用相同的编号(答案1、2、3,...),但是如果答案很强,则必须对所有答案都使用一个编号。这是因为如果使答案变得微弱,则可以选择依靠questionid创建答案的(复合)主键。通过确保存在存在依赖关系(答案在与问题的识别关系中的完全参与)来反映答案需要一个问题存在。即使它很强大,也可以这样做来回答。
Warkst,

谢谢@沃克斯特的澄清。我打算去一个更加普通/日常生活的案例。
Faheem

25

弱实体是不能由自己的属性完全识别并采取实体外键作为一个属性(通常花费的实体的主键它关系到)结合。

例子

房间的存在完全取决于酒店的存在。因此,房间可以看作是酒店的弱项
另一个示例是,
如果某个银行不再存在,则该银行的银行账户将不存在。


您对什么是弱实体的解释可能是这里最好的,但您并没有在解释什么是强实体以及这两种类型之间的区别。
nbro

@nbro,这是弱实体集的正确定义。一个强大的实体集与之相反,即:一个实体集,其实体可以基于实体集本身的属性值进行唯一标识。区别在于,您需要向弱实体集添加属性,以便能够唯一地标识每个实体,方法是添加代理键(在这种情况下,它变为强实体)或向另一个对象添加外键( (或多个其他)实体集(使其变弱,而其他实体集为其标识符)。
沃克斯特,

21

公司保险政策为雇员和任何受抚养者提供保险,如果没有雇员,就不能存在依赖者;也就是说,除非该人是某雇员的受抚养人,否则该人将无法获得作为受抚养人的保险。


我的+1有字。“ HAS”一词使其更加清晰。
Deen John,

9

强大的实体

它可以不存在任何其他实体而存在。

Customer(customerid, name, surname)

弱实体

它取决于主导实体,没有强大的实体就不可能存在。

Adress(addressid, adressName, customerid)

7
说明为什么CustomerAddress分别是一个强实体和一个弱实体。
nbro

将客户编号保留为FK的地址,这意味着地址仅对应于特定的客户编号。地址实体将移动到没有任何客户的完全无用的状态。一旦添加了客户实体,则值将添加到“地址”中。如果有错,请指正。
瑜伽士

1
这是一个不好的例子。一个地址可以不存在附加的客户实体而存在。一个更好的例子是带有建筑物的公寓-没有建筑物,该公寓实际上就不存在。您的示例更像是“轮胎”和“汽车”。虽然轮胎可能与汽车相关联,但不一定必须如此。
马修,

3

弱实体也称为依赖实体,因为它的存在取决于其他实体。此类实体在ER图中用双轮廓矩形表示。

强实体也称为独立实体。


3

存在弱实体以解决多值属性问题。

有两种类型的多值属性。一个是诸如“爱好”这样的对象的简单许多值作为学生的属性。学生可以有许多不同的爱好。如果我们将兴趣爱好留在学生实体集中,则“兴趣爱好”将不再是唯一的。我们创建一个单独的实体集作为爱好。然后,我们根据需要将兴趣爱好和学生联系在一起。爱好实体集现在是关联实体集。至于是否弱,我们需要检查每个实体是否具有足够的唯一标识符来标识它。在许多意见中,一个爱好名称就足以识别它。

另一种类型的多值属性问题确实需要一个弱实体来解决。假设一个在杂货店库存系统中设置的商品实体。该项目是类别项目还是实际项目?这是一个重要的问题,因为客户可以一次以一定金额购买相同的商品,但是他也可以在不同时间以不同的金额购买同一商品。您能看到相同的项目但对象不同吗?该项目现在是一个多值属性。我们通过首先将类别项目与实际项目分开来解决它。现在这两个是不同的实体集。类别项目具有该项目的描述性属性,就像您通常想到的项目一样。实际项目不能再具有描述性属性,因为我们不能有多余的问题。实际项目只能包含日期时间和项目数量。您可以根据需要链接它们。现在,让我们谈谈一个人是否是另一个的弱者。描述性属性足以识别类别项目实体集中的每个实体。实际项目只有日期时间和金额。即使我们提取记录中的所有属性,我们仍然无法识别实体。想想这只是时间和数量。实际项目实体集是一个弱实体集。我们借助类别项目实体集中的重复主键来标识集合中的每个实体。我们仍然无法识别实体。想想这只是时间和数量。实际项目实体集是一个弱实体集。我们借助类别项目实体集中的重复主键来标识集合中的每个实体。我们仍然无法识别实体。想想这只是时间和数量。实际项目实体集是弱实体集。我们借助类别项目实体集中的重复主键来标识集合中的每个实体。


3

./Database/DataModels/RelationalDataModel/WeakEntity

它可能写成两个因素:

  • 相关性:取决于标识实体集的存在(总的一对多关系)。
  • 标识:没有主键。它具有部分键(或区分符)。它需要使用另一个表的主键进行标识。

如果我们考虑一个包含问题和答案的数据库,那么问题将是强实体,而答案将是弱实体。因此,问题(id,文本)答案(数字,question_id,文本)将成为我们的表格。但是,为什么答案表是一个弱实体?

  • 对问题表的依赖。每个答案都与一个问题(假设)相关,因此它不能独立存在。这就是为什么我们有些人问一个问题并自己回答,以便他们可以帮助其他人并获得更多的喜好。

  • 从问题的主键识别。一个人将无法识别答案(假设其ID是数字标识符),因为一个问题可能也由其标识符也可能存在于其他问题中的答案回答。答案表的主键:(数字,question_id)。


1

在浏览搜索引擎几个小时之后,我发现了一个网站,上面有一个很棒的ERD示例:http : //www.exploredatabase.com/2016/07/description-about-weak-entity-sets-in-DBMS.html

我已经重新创建了ERD。不幸的是,他们没有指定弱实体的主键。

在此处输入图片说明

如果建筑物只能有一个,只有一个公寓,则似乎无法创建(即丢弃)部分区分房间号。


1
该公寓是一个薄弱的实体,因为如果没有其识别所有者(建筑实体)就无法存在。没有为弱实体提供主键。而是将部分标识符(由DoorNo(门号)属性下的虚线表示)与BNo组合。Buliding实体的主键属性,以形成每个单元实例的唯一标识。
马修,

-2

弱实体类型:其实例不与其他实体的实例链接而无法退出的实体称为弱实体类型。它不能独立存在。例如:我们的PC依赖我们,它将无法自行打开或关闭。

强实体类型:链接到任何其他实体类型的实例的实体称为强实体类型。它可以独立退出。例如:一个人可以做的每件事都可以遍地开花并使用任何事物



-6

ARC中引入了第一个强/弱引用类型。在非ARC中,正在使用分配/保留。强大的引用意味着您要“拥有”使用此属性/变量引用的对象。编译器会注意,只要您使用强引用指向它,分配给该属性的任何对象都不会被破坏。只有将属性设置为nil后,对象才会被销毁。

弱引用意味着您表示您不想控制对象的生存期或不想“拥有”对象。您要弱引用的对象仅能生存,因为至少有另一个对象对此对象具有强引用。一旦不再是这种情况,对象将被销毁,并且您的弱属性将自动设置为nil。iOS中弱引用的最常见用例是IBOutlet,Delegates等。

有关更多信息,请参见:http : //www.informit.com/articles/article.aspx? p=1856389& seqNum=5


1
问题是关于数据库中的实体,而不是作为编程语言构造的强引用/弱引用。
Nishant George Agrwal,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.