日期:2014-05-17  浏览次数:20457 次

sql数据库 主键 外键的问题(建立一个聊天记录和人名相关的数据库)
现在想建立一个数据库 含两张表

一张表为人的信息

CREATE TABLE users
(
id# int not null,
name char(10) not null,
gender char(7) not null,
birthdate datetime null,
qqid# char(20) not null
);

另一张为聊天记录

CREATE TABLE qq
(
qqid# char(20) not null,
timeforchat datetime not null,
chat text not null,
font varchar(100) not null
)


现在想在这两个数据库间建立一个主键外键的关系,

但是聊天记录表无法把qqid#当成主键,只能把(qqid#,timeforchat)当成主键

求问怎么把这两个表的qqid#关联起来

或者有没有什么其他的建立聊天记录表的方法可以借鉴?

------解决方案--------------------

CREATE TABLE users
(
    id int not null,
    name char(10) not null,
    gender char(7) not null,
    birthdate datetime null,
    qqid char(20) not null primary key 
);

GO

CREATE TABLE qq
(
qqid char(20) not null constraint FK_QQ foreign key references users(qqid),
timeforchat datetime not null,
chat text not null,
font varchar(100) not null,
constraint PK_QQ primary key(qqid,timeforchat)
);



聊天记录表的qqid参照users表的qqid建立外键;
聊天记录表的qqid + timeforchat为联合主键。

------解决方案--------------------
主表的qqid#建一索引,这样,从表的qqid#就可以建成外键了。