数据库原理实验 联系客服

发布时间 : 星期一 文章数据库原理实验更新完毕开始阅读1378d1a86094dd88d0d233d4b14e852458fb39bf

1 实验目的与要求

(1) 掌握数据库的建立、删除和修改操作。

(2) 理解基本表之间的关系,掌握表结构的建立、修改和删除操作,创建模式导航图。 2 实验内容与结果

实验内容:

(1) 创建一个BookDB数据库,要求至少一个数据文件和一个日志文件。

(2) 创建图书管理相关4张关系表,表结构如图3-1至图3-4所示。

属性名 classNo className 类型 char(3) varchar(20) 空值约束 not null not null 属性含义 图书分类号 图书分类名称 图3-1 图书分类表BookClass

属性名 bookNo classNo bookName authorName publishingName publishingNo price publishingDate shopDate shopNum 类型 char(10) char(3) varchar(40) varchar(8) varchar(20) char(17) numeric(7, 2) datetime datetime numeric(3) 空值约束 not null not null not null not null null null null null null null 属性含义 图书编号 分 类 号 图书名称 作者姓名 出版社名称 出版社编号 单 价 出版日期 入库时间 入库数量 图3-2 图书表Book

属性名 readerNo readerName 类型 char(8) varchar(8) Sex identifycard workUnit borrowCount null null null null 性 别 身份证号 工作单位 借书数量 空值约束 Not null Not null 属性含义 读者编号 姓 名 char(2) char(18) varchar(50) tinyint 图3-3 读者表Reader

属性名 readerNo bookNo borrowDate shouldDate returnDate 类型 char(8) char(10) datetime datetime datetime 空值约束 not null not null not null not null null 属性含义 读者编号 图书编号 借阅日期 应归还日期 归还日期 图3-4 借阅表Borrow

(3) 表结构的修改,要求:

① 修改图书表结构,要求出版社名称和入库时间不允许为空。 ② 修改读者表结构,要求读者身份证号不允许为空。 实验结果如下: 创建数据库:

CREATE DATABASE BookDB48 ON PRIMARY (NAME='BookDB',

FILENAME='C:\\数据库文件\\', SIZE=3, MAXSIZE=20, FILEGROWTH=1 ) LOG ON (

NAME='BookDB_LOG',

FILENAME='C:\\数据库文件\\', SIZE=3, MAXSIZE=20, FILEGROWTH=1)

脚本如下:(创建的四个表)

CREATE TABLE BookClass48(

classNo char(3) NOT NULL, --图书分类号 className varchar(20) NOT NULL,--图书分类名称 CONSTRAINT BookClass48PK PRIMARY KEY(classNo) )

CREATE TABLE Book48(

bookNo char(10) NOT NULL,--图书编号 classNo char(3) NOT NULL, --图书分类号 bookName varchar(40) NOT NULL,--图书名称 authorName varchar(8) NOT NULL ,--作者名字 publishingName varchar(20) NULL,--出版社名称 publishingNo char(17) NULL,--出版社编号 publishingDate datetime NULL,--出版社日期 price numeric(7,2) NULL,--单价 shopDate datetime NULL ,--入库时间 shopNum datetime NULL,--入库数量

CONSTRAINT Book48PK PRIMARY KEY(bookNo),

CONSTRAINT Book48FK FOREIGN KEY(classNo) REFERENCES BookClass48(classNo) )

CREATE TABLE Reader48(

readerNo char(8) NOT NUlL,--读者编号 readerName varchar(8) NOT NULL,--姓名 sex char(2) null,--性别

identifycard char(18) null,--身份证号 workUnit varchar(50) null,--工作单位 borrowCount tinyint null,--借书数量

CONSTRAINT Reader48PK PRIMARY KEY(readerNo) )

CREATE TABLE Borrow48(

readerNo char(8) NOT NUlL,--读者编号 bookNo char(10) NOT NULL,--图书编号 borrowDate datetime not null,--借阅日期 shouldDate datetime not null,--应归还的日期 returnDate datetime null,--归还日期

CONSTRAINT Borrow48PK PRIMARY KEY(readerNo,bookNo),

CONSTRAINT Borrow48FK1 FOREIGN KEY(readerNo)REFERENCES Reader48(readerNo), CONSTRAINT Borrow48FK2 FOREIGN KEY(bookNo)REFERENCES Book48(bookNo) )

表结构的修改:

ALTER TABLE Book48 DROP COLUMN publishingName

ALTER TABLE Book48 ALTER COLUMN publishingName varchar(20) NOT NULL ALTER TABLE Book48 DROP COLUMN shopDate

ALTER TABLE Book48 ALTER COLUMN shopDate datetime NOT NULL ALTER TABLE Book48 DROP COLUMN identifycard

ALTER TABLE Reader48 ALTER COLUMN identifycard char(18) NOT NULL

结果图如下(模式导航图):

3、实验小结和归纳

小结:本次实验是我们学习数据库原理以来的第一次实验,相比而言是很生疏的,并且这次实验出现了很多的问题,例如:做实验的时候,总是运行的成功的语句,导致后来生

成的结果总是存在某些已经存在的对象,十分麻烦。后来我想了个办法,就是在编程代码的同时,写下删除语句,在自己运行错误的时候,可以删除原先已经存在的对象和语句,以便我们后来可以更好的编写。

归纳:这次实验包括创建数据库,在数据库中创建表,给表中设置主外键,并且将其约束以便能够编成模式导航图,唯一美中不足的就是不能够有效的知道我们所编写的表具体体现在那里,可视化不够明显,让我们不能很有效的认识它!