我还不能完全理解这些差异。你能描述这两个概念并使用真实世界的例子吗?
当前回答
对Daniel Dinnyes回答的补充:
在非标识关系中,不能使用相同的值两次使用相同的主键列(例如,“ID”)。
但是,使用identifynig关系,可以为“ID”列显示两次相同的值,只要它具有不同的“otherColumn_ID”外键值,因为主键是两列的组合。
请注意,FK是否为“非空”并不重要!;-)
其他回答
对Daniel Dinnyes回答的补充:
在非标识关系中,不能使用相同的值两次使用相同的主键列(例如,“ID”)。
但是,使用identifynig关系,可以为“ID”列显示两次相同的值,只要它具有不同的“otherColumn_ID”外键值,因为主键是两列的组合。
请注意,FK是否为“非空”并不重要!;-)
从父级迁移到子级的属性是否有助于识别子级?
如果是:标识依赖性存在,则关系是标识的,子实体是“弱”的。如果不存在:标识依赖不存在,则关系是非标识的,子实体“强”。
注意,身份依赖意味着存在依赖,但并非相反。每一个非NULL FK都意味着没有父级就不能存在子级,但这并不能使关系确定。
有关这方面的更多信息(以及一些示例),请参阅ERwin方法指南的“确定关系”部分。
补充:我意识到我参加聚会(非常)晚了,但我觉得其他答案要么不完全准确(用存在依赖而不是身份依赖来定义它),要么有些曲折。希望这个答案更清晰。。。
1孩子的FK是孩子的PRIMARY KEY或(非NULL)UNIQUE约束的一部分。
识别关系意味着子实体完全依赖于父实体的存在。
示例帐户表人员表和人员帐户。人员帐户表仅通过帐户和人员表的存在来标识。
非标识关系意味着父表的存在不标识子表。
示例accountType和account.accountType表未标识为存在科目表。
标识关系指定子对象不能不存在父对象
非标识关系指定常规关联在对象之间,1:1或1:n基数。
如果父级不是,则可以将非标识关系指定为可选关系通过设置父表基数。。。
假设我们有这些桌子:
user
--------
id
name
comments
------------
comment_id
user_id
text
这两个表之间的关系将确定关系。因为,评论只能属于其所有者,而不能属于其他用户。例如每个用户都有自己的评论,当用户被删除时,该用户的评论也应被删除。
推荐文章
- 获得PostgreSQL数据库中当前连接数的正确查询
- MySQL数据库表中的最大记录数
- 从现有模式生成表关系图(SQL Server)
- HyperLogLog算法是如何工作的?
- 数据库和模式的区别
- 如何从命令行在windows中找到mysql数据目录
- 货币应该使用哪种数据类型?
- 如何找到MySQL的根密码
- 将表从一个数据库复制到另一个数据库的最简单方法?
- 什么是分片,为什么它很重要?
- 数据库触发器是必要的吗?
- 为什么我应该使用基于文档的数据库而不是关系数据库?
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- 将值从同一表中的一列复制到另一列
- 什么是数据库池?