Orm &引用;有“你一个”;vs";属于;vs";“你有很多”;在关系数据库方面
有人能澄清一下这些在RDBMS术语中的含义吗。我总是把这些弄糊涂,我找不到一个像样的教程。尝试将定义简化为Orm &引用;有“你一个”;vs";属于;vs";“你有很多”;在关系数据库方面,orm,terminology,rdbms,Orm,Terminology,Rdbms,有人能澄清一下这些在RDBMS术语中的含义吗。我总是把这些弄糊涂,我找不到一个像样的教程。尝试将定义简化为 链接表 主键 外键 或者,告诉我为什么这些定义不能简化成这样简单的东西。不要用ORM术语定义它们。编辑:ORM通常是数据库上的一层薄薄的外衣。通常,类映射到表,这些类的实例作为表中的行。名为'USERS'的表和名为USERNAME的varchar字段可能映射到名为User的类,该类的字符串属性名为USERNAME 当映射数据库中的两个表通过外键约束关联时,事情会变得更有趣。'USERS
- 链接表
- 主键
- 外键
或者,告诉我为什么这些定义不能简化成这样简单的东西。不要用ORM术语定义它们。编辑:ORM通常是数据库上的一层薄薄的外衣。通常,类映射到表,这些类的实例作为表中的行。名为
'USERS'
的表和名为USERNAME
的varchar字段可能映射到名为User
的类,该类的字符串属性名为USERNAME
当映射数据库中的两个表通过外键约束关联时,事情会变得更有趣。'USERS'
表可能有一个名为'ID'
的主键,第二个表,例如,'ADDRESSES'
可能包含一个名为'USER\u ID'
的字段,该字段被限制为'USERS.'ID'
。在这种情况下,用户是独立的,地址是依赖的。users表中的行可以接受任何值,但addresses表中的行必须在users表中具有相应的行,否则不满足外键约束
当这映射到应用程序类时,主键通常会被遮挡。无论如何,应用程序感兴趣的不是ID。在上面的示例中,我们真正希望映射的地址
类具有类型为User
的属性,即地址对应的映射用户。类似地,我们可能希望User
类具有一个属性,该属性是依赖于它的地址的集合
在ORM中,独立表被调用为父类,依赖表被映射到子类。我们在描述这些类时使用的术语是子类属于父类,这相当于说依赖表在其一个字段上有一个外键约束,独立表作为引用。
相比之下,父类具有子类,这相当于说独立表是依赖表中字段的外键约束中的引用
假设类别A属于类别B,这样的关系可能是一对一的对应关系,其中每个A可以恰好属于一个B,每个B可以正好有一个A。然而,这是最不常见的情况。大多数情况下是一对多,其中每个A恰好属于一个B,但每个B可能有零个、一个或多个A。这种关系称为一对多。例如,一个用户可以有多个电子邮件地址
最后一个转折点是,有时这两个类可能处于多对多关系中。这几乎总是通过第三个表来实现的。这种关系的一个例子是堆栈溢出问题,它可能有许多标记,每个标记应用于许多问题。一些ORM可能有一个概念,即一个可以属于另一个,而不需要关系是自反的,但大多数ORM称这种情况“已经并且属于许多”我使用:Has_one
仅用于“foreign”表中定义的一对一关系。这里有一个简单的指南:这不是为我做的。我需要从RDBMS的角度而不是ORM的角度来了解这一点。这正是我想要的