我准备做一个小型的图书管理系统,下面是我做的数据库设计,不知道可行不?
我准备建9个表,分别如下:
1、图书基本信息表(ISBN,名称,作者,出版社,出版日期,书价,类别,数量,主题词),其中的ISBN作为主键;
2、图书详细信息表(索书号,ISBN,进库日期),其中索书号为主键,因为往往相同ISBN的书好几本,为了区分每本书所以建立这个表;
3、借阅信息表(索书号,读者编号,借书日期,应还日期,还书日期,罚款),其中索书号、读者编号和借书日期的组合为主键,因为同一个读者在不同的日期有可能借同一本书;
4、读者信息表(读者编号,姓名,密码,注册日期,类别,性别,身份证号码,工作单位),其中读者编号为主键;
5、管理员表(ID,密码),其中ID为主键,在这里应该可以把管理员的内容放到读者表里去,到底是应该放到读者表中还是就这样单独建一个表呢,请大家帮忙看看。
6、读者预约表(读者编号,ISBN,预约日期),这三者的组合作为主键,因为同一个读者有可能在不同的日期预约相同的书;
7、读者推荐图书表(ISBN,书名,作者,出版社,出版日期),其中ISBN为主键;
8、图书类别表(图书类别),只有一个字段;
9、读者类别表(读者类别),也只有一个字段;
表差不多就这些了,请大家帮我看下有哪些地方可以改进,谢谢!
------解决方案--------------------1、图书基本信息表中的ISBN不宜作为主键,应该另行建立一个图书编码字段,举例:美国当时建立社会保险费系统时基本信息表以参保人的社保卡代码为主键,结果当社保卡代码升级的时候,导致所有与社保卡代码相关的表需要修改信息,但将社保卡代码作为主键的如何修改?会出现不一致信息,导致系统混乱。
2、图书详细信息表应该将图书代码和索引号两个字段一起作为主键,以保证一本图书在图书库中的唯一性。
3、借阅信息表缺少图书基本信息表中的主键,如图书编码,因为图书不能通过索引号作唯一表示。
4、读者信息表和管理员表应该分开,这样可以保证系统的安全。
5、读者预约表应该还要考虑其他的功能,比如取消预约、预约过期等等。
6、读者推荐图书表最好再增加推荐人等字段。
7、图书类别表和读者类别表最好再增加类别描述字段。
设计一个系统需要考虑得更详细一点,可以多翻些关于数据库建模方面的资料,以上仅供参考。
------解决方案--------------------也不是不可以,除非你的索书号能够唯一标识出这一本书,才能作为主键!