以下是数据库对象生成脚本:
/***************************************************************************************
名称: 大富翁图书管理DEMO数据对象生成脚本
版本: V0.1
****************************************************************************************/
create user dfw identified by dfw;
grant connect, resource to dfw;
conn dfw/dfw
/*****************************************操作员对象**************************************/
create sequence seq_Operators --操作员序号器
increment by 1 start with 10000;
create table tab_Operators ( --操作员表
O_ID number(5,0) not null, --唯一标识
O_Account varchar2(20) not null, --登录号
O_Passwd varchar2(20) not null, --口令
O_Name varchar2(40) not null, --姓名
O_IdentifyNo varchar2(40) not null, --证件号(现为身份证号)
O_Role number(1) default 1 not null, --角色(0:管理员;1:借还书员)
O_Memo varchar2(400), --备注
constraint pk_Oper primary key(o_id),
constraint uq_Oper_Account unique(O_Account),
constraint uq_Oper_IdentifyNo unique(O_IdentifyNo)
);
create or replace trigger trg_BI_operators before insert --操作员触发器(用以生成序号)
on tab_Operators for each row
declare
seq integer;
begin
select seq_Operators.nextval into seq from dual;
:new.o_ID := seq;
end;
/
insert into tab_Operators(O_Account, O_Passwd, O_Name, O_IdentifyNo, O_Role, O_Memo)
values('SysAdmin', 'Change_on_install', 'SysAdmin', '0000000000', 0, '缺省安装的系统管理员,具有最高权限,安装后请立即修改其口令');
/*****************************************操作日志****************************************/
create sequence seq_Logs --日志序号器
increment by 1 start with 10000000;
create table tab_Logs( --用户表
L_ID number(8) not null, --日志标识号
L_Date date default sysdate not null, --日期
L_OperatorID number(5,0) not null, --操作员ID
L_Action varchar2(200) not null, --行为
L_Result varchar2(200) not null, --结果
L_Memo varchar2(200) not null, --备注
constraint pk_Logs primary key(L_ID),
constraint fk_Logs_OID foreign key(L_OperatorID) references tab_Operators(O_ID)
);
create or replace trigger trg_BI_Logs before insert --用户触发器(用以生成序号)
on tab_Logs for each row
declare
seq integer;
begin
select seq_Logs.nextval into seq from dual;
:new.L_ID := seq;
end;
/
/*****************************************书籍种类对象****************************************/
create sequence seq_BookTypes --书籍类型序号器
increment by 1 start with 1000000;
create table tab_BookTypes( --书籍类型表
BT_ID number(7) not null, --书籍类型标识
BT_BookName varchar2(80) not null, --书籍名称
BT_ISBN varchar2(20) not null, --书籍ISBN
BT_Author varchar2(80) not null, --作者
BT_Publisher varchar2(80) not null, --出版社(作者和出版社本应为对外表的参照,但为了简化,姑且这样做)
BT_Memo varchar2(400), --备注
constraint pk_BookTypes primary key(BT_ID),
constraint uq_BookTypes_ISBN unique(BT_ISBN)
);
create or replace trigger trg_BI_BookTypes before insert --书籍类型触发器(用以生成序号)
on tab_BookTypes for each row
declare
seq integer;
begin
select seq_BookTypes.nextval into seq from dual;
:new.BT_ID := seq;
end;
/
/*****************************************藏书****************************************/
create sequence seq_CollectBooks --藏书序号器
increment by 1 start with 100000000;
create table tab_CollectBooks( --藏书表
CB_ID number(9) not null, --藏书标识
CB_BookTypeID number(7) not null, --书籍类型标识
CB_Status number(1) default 0 not null, --状态(0:表示在库;1:表示在借)
CB_Memo varchar2(400), --备注
constraint pk_CollectBooks primary key(CB_ID),
constraint fk_CollectBooks_BookType foreign key(CB_BookTypeID) references tab_BookTypes(BT_ID)
);
create or replace trigger trg_BI_CollectBooks before insert --藏书表触发器(用以生成序号)
on tab_CollectBooks for each row
declare
seq integer;
begin
select seq_CollectBooks.nextval into seq from dual;
:new.CB_ID := seq;
end;
/
/*****************************************借阅者对象****************************************/
create sequence seq_Readers --借阅者序号器
increment by 1 start with 100000;
create table tab_Readers( --借阅者表
R_ID number(6) not null, --借阅者标识号
R_IdentifyNo varchar2(40) not null, --证件号(现为身份证号)
R_Name varchar2(40) not null, --借阅者姓名
R_Address varchar2(100) not null, --地址
R_Phone varchar2(40) not null, --电话
R_Memo varchar2(400), --备注
constraint pk_Readers primary key(R_ID),
constraint uq_Readers_IdentifyNo unique(R_IdentifyNo) --身份证号号必须唯一
);
create or replace trigger trg_BI_Readers before insert --借阅者触发器(用以生成序号)
on tab_Readers for each row
declare
seq integer;
begin
select seq_Readers.nextval into seq from dual;
:new.R_ID := seq;
end;
/
/*****************************************图书借阅情况****************************************/
create sequence seq_Borrows --图书借阅序号器
increment by 1 start with 1000000000;
create table tab_Borrows( --图书借阅表
B_ID number(10) not null, --图书借阅标识号
B_BorrowerID number(6) not null, --借阅者标识号
B_Date date default sysdate not null, --借阅日期
B_Memo varchar2(200) null, --备注
constraint pk_Borrows primary key(B_ID),
constraint fk_Borrows_BorrowerID foreign key(B_BorrowerID) references tab_Readers(R_ID)
);
create or replace trigger trg_BI_Borrows before insert --图书借阅表触发器(用以生成序号)
on tab_Borrows for each row
declare
seq number;
begin
select seq_Borrows.nextval into seq from dual;
:new.B_ID := seq;
end;
/
create table tab_BorrowBooks( --图书借阅明细表
BB_ID number(10) not null, --图书借阅标识号
BB_CollectBookID number(9) not null, --藏书标识号
BB_Status number(1) default 0 not null, --归还情况(0:未还;1:已还)
BB_Memo varchar2(200) null, --备注
constraint pk_BorrowBooks primary key(BB_ID, BB_CollectBookID),
constraint fk_BorrowBooks_BorrowsID foreign key(BB_ID) references tab_Borrows(B_ID),
constraint fk_BorrowBooks_CollectBookID foreign key(BB_CollectBookID) references tab_CollectBooks(CB_ID)
);
/*****************************************图书归还情况****************************************/
create sequence seq_Returns --图书归还序号器
increment by 1 start with 1000000000;
create table tab_Returns( --图书归还表
Re_ID number(10) not null, --图书归还标识号
Re_BorrowerID number(6) not null, --借阅者标识号
Re_Date date default sysdate not null, --归还日期
Re_Memo varchar2(200) null, --备注
constraint pk_Returns primary key(Re_ID),
constraint fk_Returns_BorrowerID foreign key(Re_BorrowerID) references tab_Readers(R_ID)
);
create or replace trigger trg_BI_Returns before insert --图书借阅表触发器(用以生成序号)
on tab_Returns for each row
declare
seq number;
begin
select seq_Returns.nextval into seq from dual;
:new.Re_ID := seq;
end;
/
create table tab_ReturnBooks( --图书归还明细表
RB_ID number(10) not null, --图书借阅标识号
RB_CollectBookID number(9) not null, --藏书标识号
constraint pk_ReturnBooks primary key(RB_ID, RB_CollectBookID),
constraint fk_ReturnBooks_BorrowsID foreign key(RB_ID) references tab_Returns(Re_ID),
constraint fk_ReturnBooks_CollectBookID foreign key(RB_CollectBookID) references tab_CollectBooks(CB_ID)
);