### 数据库实验报告知识点解析
#### 实验目的
1. **熟悉Oracle环境**:通过本实验,学生将深入了解Oracle数据库管理系统的基本操作环境。这包括如何启动Oracle服务、使用Oracle SQL*Plus工具以及PL/SQL Developer等开发环境进行数据库管理与查询。
2. **熟练掌握和使用PL-SQL建立数据库基本表**:此目标要求学生能够熟练运用PL/SQL语言来创建各种类型的数据库表。这不仅包括对基本表结构的设计,还包括如何定义主键、外键等约束条件以确保数据的完整性和一致性。
3. **使用PL/SQL Developer操作数据库**:PL/SQL Developer是一款专为Oracle设计的强大集成开发环境。学会使用该工具可以帮助学生更高效地编写、调试和优化PL/SQL代码。
4. **熟练掌握SQL建立关系,及增删改数据**:除了创建表之外,学生还需掌握如何使用SQL语句在这些表之间建立关联关系,例如一对多、多对多等。同时,学生还需要了解如何使用INSERT、UPDATE和DELETE语句对数据库中的数据进行增删改操作。
#### 实验平台
- **PL-SQL Developer**:一款功能强大的Oracle数据库前端工具,用于创建、编辑、编译、执行、调试PL/SQL代码。
- **Windows操作系统**:本次实验使用的操作系统平台。
#### 实验步骤、问题及解决方案
1. **以SYSTEM登录数据库**:使用管理员账号(通常为“SYSTEM”)登录Oracle数据库,以便拥有足够的权限来进行后续的操作。
2. **注册用户**:在Oracle环境中创建新的数据库用户,这通常涉及到设置用户名、密码以及授予必要的权限。
3. **重新以新用户登录数据库**:使用新创建的用户身份登录数据库,以便后续操作能够在该用户的上下文中进行。
4. **建立数据库表**:根据给定的关系模式创建数据库表,包括:
- **图书分类**:包含图书分类号和类名两个字段。
- **书目**:包括ISBN、书名、作者、出版单位、单价和图书分类号,其中图书分类号作为外键引用图书分类表中的图书分类号。
- **图书**:记录了图书编号、ISBN、是否借出和备注信息。是否借出字段通过CHECK约束限制只能取‘是’或‘否’。
- **读者**:包含了借书证号、姓名、单位、性别、地址、联系电话和身份证编号等字段。其中,性别字段通过CHECK约束限制只能取‘男’或‘女’;联系电话和身份证编号分别通过正则表达式约束确保其格式正确。
- **借阅**:记录了借阅流水号、借书证号、图书编号、借书日期、归还日期、罚款分类号和备注等信息。借书日期字段设置了NOT NULL约束。
- **罚款分类**:记录罚款分类号、罚款名称和罚金。
- **预约**:记录预约流水号、借书证号、ISBN和预约时间。
5. **各关系输入数据**:使用INSERT INTO语句向表中添加数据。对于日期型字段,需要使用特定的格式化函数来确保数据的正确性。
##### 出现的问题及解决方案
1. **表唯一的主键被外部引用**:在删除表时,如果某个表是其他表的外键依赖,则需要先删除依赖它的表,再删除当前表。这是因为数据库会自动维护外键约束,不允许删除正在被其他表引用的主键。
2. **标识符无效**:这通常是由于SQL语句中多了一个不必要的逗号或者语法错误导致的。解决方法是检查并删除多余的逗号,确保SQL语句的语法正确无误。
3. **违反完整性约束,未找到父项关键字**:当尝试插入具有外键的数据时,若父表中不存在相应的主键,则会触发此错误。正确的做法是在插入子表数据之前,先确保所有必要的父表数据已经存在。一种常用的方法是先插入只有主键的行,然后基于这些主键插入外键相关的数据。
通过上述步骤和注意事项的学习与实践,学生将能够更深入地理解Oracle数据库系统的操作方式,并掌握利用SQL和PL/SQL进行数据库设计与管理的基本技能。