SQL Server 数据完整性设计与约束实现

需积分: 10 0 下载量 122 浏览量 更新于2024-09-15 收藏 307KB DOC 举报
"本资源是一份关于SQL Server中设计数据完整性的PPT,涵盖了使用约束和触发器来确保数据完整性的方法。实验内容包括为学生基本资料表S、课程信息数据表C和学生选课数据表SC设计约束,并创建一个在删除学生记录时联动删除选课记录的触发器。实验环境基于Windows 2000和SQL Server 2000,提供了详细的步骤指导。" 在SQL Server中,数据完整性是保证数据库中数据准确无误的关键概念。设计数据完整性是为了确保数据的正确性、一致性以及可靠性。在给定的文件中,实验主要涉及了三种类型的数据完整性约束: PRIMARY KEY,UNIQUE,CHECK,以及FOREIGN KEY,同时也提到了使用触发器来维护数据完整性。 1. PRIMARY KEY约束:这是用于定义表中的唯一标识符,不允许有重复值且不能为NULL。在学生基本资料表S中,SNO被定义为 PRIMARY KEY,表示每个学生的学号都是唯一的。 2. UNIQUE约束:保证列中的值都是唯一的,但允许NULL值。SNO同时也被定义为UNIQUE,确保每个学生都有独一无二的学号。 3. CHECK约束:用于限制列中可接受的值范围。例如,对于SNO,要求由字母开头,后面跟0-9数字,且总长度为5位;对于TEL,要求格式为“02-7777”。在课程信息数据表C中,CNO要求以"C"开头,后面跟0-9数字。 4. FOREIGN KEY约束:用于定义两个表之间的参照完整性,确保数据的关联性。在SC表中,CNO和SNO作为FOREIGN KEY,分别参照C表的CNO和S表的SNO,确保学生选课数据与学生和课程数据对应。 5. 触发器:在表S上创建了一个名为studentdelete的触发器,当删除一个学生记录时,会自动从SC表中删除对应的选课记录,这样可以保持数据的一致性。 此外,文件还包含了创建数据库"book-shop"及其数据表"book"的例子,其中书号列为标识列,出版社字段的值受限制。创建这个表的SQL命令示例如下: ```sql CREATE TABLE book ( book_id INT IDENTITY(1000,1) PRIMARY KEY, book_name VARCHAR(255), publisher VARCHAR(255) CHECK (publisher IN ('高教', '电子', '机械', '清华')), unit_price DECIMAL(10,2), quantity INT, total_price AS unit_price * quantity, user VARCHAR(255), email VARCHAR(255) ); ``` 通过这些约束和触发器,我们可以确保在SQL Server中存储的数据满足特定的业务规则,从而提高数据质量和系统的稳定性。