oracle书店图书销售管理数据库.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
根据提供的文档内容,我们可以将其中的关键知识点归纳如下: ### 一、项目背景 - **目的**:本项目旨在为一家小镇书店开发一个图书销售管理系统,帮助书店实现从传统手工记账到数字化管理的转变。 - **需求分析**:随着信息技术的发展,特别是互联网技术的普及,传统的管理模式已经无法满足日益增长的需求。因此,书店希望通过引入计算机系统来提高工作效率和服务质量。 ### 二、系统用表 #### 1. 藏书信息表 <book> - **表结构**: - bookno: 图书编号(主键) - bookname: 书名(唯一) - species: 图书分类 - bookprice: 图书单价 - publish_house: 出版社 - publishdate: 出版日期 - author: 作者 - number: 藏书量 - **SQL建表语句**: ```sql CREATE TABLE book ( bookno VARCHAR2(6) PRIMARY KEY, bookname VARCHAR2(20) UNIQUE, species VARCHAR2(5) NOT NULL, bookprice NUMBER(7,2) NOT NULL, publish_house VARCHAR2(20) NOT NULL, publishdate DATE NOT NULL, author VARCHAR2(10) NOT NULL, number NUMBER CHECK (number >= 0) ); ``` - **表结构调整**: - 修改图书分类列species的长度为15 - 修改书名字段bookname的长度为20 - 修改藏书量字段number的数据类型为NUMBER(4) #### 2. 进货表 <stock> - **表结构**: - iono: 进货编号(主键) - bookno: 图书编号(外键) - numbers: 进货量 - in_price: 进价 - in_time: 进货时间 - **SQL建表语句**: ```sql CREATE TABLE stock ( iono VARCHAR2(6) PRIMARY KEY, bookno VARCHAR2(6), numbers NUMBER CHECK (numbers >= 0), in_price NUMBER NOT NULL, in_time DATE NOT NULL, CONSTRAINT fk_stock FOREIGN KEY (bookno) REFERENCES book (bookno) ); ``` #### 3. 出货表 <sold> - **表结构**: - oono: 出货编号(主键) - bookno: 图书编号(外键) - numbers: 出货量 - out_price: 售卖价格 - out_time: 售卖时间 - **SQL建表语句**: ```sql CREATE TABLE sold ( oono VARCHAR2(6) PRIMARY KEY, bookno VARCHAR2(6), numbers NUMBER CHECK (numbers >= 0), out_price NUMBER NOT NULL, out_time DATE NOT NULL, CONSTRAINT fk_sold FOREIGN KEY (bookno) REFERENCES book (bookno) ); ``` #### 4. 用户表 <users> - **表结构**: - user_id: 用户ID(主键) - username: 用户名 - password: 密码 - role: 角色 - **SQL建表语句**(假设): ```sql CREATE TABLE users ( user_id VARCHAR2(6) PRIMARY KEY, username VARCHAR2(20) UNIQUE, password VARCHAR2(20) NOT NULL, role VARCHAR2(10) NOT NULL ); ``` ### 三、数据初始化 - **初始化藏书信息表** - 示例:INSERT INTO book VALUES ('B001', '计算机原理', '计算机', 50.00, '人民邮电出版社', TO_DATE('2022-01-01', 'YYYY-MM-DD'), '张三', 100); - **初始化进货表** - 示例:INSERT INTO stock VALUES ('I001', 'B001', 50, 30.00, TO_DATE('2022-01-05', 'YYYY-MM-DD')); - **初始化出货表** - 示例:INSERT INTO sold VALUES ('O001', 'B001', 20, 50.00, TO_DATE('2022-01-08', 'YYYY-MM-DD')); - **初始化用户表** - 示例:INSERT INTO users VALUES ('U001', 'admin', 'admin123', 'manager'); ### 四、索引 - 可以为经常用于查询操作的列建立索引,如book表中的bookname字段、users表中的username字段等。 ### 五、视图 #### 1. 进货信息视图 <stock_infor> - **视图定义**:SELECT * FROM stock; - **目的**:简化对进货表stock的访问,提供更友好的查询方式。 #### 2. 出货信息视图 <sold_infor> - **视图定义**:SELECT * FROM sold; - **目的**:同上,简化对出货表sold的访问。 #### 3. 盈利视图 <profit> - **视图定义**:SELECT b.bookname, s.numbers * (b.bookprice - s.in_price) AS profit FROM book b JOIN stock s ON b.bookno = s.bookno; - **目的**:计算每本书的盈利情况。 ### 六、过程 - **过程定义**:用于执行一系列SQL语句或逻辑处理。例如,可以定义一个过程用于批量更新图书价格。 ```sql CREATE OR REPLACE PROCEDURE update_book_price (p_bookno IN VARCHAR2, p_new_price IN NUMBER) IS BEGIN UPDATE book SET bookprice = p_new_price WHERE bookno = p_bookno; COMMIT; END; ``` ### 七、函数 - **函数定义**:用于返回单一值的操作。例如,可以定义一个函数用于计算库存总量。 ```sql CREATE OR REPLACE FUNCTION get_total_stock RETURN NUMBER IS total_stock NUMBER; BEGIN SELECT SUM(number) INTO total_stock FROM book; RETURN total_stock; END; ``` ### 八、包 - **包定义**:用于封装一组相关的对象,包括过程、函数等。例如,可以定义一个包用于管理用户的登录和权限验证。 ```sql CREATE OR REPLACE PACKAGE user_management AS TYPE user_record IS RECORD (user_id VARCHAR2(6), username VARCHAR2(20), password VARCHAR2(20), role VARCHAR2(10)); PROCEDURE login (user_id IN VARCHAR2, username IN VARCHAR2, password IN VARCHAR2, role OUT VARCHAR2); FUNCTION validate_password (user_id IN VARCHAR2, password IN VARCHAR2) RETURN BOOLEAN; END user_management; CREATE OR REPLACE PACKAGE BODY user_management AS PROCEDURE login (user_id IN VARCHAR2, username IN VARCHAR2, password IN VARCHAR2, role OUT VARCHAR2) IS v_user user_record; BEGIN SELECT * INTO v_user FROM users WHERE user_id = user_id AND username = username AND password = password; role := v_user.role; EXCEPTION WHEN NO_DATA_FOUND THEN role := NULL; END; FUNCTION validate_password (user_id IN VARCHAR2, password IN VARCHAR2) RETURN BOOLEAN IS v_password VARCHAR2(20); BEGIN SELECT password INTO v_password FROM users WHERE user_id = user_id; IF v_password = password THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; END user_management; ``` ### 九、用户创建 #### 1. 创建用户 - **SQL语句**: ```sql CREATE USER user1 IDENTIFIED BY password1 DEFAULT TABLESPACE users DEFAULT TEMPORARY TABLESPACE temp; ``` #### 2. 创建角色 - **SQL语句**: ```sql CREATE ROLE manager; ``` #### 3. 授予角色权限 - **SQL语句**: ```sql GRANT manager TO user1; ``` ### 十、复杂功能实现 - 例如,可以实现一个复杂的查询功能,统计每个类别的图书总销售额,并按照销售额降序排列。 ```sql SELECT b.species, SUM(s.numbers * b.bookprice) AS total_sales FROM book b JOIN sold s ON b.bookno = s.bookno GROUP BY b.species ORDER BY total_sales DESC; ``` ### 十一、Oracle体系结构 - **概述**:Oracle数据库的体系结构主要包括实例和数据库两大部分。实例是指在内存中运行的软件进程集合,而数据库则由一系列磁盘文件组成。 - **组成部分**: - **实例**: - 内存结构:SGA(系统全局区)、PGA(程序全局区) - 后台进程:DBWR(数据库写入进程)、LGWR(日志写入进程)、SMON(系统监控进程)等 - **数据库**: - 数据文件 - 控制文件 - 重做日志文件 - 参数文件 以上是对“oracle书店图书销售管理数据库”项目的详细解析,涵盖了从数据库设计到具体实现的各个方面。希望这些信息能够帮助你更好地理解和掌握该项目的核心内容。
- 粉丝: 0
- 资源: 4万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- nyakumi-lewd-snack-3-4k_720p.7z.002
- 现在微信小程序能用的mqtt.min.js
- 基于MPC的非线性摆锤系统轨迹跟踪控制matlab仿真,包括程序中文注释,仿真操作步骤
- 基于MATLAB的ITS信道模型数值模拟仿真,包括程序中文注释,仿真操作步骤
- 基于Java、JavaScript、CSS的电子产品商城设计与实现源码
- 基于Vue 2的zjc项目设计源码,适用于赶项目需求
- 基于跨语言统一的C++头文件设计源码开发方案
- 基于MindSpore 1.3的T-GCNTemporal Graph Convolutional Network设计源码
- 基于Java的贝塞尔曲线绘制酷炫轮廓背景设计源码
- 基于Vue框架的Oracle数据库实训大作业设计与实现源码