Mysql Access数据库规范化
我目前正在努力规范化现有数据库。我的问题与本视频中5分钟左右的问题相似 他说不要为有两位作者的书设置两个专栏,这是我的数据库存在的问题。我想知道查询是否可以修改表,使其只有一个author列,每个author都有单独的行 因此: 1[书名][isbn][author1][author2] 应该是: 1[书名][isbn][author1]Mysql Access数据库规范化,mysql,sql,ms-access,database-design,normalization,Mysql,Sql,Ms Access,Database Design,Normalization,我目前正在努力规范化现有数据库。我的问题与本视频中5分钟左右的问题相似 他说不要为有两位作者的书设置两个专栏,这是我的数据库存在的问题。我想知道查询是否可以修改表,使其只有一个author列,每个author都有单独的行 因此: 1[书名][isbn][author1][author2] 应该是: 1[书名][isbn][author1] 2[书名][isbn][author2]我不认为你在这里描述的是规范化。在规范化数据库中,您将 Table1 - bookId, title, isbn,
2[书名][isbn][author2]我不认为你在这里描述的是规范化。在规范化数据库中,您将
Table1 - bookId, title, isbn, authorId
Table2 - authorId, Name...
Table3 - book_authorId, bookId, authorId <-- assign authors to book
但是对于你的具体问题,你描述的方式,这里是你能做的。首先,创建第二条记录:
Insert into <table> (title, isbn, author#1)
Select title, isbn, author#2 from <table> where not author#2 is null
这里描述了它
现在,您可以删除author2列
这些操作应该创建您在问题中描述的内容我认为,由于关系是M:N,因此应该有一个图书作者关系的交集表: 书桌
bookId (PK) | bookTitle | isbn | etc...
作者表
authorId (PK) | authorName | etc...
交集表
bookId (PK) | authorId (PK) | etc...
在数据库方面,这是最正确的方法
如果您对作为实体的作者不感兴趣,可以跳过“作者”表,在交叉表中用authorName替换authord。同一本书有两行真的是更好的解决方案吗?似乎作者应该在这里有自己的表格。被否决的人这样做是正确的,因为我确实没有键入多对多分配表格。现在已经修好了