我准备建9个表,分别如下:
1、图书基本信息表(ISBN,名称,作者,出版社,出版日期,书价,类别,数量,主题词),其中的ISBN作为主键;2、图书详细信息表(索书号,ISBN,进库日期),其中索书号为主键,因为往往相同ISBN的书好几本,为了区分每本书所以建立这个表;3、借阅信息表(索书号,读者编号,借书日期,应还日期,还书日期,罚款),其中索书号、读者编号和借书日期的组合为主键,因为同一个读者在不同的日期有可能借同一本书;4、读者信息表(读者编号,姓名,密码,注册日期,类别,性别,身份证号码,工作单位),其中读者编号为主键;5、管理员表(ID,密码),其中ID为主键,在这里应该可以把管理员的内容放到读者表里去,到底是应该放到读者表中还是就这样单独建一个表呢,请大家帮忙看看。6、读者预约表(读者编号,ISBN,预约日期),这三者的组合作为主键,因为同一个读者有可能在不同的日期预约相同的书;7、读者推荐图书表(ISBN,书名,作者,出版社,出版日期),其中ISBN为主键;8、图书类别表(图书类别),只有一个字段;9、读者类别表(读者类别),也只有一个字段;表差不多就这些了,请大家帮我看下有哪些地方可以改进,谢谢!
1、图书基本信息表(ISBN,名称,作者,出版社,出版日期,书价,类别,数量,主题词),其中的ISBN作为主键;2、图书详细信息表(索书号,ISBN,进库日期),其中索书号为主键,因为往往相同ISBN的书好几本,为了区分每本书所以建立这个表;3、借阅信息表(索书号,读者编号,借书日期,应还日期,还书日期,罚款),其中索书号、读者编号和借书日期的组合为主键,因为同一个读者在不同的日期有可能借同一本书;4、读者信息表(读者编号,姓名,密码,注册日期,类别,性别,身份证号码,工作单位),其中读者编号为主键;5、管理员表(ID,密码),其中ID为主键,在这里应该可以把管理员的内容放到读者表里去,到底是应该放到读者表中还是就这样单独建一个表呢,请大家帮忙看看。6、读者预约表(读者编号,ISBN,预约日期),这三者的组合作为主键,因为同一个读者有可能在不同的日期预约相同的书;7、读者推荐图书表(ISBN,书名,作者,出版社,出版日期),其中ISBN为主键;8、图书类别表(图书类别),只有一个字段;9、读者类别表(读者类别),也只有一个字段;表差不多就这些了,请大家帮我看下有哪些地方可以改进,谢谢!
2、图书详细信息表应该将图书代码和索引号两个字段一起作为主键,以保证一本图书在图书库中的唯一性。
3、借阅信息表缺少图书基本信息表中的主键,如图书编码,因为图书不能通过索引号作唯一表示。
4、读者信息表和管理员表应该分开,这样可以保证系统的安全。
5、读者预约表应该还要考虑其他的功能,比如取消预约、预约过期等等。
6、读者推荐图书表最好再增加推荐人等字段。
7、图书类别表和读者类别表最好再增加类别描述字段。设计一个系统需要考虑得更详细一点,可以多翻些关于数据库建模方面的资料,以上仅供参考。
1、图书基本信息表(图书编号,ISBN,名称,作者,出版社,出版日期,书价,类别,数量,主题词),其中的图书编号作为主键;2、图书详细信息表(索书号,ISBN,进库日期),其中索书号为主键;3、借阅信息表(索书号,读者编号,借书日期,应还日期,还书日期,罚款),其中索书号、读者编号和借书日期的组合为主键;4、读者信息表(读者编号,姓名,密码,注册日期,类别,性别,身份证号码,工作单位),其中读者编号为主键;5、管理员表(ID,密码),其中ID为主键;6、读者预约表(读者编号,图书编号,预约日期),这三者的组合作为主键;7、读者推荐图书表(ISBN,读者编号,书名,作者,出版社,出版日期),其中ISBN为主键;8、图书类别表(图书类别,描述),其中图书类别为主键;9、读者类别表(读者类别,描述),其中读者类别为主键;具体的SQL语句如下,请大家帮我看一下还有哪些地方需要改进(包括表和字段的命名,我的英文实在是太差劲了),数据库用的是MYSQL5.0.37,谢谢!drop database if exists book_management;
create database book_management;
use book_management;
create table book_cate_info /*图书类别表*/
(
book_cate varchar(20) not null primary key,
bk_description text
);
create table reader_cate_info /*读者类别表*/
(
reader_cate varchar(20) not null primary key,
rd_description text
);
create table book_basic_info /*图书基本信息表*/
(
book_id mediumint auto_increment not null primary key,
isbn char(13) not null unique,
book_name varchar(40) not null,
author varchar(20) not null,
press varchar(20) not null,
publ_date date,
price float not null,
book_cate varchar(20) not null references book_cate_info(book_cate), /*图书类别*/
book_amount tinyint not null,
keywords varchar(30)
);
create table book_detail_info /*图书详细信息表*/
(
call_id varchar(20) not null primary key,
isbn char(13) not null references book_basic_info(isbn),
inflow_date date
);
create table reader_info /*读者信息表*/
(
reader_id varchar(10) not null primary key,
reader_name varchar(20) not null,
reader_pwd varchar(20) not null,
reg_date date,
reader_cate varchar(20) not null references reader_cate_info(reader_cate),
sex enum('f','m') not null,
id_card_num varchar(18) not null,
unit varchar(40)
);
create table borrow_info /*借阅信息表*/
(
call_id varchar(20) not null references book_detail_info(call_id),
reader_id varchar(10) not null references reader_info(reader_id),
borrow_date date not null,
behove_rtn_date not null,
return_date date not null,
amercement float default 0.0,
primary key(call_id,reader_id,borrow_date)
);
create table administrator_info /*管理员信息表*/
(
admin_id varchar(10) not null primary key,
admin_pwd varchar(20) not null
);
create table booking_info /*预约表*/
(
reader_id varchar(10) not null references reader_info(reader_id),
book_id mediumint not null references book_basic_info(book_id),
booking_date date not null,
primary key(reader_id,book_id,booking_date)
);
create table recommendation_book_info /*推荐图书表*/
(
isbn char(13) not null primary key,
reader_id varchar(10) not null references reader_info(reader_id),
book_name varchar(40) not null,
author varchar(20) not null,
press varchar(20) not null,
publ_date date
);