我试图在 Google 上查看关于弱实体类型和强实体类型的体面解释,但我还没有完全理解它们。
有人可以给我一个强弱实体类型的例子吗?
弱实体是只有在被另一个拥有时才能存在的实体。例如:ROOM只能存在于BUILDING中。另一方面,TIRE可能被认为是一个强大的实体,因为它也可以在不附加到CAR的情况下存在。
只是为了玩它,问题是强实体类型,答案是弱的。问题总是存在的,但答案需要问题存在。
弱实体是指自身属性不能完全识别的实体,以外键为属性(一般取与其相关的实体的主键)。
例子
房间的存在完全取决于酒店的存在。所以房间可以看作是酒店的弱点。
另一个例子是,
如果某家银行不再存在,那么该银行的银行账户也就不存在了。
公司保险单为员工和任何受抚养人提供保险,如果没有员工,受抚养人就不能存在;也就是说,除非该人是员工的受抚养人,否则该人不能作为受抚养人获得保险。DEPENDENT 是“员工有受抚养人”关系中的弱实体
它可以在没有任何其他实体的情况下存在。
例子
Customer(customerid, name, surname)
它依赖于一个占主导地位的实体,没有强大的实体就无法存在。
例子
Adress(addressid, adressName, customerid)
./Database/DataModels/RelationalDataModel/WeakEntity
大概可以写成两个因素:
如果我们考虑一个包含问题和答案的数据库,那么问题将是强实体,答案将是弱实体。因此,Question (id, text)和Answer (number, question_id, text)将是我们的表格。但是为什么答案的表是一个弱实体?
对问题表的依赖。每个答案都与一个问题(假设)相关联,因此它不能单独存在。这就是为什么我们有人提出一个问题并自己回答,这样他们就可以帮助其他人并获得一些额外的喜欢。
从问题的主键识别。人们将无法识别答案(假设其 id 是数字标识符),因为一个问题可能由其标识符也可能存在于其他问题中的答案来回答。答案表的主键:(number, question_id)。
弱实体的存在是为了解决多值属性问题。
有两种类型的多值属性。一个是对象的简单多值,例如作为学生属性的“爱好”。学生可以有许多不同的爱好。如果我们将爱好留在学生实体集中,“爱好”将不再是唯一的。我们创建一个单独的实体集作为爱好。然后我们根据需要将爱好和学生联系起来。爱好实体集现在是关联实体集。至于它是否弱,我们需要检查每个实体是否有足够的唯一标识符来识别它。在许多人看来,一个爱好名称就足以识别它。
另一种类型的多值属性问题确实需要一个弱实体来解决它。假设在杂货库存系统中设置了一个项目实体。该项目是类别项目还是实际项目?这是一个很重要的问题,因为客户可以在同一时间以一定的数量购买相同的商品,但他也可以在不同的时间以不同的数量购买相同的商品。你能看到它是同一个项目,但不同的对象。该项目现在是一个多值属性。我们首先将类别项目与实际项目分开来解决它。两者现在是不同的实体集。类别item具有item的描述性属性,就像您通常想到的item一样。实际项目不能再具有描述性属性,因为我们不能有多余的问题。实际项目只能有项目的日期时间和数量。您可以根据需要链接它们。现在,让我们谈谈一个是否是另一个的弱实体。描述性属性足以识别类别项目实体集中的每个实体。实际项目只有日期时间和金额。即使我们抽出记录中的所有属性,我们仍然无法识别实体。想想这只是时间和数量。实际的项目实体集是一个弱实体集。我们借助类别项目实体集中的重复主键来识别集合中的每个实体。我们仍然无法识别实体。想想这只是时间和数量。实际的项目实体集是一个弱实体集。我们借助类别项目实体集中的重复主键来识别集合中的每个实体。我们仍然无法识别实体。想想这只是时间和数量。实际的项目实体集是一个弱实体集。我们借助类别项目实体集中的重复主键来识别集合中的每个实体。
弱实体也称为依赖实体,因为它的存在依赖于其他实体。此类实体在 ER 图中由双轮廓矩形表示。
强实体也称为独立实体。
在浏览了几个小时的搜索引擎后,我在这里找到了一个有一个很好的 ERD 示例的网站:http ://www.exploredatabase.com/2016/07/description-about-weak-entity-sets-in-DBMS.html
我重新创建了 ERD。不幸的是,他们没有指定弱实体的主键。
如果建筑物只能有一套公寓,那么似乎不会创建(即丢弃)部分鉴别器房间号。
弱实体类型:其实例在不与其他实体的实例链接的情况下无法退出的实体称为弱实体类型。它不能独立存在。例如:我们的 PC 依赖于我们,它不会自行打开或关闭。
强实体类型:链接到任何其他实体类型的实例的实体称为强实体类型。它可以独立退出。例如:一个人可以做任何事情可以去任何地方并使用任何东西
可以不依赖于另一个数据对象的存在而存在的数据对象称为强数据对象。
ARC 中引入了第一个强/弱引用类型。在非 ARC 分配/保留中正在使用。强引用意味着您想“拥有”您使用此属性/变量引用的对象。只要您使用强引用指向它,编译器就会注意您分配给此属性的任何对象都不会被破坏。只有将属性设置为 nil 后,对象才会被销毁。
弱引用意味着您表示您不想控制对象的生命周期或不想“拥有”对象。您弱引用的对象仅存在,因为至少有一个其他对象持有对它的强引用。一旦不再是这种情况,对象就会被销毁,并且你的弱属性将自动设置为 nil。iOS 中最常见的弱引用用例是 IBOutlets、Delegates 等。
更多信息请参考:http ://www.informit.com/articles/article.aspx?p=1856389&seqNum=5