4
A
回答
5
在纯粹的“加入”或接线表中的所有字段将是主键的一部分。例如,让我们考虑下表:
CREATE TABLE USERS
(ID_USER NUMBER PRIMARY KEY,
FIRST_NAME VARCHAR2(32),
LAST_NAME VARCHAR2(32));
CREATE TABLE ATTRIBUTES
(ID_ATTRIBUTE NUMBER PRIMARY KEY,
ATTRIBUTE_NAME VARCHAR2(64));
这些之间的结台,让许多用户有很多属性是
CREATE TABLE USER_ATTRIBUTES
(ID_USER NUMBER REFERENCES USERS(ID_USER),
ID_ATTRIBUTE NUMBER REFERENCES ATTRIBUTES(ID_ATTRIBUTE),
PRIMARY KEY(ID_USER, ID_ATTRIBUTE));
有时你会发现需要增加一个非主列到交界表,但我觉得这是比较罕见的。
分享和享受。
3
所有的表都应该有一个主键。 :-)
您可以使用复合外键或盲整数键。
当关联表中没有其他元素时,您将使用复合外键。
当关联表具有自己的元素时,您可以使用盲整数键。复合外键将被定义为两个附加索引。
+0
如果你选择添加一个人工密钥(“盲整数密钥” )你仍然需要复合键来防止“现实生活”重复。 – onedaywhen 2010-06-22 14:05:07
+0
@onedaywhen:对。 – 2010-06-22 15:30:27
0
这取决于您正在关联的记录。只要您不需要每个关联有多个记录,就可以在关联记录的ID上创建复合主键。
但是,更重要的是确保这两列都已编入索引并且具有定义的参照完整性。
相关问题
- 1. 多对多关系的联结表是否应具有代理主键?
- 2. 使用自定义连接表主键关联多个关系
- 3. 该查找(关联)表是否正确? (多对多的关系)
- 4. 的一对多关系关联表
- 5. 多对多关系:关联表与单个外键?
- 6. DevExpress多对多关联表
- 7. 什么是关联表的正确名称(多对多关系)
- 8. 具有多对多关系的联结表上的SQL连接
- 9. MySql的多个联接与关系表
- 10. 关联表中的主键
- 11. JPA多对多关系创建两个联接表
- 12. 向多对多表添加外键关系是否有意义
- 13. 需要关联表的多对多关系
- 14. 如何从多对多关系中选择关联表
- 15. sqlalchemy:保持关联表中的列值为多对多关系
- 16. 以多对多的关系编辑关联表中的记录
- 17. SQLAlchemy的关系,许多一对多关联表
- 18. 关联数据与多对多关联
- 19. JPA: - 许多一对多只有一个关联表的外键
- 20. 单表继承的多对多关联
- 21. 休眠多对多关系只保存连接表中的关联
- 22. 主义加入多对多无关联
- 23. 为一对多表关系创建联接查询
- 24. SQLAlchemy的:(通过关联对象多对多)多重关系
- 25. Rails:记录间具有多对多自联接关系的单表继承
- 26. 与连接表和多个别名的多对多关联
- 27. 传递对象作为参数是否表示关联关系?
- 28. JPA:在表关联关系中级联
- 29. 关联关联表
- 30. ER-关联关系表
你更喜欢哪个数据库的答案? – 2010-06-22 11:02:13
@Mark Byers mysql请 – Imran 2010-06-22 11:05:30
这个问题类似于http://stackoverflow.com/questions/208666/two-foreign-keys-instead-of-primary – 2010-06-22 11:05:34