首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问上小弟我这张表格该怎么设计,或者增加什么约束条件

2012-09-03 
请教下我这张表格该如何设计,或者增加什么约束条件?各个表的关系 截图如下 http://115.com/file/be96t8it#

请教下我这张表格该如何设计,或者增加什么约束条件?
各个表的关系 截图如下 http://115.com/file/be96t8it# (咱论坛啥时候能开放上传图片呢??大家辛苦下到网盘下吧,就一张图)

首先,这个数据库管理教室中的座位

其中 table表,只有一个字段,就是桌子编号,存1-95这95个编号。no自然为主键

student表记录学生信息,分别是姓名(因能保证肯定不会有重名的,所以设置主键),性别,联系方式等等

access表的4个字段是,桌子编号、姓名、预约开始日期,预约结束日期。(桌子编号和姓名共同为主键)

表与表之间的参照关系,图中可以看出

——————————————————————————————

我这个数据库的作用是:要将学生预订座位的信息记录在access表中。

但要保证:

不允许出现同一人预订一张桌子的信息出现多次(目前我这样设计,可以避免这样.因为no和name共同为主码,不允许全相同)

no name srart end
10 张三 2012-5-1 2012-9-1
10 张三 2012-3-2 2012-3-9

而且
不允许在access表中插入这样的非法数据(即,同一张桌子,在某一时刻被多人同时预订)

比如

no name srart end
10 张三 2012-5-1 2012-9-1
10 李四 2012-6-1 2012-6-3


但目前,我这样设计,完全没法控制这种非法情况的出现

另外,我也不知道怎么约束,结束时间必须晚于开始日期


大家可以看看如何设计这几个表,或者提供其他的解决方案也可以。多谢啦


[解决办法]

SQL code
create table [table]([no] int primary key)create table student(id int primary key,name varchar(10),.....)create table access(id int foreign key references student(id),[no] int foreign key references [table]([no]),name varchar(20),srartdate datetime ,enddate datetime,--比如说要求开始时间和结束时间差必须是大于五小时constraint no_name_access primary key([no],name))--这样来吧,至于那个enddate必须大于startdate,你可以写个触发器,或者把enddate作为一个计算列 

热点排行