这是一个留言板系统的数据库关系表想实现的功能是能看到是谁发送的留言,以及指定的接收人才能接收到留言,具体问题如下所示create database message_boarduse message_board--用户表
create table userDef
(
userid int identity(1,1) primary key,
--userid int identity(1,1),
username varchar(20) not null,
--constraint PK_userid_username primary key(userid,username)
--CONSTRAINT [PK_userid_username] PRIMARY KEY CLUSTERED (userid,username) ON [PRIMARY] 
userpwd varchar(20) not null,
userpower varchar(6) default 'guest',    --权限默认为普通用户,管理员为admin
pwd_question varchar(20) not null,         --密码问题
pwd_answer varchar(20) not null                 --密码答案
)
--试过联合主键改变结构,但结果也不可以,具体问题在下面
alter table userDef add constraint PK_userid_username primary key(userid,username)--发送人表
create table sendPerson
(
id int identity(1,1),
send_over_userid int not null primary key foreign key references userDef(userid)    --发送人的用户编号
)--信息表
create table message
(
messageid int identity(1,1) primary key,
send_over_userid int not null foreign key references sendPerson(send_over_userid),     --发送人的用户编号
take_over_userid int not null foreign key references userDef(userid),     --接收人的用户编号
title varchar(100),
content varchar(100),
date_time datetime 
)drop table userDef
drop table sendPerson
drop table messageselect * from userDef
select * from sendPerson
select * from messageinsert into userDef(username,userpwd,userpower,pwd_question,pwd_answer) values('farseer','123','admin','123','123')
insert into userDef(username,userpwd,pwd_question,pwd_answer) values('aaa','aaa','123','123')
--插入如下两条是为了测试为何查询不出结果
insert into sendPerson(send_over_userid) values(1)
--为啥下条语句插入不了,说是列名take_over_userid无效
insert into sendPerson(send_over_userid,take_over_userid,title,content,date_time) values(1,2,'标题','正文',getDate())--为啥下面两条语句查询不出结果,但又不报错,只是一个take_over_userid列名摆在那里,是不是查询语句写错了?但这是从企业管理器的试图里拷贝过来的
--如果是一个从表里不让有两个外键,那我的数据库设计的就有问题,请各位朋友给个能实现此功能的数据库设计表
SELECT dbo.message.take_over_userid
FROM dbo.userDef INNER JOIN
      dbo.sendPerson ON 
      dbo.userDef.userid = dbo.sendPerson.send_over_userid INNER JOIN
      dbo.message ON dbo.userDef.userid = dbo.message.take_over_userid AND 
      dbo.sendPerson.send_over_userid = dbo.message.send_over_userid
where dbo.userDef.username='aaa'
SELECT dbo.message.take_over_userid
FROM dbo.userDef INNER JOIN
dbo.message ON dbo.userDef.userid = dbo.message.take_over_userid
where u.userid=1
--以下是从书上参考的为啥这样就能查出来,而我的就查不出来???
use pubsselect * from titles  
select * from titleauthor
select * from authorsselect a.au_id,a.au_lname,a.au_fname,t.title_id,t.title 
from titleauthor ta inner join titles t 
on ta.title_id=t.title_id
inner join authors a
on ta.au_id=a.au_id
where a.au_fname='Cheryl'