Sql 这些表是否遵循3NF数据库规范化?
Sql 这些表是否遵循3NF数据库规范化?,sql,database,normalization,Sql,Database,Normalization,作者表格 作者ID,主键 名字 姓氏 标题表格 TITLE\u ID,主键 NAME 作者ID,FK 域表 域ID,主键 NAME TITLE\u ID,FK 读卡器表格 读卡器ID,主键 名字 姓氏 地址 城市ID,FK 电话 城市表格 CITY\u ID,主键 NAME 借用表格 借用ID,主键 读卡器ID,fk TITLE\u ID,fk 日期 历史记录表格 READER\u ID TITLE\u ID 借款日期 返回日期 这些表是否遵循3NF数据库规范化 如果两
作者
表格
,主键作者ID
名字
姓氏
标题
表格
,主键TITLE\u ID
NAME
,FK作者ID
域
表
,主键域ID
NAME
,FKTITLE\u ID
读卡器
表格
,主键读卡器ID
名字
姓氏
地址
,FK城市ID
电话
城市
表格
,主键CITY\u ID
NAME
借用
表格
,主键借用ID
,fk读卡器ID
,fkTITLE\u ID
日期
历史记录
表格
READER\u ID
TITLE\u ID
- 借款日期
- 返回日期
- 这些表是否遵循3NF数据库规范化
- 如果两位作者为了同一个标题一起工作会怎么样
- 列地址应该有自己的表吗
- 当读者借书时,我在借书表中记下一个条目。在他归还这本书之后,我删除了那个条目,并在历史表中做了另一个条目。这是个好主意吗?我有什么规则吗?我应该有一个单独的借阅表,其中有一个DATE\u OF\u RETURNING列吗
- 我会将标题更改为多对多,并保留地址
标题
表格
,主键TITLE\u ID
NAME
TitleAutors
表格
TITLE\u ID
AUTHOR\u ID
您可以更改借阅表,使其具有条目的状态(OUT、IN、MISSING、UNKNOWN)和状态日期。这看起来有点像家庭作业问题,但还是让我回答一下:
你如何期望任何人在不了解你的业务领域的情况下认真回答这个问题 为了认真地回答这个问题,需要了解管理数据的整个函数依赖关系集,而您还没有提供这些依赖关系
例如,对于3NF中的方案,它需要domainID->titleID,或者换句话说,每个域只有一个标题,知道域意味着可以知道标题。从表面上看,这似乎很奇怪,但唯一能确定这是否准确地反映了您正在处理的业务现实的人是您。在阅读其他人的评论后,我想到的另一个想法是
- 作者能成为读者吗?(反之亦然)
您可以通过创建一个用户表来解决这个问题,其中有两个用于Authors和Readers表的外键。只是一个想法……;) +1另一个好主意是创建一个完整的属性ERD来帮助对数据库建模。