对一个表而言,它的外键能否设置为主键

一个数据库设计的问题。如果一个数据库有2个表A和B,表A有一个主键a,表B中引用了表A的a字段,则a为表B的外键,那么是否可以把a设置为表B的主键?

如果这个设定是可以通过的,那么它是否是合理的?
如果这种设定是和数据库软件的类型有关,那么mysql能不能这样设置?

第1个回答  推荐于2016-09-27
这个设定是可以通过的, 某些特定的情况下, 也是合理的。
特别是某些, 针对 其他系统的二次开发的情况下。
你需要为某个现有的模块, 增加一个扩展的功能,但是又不能修改别人的表。

-- 旧系统的表
CREATE TABLE old_table (
id INT NOT NULL,
value VARCHAR(10),
PRIMARY KEY(id)
);

-- 要新增加扩展功能, 而又不修改旧系统的表的情况下
-- 是通过追加一个 One To One 关系的表

CREATE TABLE old_exp (
id INT NOT NULL,
exp_data VARCHAR(10),
PRIMARY KEY(id)
);

-- 创建外键关联
ALTER TABLE old_exp
ADD CONSTRAINT main_id_cons
FOREIGN KEY (id) REFERENCES old_table(id);本回答被提问者采纳
相似回答