实验二数据库的定义实验报告

本文档详细记录了一次数据库设计的实验,涉及建立表间关系,如主键和外键,并为各表创建约束以确保数据完整性。通过示例展示了如何为学生表、课程表、成绩表、班级表和教师表创建约束,包括字段的默认值、数据类型和检查条件。此外,还提供了创建这些表的SQL代码。
摘要由CSDN通过智能技术生成
2007-03-31 16:26:54

字体变小 字体变大

实验二数据库的定义实验报告

1. 建立表之间的关系:

1)主键(primary key

学生表和班级表的主键:因为学生表的学号列可以唯一的标识学生表的每一行,这是因为对于每个学生来讲学号是唯一的,因此,学号可以作为学生表的主键,同样,班级表的班号也可以单独作为班级表的主键。

授课表和成绩表的主键:这两个表均无法用单一列作主键,因为在授课表中同一门课程会有多个班上课,同一个老师也会给不同的班上不同的课,因此只有用班号,课号,教师号的组合才能唯一地标识授课表的每一行,因此授课表的主键由课号,班号,教师号3个列组合而成。同样,成绩表的主键只能由学号,班号2个列组合而成。

2外键:班级表中的列班号是班级表的主键,而学生表中的班号是学生表的外键。学生必须属于一个特定的班级。一旦在设计数据库是确定了班级表和学生表的主键和外键的这种关系,在给学生表输入数据时,学生所在的班号必须存在于班级表中,否则,该学生的数据无法输入到系统中,这就有效地避免了由于无意间数据输入的错误,保证了数据库中数据的完整性。

班号列是班号表的主键,班号列也是班级表的主键,在授课表中的的课号和班号列组合起来可定义为授课表的外键。同样,成绩表的主键可以是学号和课号两个列的组合。

2.为各表创建约束

/*为学生表创建约束*/

CONSTRAINT [CK_学生] CHECK ([学号] like '[S][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),

CONSTRAINT [CK_学生_1] CHECK ([班号] like '[S][0-9][0-9][0-9][0-9][0-9][0-9]'),

CONSTRAINT [CK_学生_性别] CHECK ([性别] = '' or [性别] = '')

/*为课程表创建约束*/

CONSTRAINT [DF_课程_所属系] DEFAULT ('机电学院') FOR [所属系],

CONSTRAINT [DF_课程_课时] DEFAULT (40) FOR [课时],

CONSTRAINT [CK_课程_课号] CHECK ([课号] like '[0-9][0-9][0-9][0-9][0-9][0-9]'),

CONSTRAINT [CK_课程_课时] CHECK ([课时] <= 30 and [课时] >= 80)

/*为成绩表创建约束*/

CONSTRAINT [CK_成绩_成绩] CHECK ([成绩] <= 0 and [成绩] >= 100)

/*为班级表创建约束*/

CONSTRAINT [DF_班级表_专业] DEFAULT ('机械制造及自动化') FOR [专业],

CONSTRAINT [DF_班级表_所在系] DEFAULT ('机电学院') FOR [所在系],

CONSTRAINT [DF_班级表_人数] DEFAULT (40) FOR [人数],

CONSTRAINT [CK_班级表] CHECK ([人数] <= 0 and [人数] >= 100)

/*为教师表创建约束*/

CONSTRAINT [DF_教师_性别] DEFAULT (N'') FOR [性别],

CONSTRAINT [DF_教师_职称] DEFAULT ('讲师') FOR [

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值