AUTHOR
表
Author_ID
,PK First_Name
Last_Name
TITLES
表
TITLE_ID
,PK NAME
Author_ID
,FK DOMAIN
表
DOMAIN_ID
,PK NAME
TITLE_ID
,FK READERS
表
READER_ID
,PK First_Name
Last_Name
ADDRESS
CITY_ID
,FK PHONE
CITY
表
CITY_ID
,PK NAME
BORROWING
表
BORROWING_ID
,PK READER_ID
,fk TITLE_ID
,fk DATE
HISTORY
表
READER_ID
TITLE_ID
DATE_OF_BORROWING
DATE_OF_RETURNING
答案 0 :(得分:2)
这看起来有点像家庭作业问题,但我还是要回答:
答案 1 :(得分:1)
我会将标题更改为MANY-TO-MANY,并保留地址。
TITLES
表
TITLE_ID
,PK NAME
TitleAutors
表
TITLE_ID
,AUTHOR_ID
您可以将BORROWING表更改为具有条目状态(OUT,IN,MISSING,UNKNOWN)并具有STATUS_DATE。
答案 2 :(得分:1)
您如何期望任何人在不了解您的业务领域的情况下认真回答此问题?
为了认真回答这个问题,我们需要知道管理数据的整套功能依赖,而你却没有提供这些依赖。
例如,对于3NF的方案,它需要domainID - > titleID,或换句话说,每个域只有一个标题,知道域意味着你可以知道标题。从表面上看,这似乎很奇怪,但唯一能够确定这是否是您正在处理的商业现实的准确表现的人就是您。
答案 3 :(得分:0)
在阅读其他评论之后,我想到了另一个想法。
如果是这样,您可能会在系统中输入多余的名字和姓氏,并且可能会更新异常。例如,如果简史密斯是读者和作者并结婚并且她的姓氏改为威廉姆斯,则存在更新她的读者姓氏而不是她的作者姓氏的可能性。
您可以通过创建一个User表来修复此问题,其中您有两个用于作者和读者表的外键。只是一个想法...;)