根据提供的文档信息,以下是从标题、描述、标签和部分内容中提取的关键知识点:
### 数据库安全性与完整性
#### 实验背景
本次实验旨在帮助学生深入理解数据库的安全性和完整性,并通过实践操作掌握具体的管理方法。数据库安全性涉及到如何保护数据不被未经授权的访问、修改或泄露;而数据库完整性则关注于确保数据的准确性和一致性。
#### 实验目的
1. **深化理解**:加深对数据库安全性和完整性的理论理解。
2. **用户与角色管理**:掌握在SQL Server环境中管理和配置用户、角色的方法。
3. **权限管理**:学会设置和管理针对数据库的操作权限。
4. **完整性控制**:熟悉通过SQL语句实现数据完整性控制的技术。
#### 实验内容概览
1. **设置身份验证模式**:选择合适的服务器身份验证模式(如Windows认证模式或混合认证模式)。
2. **登录用户管理**:
- 创建登录账户。
- 配置账户属性。
3. **数据库用户管理**:
- 将登录用户添加到数据库中作为数据库用户。
- 查看和管理用户信息。
4. **角色管理**:
- 创建角色。
- 授予角色特定的权限。
5. **定义完整性约束**:
- 在表中定义主键、外键等约束。
- 使用CHECK约束确保数据符合特定条件。
- 定义默认值和唯一性约束。
#### 具体操作示例
1. **设置SQL Server服务器身份验证模式**:
- 选择Windows认证模式或混合认证模式。
- 配置相应的参数。
2. **登录用户管理**:
- 使用T-SQL命令或SQL Server Management Studio创建登录用户。
- 配置密码策略和其他属性。
3. **数据库用户管理**:
- 使用`sysusers`系统表查看现有用户信息。
- 使用T-SQL命令将登录用户添加到数据库中。
4. **角色管理**:
- 创建角色并分配给用户。
- 使用GRANT命令授予角色特定的权限。
5. **定义完整性约束**:
- 例如,在`student`表中定义主键:
```sql
CREATE TABLE student (
sno CHAR(9) PRIMARY KEY,
sname CHAR(20) NOT NULL,
ssex CHAR(2)
);
```
- 在`course`表中定义唯一性约束:
```sql
CREATE TABLE course (
cno CHAR(9),
cname CHAR(20) UNIQUE
);
```
- 在`score`表中定义CHECK约束:
```sql
CREATE TABLE score (
score INT CHECK (score >= 0 AND score <= 100),
cid CHAR(9) CHECK (cid LIKE '[0-9]%')
);
```
6. **定义完整性约束命名子句**:
- 例如,限制`student`表中的`gender`字段只接受“男”或“女”:
```sql
ALTER TABLE student ADD CONSTRAINT chk_gender CHECK (ssex IN ('男', '女'));
```
- 定义默认值约束:
```sql
ALTER TABLE student ADD birthdate DATE DEFAULT GETDATE();
```
通过以上内容的学习和实践,学生不仅能够深入理解数据库安全性和完整性的重要性,还能掌握实际操作中的具体方法和技术,从而更好地管理和保护数据库中的数据。