【发布时间】:2015-10-14 10:14:45
【问题描述】:
我正在使用数据库,并被告知表 USERS 有一个主键 - USERID。使用ALL_CONS_COLS 给了我以下信息:
OWNER | TABLE_NAME | CONSTRAINT_NAME | COLUMN_NAME | POSITION
----------------------------------------------------------------
MONSTER | USERS | USER_ID_PK | USERREF | 2
MONSTER | USERS | USER_ID_NN | USERID
MONSTER | USERS | USER_ID_PK | USERID | 1
这表明 PK 是由以下各项组成的组合:USERREF 和 USERID。
有几件事我没有遵循:
为什么USERID 既有NOT NULL 约束又有PK 约束? PK 定义为 NN。
其次,由于USERID 有NN 约束,为什么USERREF 没有NN 约束?
第三,为什么CONSTRAINT_NAME“建议”PK是USER_ID(USERID),即为什么约束以单列命名; USERS_PK 不是更好的约束名称吗?
那么,归根结底,它是不是一个 Composite PK?
【问题讨论】:
-
大多数问题的答案是(可能):因为有人以这种方式创建了它(尤其是名称和 NN 约束)
-
谢谢!那么它是复合
PK吗?
标签: database oracle primary-key composite-primary-key