oracle数据库 练习一

来源:互联网 发布:替代windows cmd 编辑:程序博客网 时间:2024/06/06 03:17

一、网络服务销售系统E-R图

案例分析:

    

   现有一个关于网络服装销售系统的项目,要求我们开发数据库部分。系统所能达到的功能包括以下几个方面:

 

1.客户注册功能。客户在购物之前必须先注册,然后才能浏览到所以库存服装信息,如款式,价格等。

 

2.顾客可以浏览到库存服装信息,如款式,价格,所剩数量等。

 

3.顾客可以订购自己喜欢的服装,并可以在未付款之前修改自己的选购信息。商家可以根据顾客是否付款,通过顾客提供的通讯地址给顾客邮

寄其所订购的服装。

 

根据案例分析过程提取实体集和它们之间的联系,画出相应的ER图。(尽情发挥)

二、数据库用户

1.创建一个名为DAVID的用户,口令为davidpass,并授予其连接数据库和创建表对象的权限。同时授予其访问另一用户MARTIN的表TEST的权限.

[]作业要求

(1)作业以sql脚本的方式上交,形式为班级名+学生姓名+章节号,如:“35张三5.sql.

(2)对于题目中未给出的数据对象结构及数据,要创建数据对象并给出测试数据,保证代码可直接执行.

三、创建数据表

1.创建如下数据库表 bbsUsers、bbsTopic、bbsReply、bbsSection

表  名

作  用

备  注

用户表

bbsUsers

存储注册的用户信息

用户注册后才能发贴和回贴

主贴表

bbsTopic

存储主贴的内容

因主贴和跟贴有些内容不同,因此分为两张表

跟贴表

bbsReply

存储跟贴的内容

版块表

bbsSection

存储版块的信息

包括版块名、版主等信息

 

各表的结构如下:

表  名

bbsSection (版块表)

主  键

SID

列  名

数据类型

长度

是否允许为空

描  述

SID

int

4

不允许

版块编号,自动增长

Sname

varchar2

32

不允许

版块名称

SmasterID

int

4

不允许

版主的用户ID,外键;引用用户表bbsUsers的UID

Sprofile

varchar2

20

允许

版面简介

SclickCount

int

4

允许

点击率

StopicCount

int

4

允许

发贴数

 

表名

bbsReply(回贴表)

主键

RID

列名

数据类型

长度

是否允许为空

默认值

描述

RID

int

4

不允许

 

自动编号, 贴子编号

RtID

int

4

不允许

 

主贴ID;外键,引用bbsTopic表的主键TID

RsID

int

4

不允许

 

版块ID;外键,引用bbsSection表的主键SID

RuID

int

4

不允许

 

回贴人ID, 外键,引用bbsUsers表的主键UID

Rface

int

4

允许

 

回贴表情

Rcontents

varchar2

30

不允许

 

正文,必须大于6个字符

Rtime

date

8

允许

当天

回贴时间

RclickCount

int

4

允许

 

点击数

 

表  名

bbsTopic(主贴表)

主  键

TID

列  名

数据类型

长  度

是否允许为空

默认值

描  述

TID

int

4

不允许

 

贴子编号,自动增长

TsID

int

4

不允许

 

版块编号;外键,引用bbsSection表的主键SID

TuID

int

4

不允许

 

发贴人ID;外键,引用bbsUsers表的主键UID

TreplyCount

int

4

允许

 

回复数量 

Tface

int

4

允许

 

发贴表情

Ttopic

varchar2

20

不允许

 

标题

Tcontents

varchar2

30

不允许

 

正文,必须大于6个字符

Ttime

datetime

8

允许

当天

发贴时间

TclickCount

int

4

允许

0

点击数

Tstate

int

4

不允许

1

状态,例如是否被锁,是否为精华贴

TlastReply

date

8

允许

 

最后回复时间,必须晚于发贴时间

 

2、添加约束(bbsUsers)

2-1、非空约束。某列是否允许为空,该约束已在建表时指定(NULL)。

2-2、主键约束。UID列为主键。

2-3、默认约束。

初始密码:默认为6个“8”即888888。

性别:默认为1(男)。

注册日期:默认为当前日期。

用户状态:默认为0(离线)。

用户级别:默认为1(星级)。

用户积分:默认为20点。

2-4、检查约束。

密码:至少6位。

电子邮件:必须包含“@”字符。

2-5、外键约束。本表无外键。 

2-6、参照bbsUsers的约束,为其余三张表添加相应约束


习题解析:

/*
Navicat Oracle Data Transfer
Oracle Client Version : 11.2.0.1.0


Source Server         : david
Source Server Version : 110200
Source Host           : localhost:1521
Source Schema         : DAVID


Target Server Type    : ORACLE
Target Server Version : 110200
File Encoding         : 65001


Date: 2017-07-20 20:33:24
*/

1.

-- ------------------------------ Table structure for BBSUSERS-- ----------------------------DROP TABLE "DAVID"."BBSUSERS";CREATE TABLE "DAVID"."BBSUSERS" ("USERID" NUMBER(4) NOT NULL ,"UPASS" VARCHAR2(12 BYTE) NULL ,"GENDER" CHAR(1 BYTE) DEFAULT 1  NULL ,"UDATE" DATE DEFAULT sysdate  NULL ,"USTATE" CHAR(1 BYTE) DEFAULT 0  NULL ,"UGRADE" CHAR(1 BYTE) DEFAULT 1  NULL ,"USCORE" NUMBER(10) DEFAULT 20  NULL ,"EMAIL" VARCHAR2(20 BYTE) NULL )-- ------------------------------ Checks structure for table BBSUSERS-- ----------------------------ALTER TABLE "DAVID"."BBSUSERS" ADD CHECK ("USERID" IS NOT NULL);ALTER TABLE "DAVID"."BBSUSERS" ADD CHECK (length(Upass)>6);ALTER TABLE "DAVID"."BBSUSERS" ADD CHECK (instr(email,'@') > 0);


2.

-- ------------------------------ Table structure for BBSREPLY-- ----------------------------DROP TABLE "DAVID"."BBSREPLY";CREATE TABLE "DAVID"."BBSREPLY" ("RID" NUMBER(4) NOT NULL ,"RTID" NUMBER(4) NOT NULL ,"RSID" NUMBER(4) NOT NULL ,"RUID" NUMBER(4) NOT NULL ,"RFACE" NUMBER(4) NULL ,"RCONTENTS" VARCHAR2(30 BYTE) NULL ,"RTIME" DATE DEFAULT sysdate  NULL ,"RCLICKCOUNT" NUMBER(4) NULL )-- ------------------------------ Checks structure for table BBSREPLY-- ----------------------------ALTER TABLE "DAVID"."BBSREPLY" ADD CHECK (length(Rcontents)>6);ALTER TABLE "DAVID"."BBSREPLY" ADD CHECK ("RID" IS NOT NULL);ALTER TABLE "DAVID"."BBSREPLY" ADD CHECK ("RTID" IS NOT NULL);ALTER TABLE "DAVID"."BBSREPLY" ADD CHECK ("RSID" IS NOT NULL);ALTER TABLE "DAVID"."BBSREPLY" ADD CHECK ("RUID" IS NOT NULL);-- ------------------------------ Foreign Key structure for table "DAVID"."BBSREPLY"-- ----------------------------ALTER TABLE "DAVID"."BBSREPLY" ADD FOREIGN KEY ("RSID") REFERENCES "DAVID"."BBSSECTION" ("SID");ALTER TABLE "DAVID"."BBSREPLY" ADD FOREIGN KEY ("RTID") REFERENCES "DAVID"."BBSTOPIC" ("TID");ALTER TABLE "DAVID"."BBSREPLY" ADD FOREIGN KEY ("RUID") REFERENCES "DAVID"."BBSUSERS" ("USERID");


3.

-- ------------------------------ Table structure for BBSSECTION-- ----------------------------DROP TABLE "DAVID"."BBSSECTION";CREATE TABLE "DAVID"."BBSSECTION" ("SID" NUMBER(4) NOT NULL ,"SNAME" VARCHAR2(32 BYTE) NOT NULL ,"SMASTERID" NUMBER(4) NOT NULL ,"SPROFILE" VARCHAR2(20 BYTE) NULL ,"SCLICKCOUNT" NUMBER(4) NULL ,"STOPICCOUNT" NUMBER(4) NULL )-- ------------------------------ Checks structure for table BBSSECTION-- ----------------------------ALTER TABLE "DAVID"."BBSSECTION" ADD CHECK ("SID" IS NOT NULL);ALTER TABLE "DAVID"."BBSSECTION" ADD CHECK ("SNAME" IS NOT NULL);ALTER TABLE "DAVID"."BBSSECTION" ADD CHECK ("SMASTERID" IS NOT NULL);-- ------------------------------ Foreign Key structure for table "DAVID"."BBSSECTION"-- ----------------------------ALTER TABLE "DAVID"."BBSSECTION" ADD FOREIGN KEY ("SMASTERID") REFERENCES "DAVID"."BBSUSERS" ("USERID");


4.

-- ------------------------------ Table structure for BBSTOPIC-- ----------------------------DROP TABLE "DAVID"."BBSTOPIC";CREATE TABLE "DAVID"."BBSTOPIC" ("TID" NUMBER(4) NOT NULL ,"TSID" NUMBER(4) NOT NULL ,"TUID" NUMBER(4) NOT NULL ,"TREPLYCOUNT" NUMBER(4) NULL ,"TFACE" NUMBER(4) NULL ,"TTOPIC" VARCHAR2(20 BYTE) NOT NULL ,"TCONTENTS" VARCHAR2(30 BYTE) NOT NULL ,"TTIME" DATE DEFAULT sysdate  NULL ,"TCLICKCOUNT" NUMBER(4) DEFAULT 0  NULL ,"TSTATE" NUMBER(4) DEFAULT 1  NULL ,"TLASTREPLY" DATE NULL )-- ------------------------------ Checks structure for table BBSTOPIC-- ----------------------------ALTER TABLE "DAVID"."BBSTOPIC" ADD CHECK ("TID" IS NOT NULL);ALTER TABLE "DAVID"."BBSTOPIC" ADD CHECK ("TSID" IS NOT NULL);ALTER TABLE "DAVID"."BBSTOPIC" ADD CHECK ("TUID" IS NOT NULL);ALTER TABLE "DAVID"."BBSTOPIC" ADD CHECK ("TTOPIC" IS NOT NULL);ALTER TABLE "DAVID"."BBSTOPIC" ADD CHECK ("TCONTENTS" IS NOT NULL);-- ------------------------------ Foreign Key structure for table "DAVID"."BBSTOPIC"-- ----------------------------ALTER TABLE "DAVID"."BBSTOPIC" ADD FOREIGN KEY ("TSID") REFERENCES "DAVID"."BBSSECTION" ("SID");ALTER TABLE "DAVID"."BBSTOPIC" ADD FOREIGN KEY ("TUID") REFERENCES "DAVID"."BBSUSERS" ("USERID");


总结:表的创建需要一定的顺序,因为有时候表里面的内容依赖于别的表中的内容,所以需要先创建所需的表,然后再创建表。

原创粉丝点击