我明白你所说的,关键是,我在想,A表的主键可否在做B表的外键之时也做B表的主键呢?如果不行,那遇到这种两个表之间相关联且具有相同部分的主键时,应该如何操作?
追答要么把Pa_info分成两个表,两个字段分别做主键。
要么让Pr_info表中的PA_ID和FA_ID联合做主键。
如果你的关系模式够规范化,就不会出现这种问题。
看来是我建表之前的构思就出问题了,谢谢提醒!
追答我本身没看清你的句子,外键的语法你就不对,怎么可能建成功呢?
你的代码改进后:
CREATE TABLE Fr_info(Rfid Varchar(20) NOT NULL Primary Key ,Fa_id int FOREIGN KEY REFERENCES Pa_info(Fa_id),Pa_id int FOREIGN KEY REFERENCES Pa_info(Pa_id))
谢谢,明白了!O(∩_∩)O~
那这个外键我可以同时使他作为该表的主键吗?
追答不可以哦。有代码嘛看看嘞
追问已建表:CREATE TABLE Pa_info
(
Pa_id int NOT NULl ,
Fa_id int NOT NULL,
Pname Varchar(20) NOT NULL,
Parea int NOT NULL,
Primary Key(Pa_id,Fa_id)
)
我想要建的表:
(1)CREATE TABLE Fr_info
(
Rfid Varchar(20) NOT NULL Primary Key ,
Fa_id int NOT NULL REFERENCES Pa_info(Fa_id),
Pa_id int NOT NULL REFERENCES Pa_info(Pa_id)
)
/*失败*/
报的什么错
呃。看出来了啊。
你的Fa_id 又不是Pa_info的主键,那肯定建立外键不行的啊
不然的话, 你把pa_info分成2张表吧。就有2个主键了,就应该满足你的需求了
Fa_id和Pa_id共同组成Pa_info的主键,这样也不行吗???
另外:
我还想建立这样一张表:
CREATE TABLE Sa_info
(
Rfid Varchar(20) NOT NULL Primary Key REFERENCES Fr_info(Rfid),
Sa_num int NOT NULL
)
这里假设Fr_info已经成功建立,并且只有唯一的主键Rfid,你认为可以建表成功吗?我感觉不行,外键和主键不能为同一个字段。。。