### 数据库设计与SQL语句创建
#### 一、课程设计背景及目的
《SQL Server 2005》作为计算机及其相关专业中的一门重要实践课程,涉及了大量的计算机基础知识和理论,包括数据库设计、查询操作、流程控制、函数、表、视图、索引、游标、存储过程、触发器、备份与恢复、导入导出、安全性设置以及事务处理等内容。本课程旨在让学生能够熟练掌握这些理论知识,并能够实际操作各种数据库操作,为未来的企事业单位信息化管理工作打下坚实的基础。
#### 二、课程设计的具体内容
##### (一)数据库设计
1. **需求分析**:
- **目标**:开发一个学生宿舍管理系统,用于管理学生的住宿信息、宿舍状态、财务管理、故障报修以及学生夜归记录等。
- **具体功能**:主要包括对学生基本信息、宿舍信息、财务信息、故障报修、夜归记录和离校情况的登记与管理。
2. **概念结构设计**:
- **实体定义**:
- **管理员表**:包含管理员编号、姓名、账号、密码和联系方式。
- **学生表**:包含学号、姓名、性别、年龄、所在宿舍楼号、宿舍号和联系方式。
- **宿舍信息表**:包含宿舍楼号、宿舍号、宿舍费用和是否有故障报修。
- **入住情况表**:包含宿舍楼号和当前入住的人数。
- **离校情况表**:包含离校编号、宿舍楼号、宿舍号、学生学号和姓名。
- **夜归情况表**:包含夜归编号、宿舍楼号、宿舍号、学生学号和姓名。
- **报修情况表**:包含报修编号、宿舍楼号、宿舍号和报修结果。
3. **逻辑结构设计**:
- 根据概念结构设计,确定了各个表之间的关系,并指定了每个表的主键,确保数据的唯一性和完整性。
4. **物理结构设计**:
- **数据库创建**:使用T-SQL语句创建数据库“学生宿舍管理系统”,并指定数据文件的位置、初始大小、最大大小和增长方式。
- **表的创建与主键设置**:同样使用T-SQL语句创建各个表,并为每个表设置合适的主键,例如管理员表中的管理员编号作为主键,学生表中的学号作为主键等。
#### 三、具体SQL语句示例
1. **创建数据库**:
```sql
CREATE DATABASE 学生宿舍管理系统
ON
(NAME = '学生宿舍管理系统_data1',
FILENAME = 'e:\SQL\学生宿舍管理系统_data1.mdf',
SIZE = 20MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
LOG ON
(NAME = '学生宿舍管理系统_log',
FILENAME = 'e:\SQL\学生宿舍管理系统_log.ldf',
SIZE = 20MB,
FILEGROWTH = 20%);
```
2. **创建表**:
- **管理员表**:
```sql
CREATE TABLE 管理员表
(
管理员编号 CHAR(8) NOT NULL PRIMARY KEY,
姓名 CHAR(10) NOT NULL UNIQUE,
性别 CHAR(2),
账号 CHAR(20),
密码 CHAR(20),
联系方式 CHAR(20)
);
```
- **学生表**:
```sql
CREATE TABLE 学生表
(
学号 CHAR(8) NOT NULL PRIMARY KEY,
姓名 CHAR(10) NOT NULL,
性别 CHAR(2) NOT NULL DEFAULT '男',
年龄 CHAR(40),
宿舍楼号 CHAR(6),
宿舍号 CHAR(10),
联系方式 CHAR(20)
);
```
- **宿舍信息表**:
```sql
CREATE TABLE 宿舍信息表
(
宿舍号 CHAR(10) NOT NULL PRIMARY KEY,
宿舍楼号 CHAR(6) NOT NULL,
宿舍费用 CHAR(10),
是否有故障报修 CHAR(2) CHECK (是否有故障报修为 '是' OR 是否有故障报修为 '否')
);
```
3. **其他表创建**(示例部分):
- **入住情况表**:
```sql
CREATE TABLE 入住情况表
(
宿舍楼号 CHAR(6) NOT NULL PRIMARY KEY,
入住总人数 CHAR(6) NOT NULL
);
```
- **离校情况表**:
```sql
CREATE TABLE 离校情况表
(
离校编号 CHAR(4) NOT NULL PRIMARY KEY,
宿舍楼号 CHAR(6),
宿舍号 CHAR(10),
学号 CHAR(8),
姓名 CHAR(10)
);
```
通过以上步骤,我们可以看到整个数据库设计的过程,从需求分析到物理结构设计,每一环节都是紧密相连的。这不仅有助于学生理解数据库设计的整体框架,也能让他们在实践中掌握SQL语言的实际应用,为今后的工作奠定良好的基础。