【问题标题】:DB Design suggestion [closed]DB设计建议[关闭]
【发布时间】:2021-03-01 10:01:11
【问题描述】:

我的 SQL 数据库中有 2 个表,MEMBERS 和 BOOKS。所以我想让会员 ISSUE、RENEW 和 RETURN 书籍。

这里的限制是一本书只有一个副本,一本书只有一个作者。这是一个好的数据库架构吗?

【问题讨论】:

  • 您的问题包含两个不同的主题(API 结构和 DB 架构),在我看来将这个问题分开会很好

标签: sql sql-server database database-design


【解决方案1】:

1 .你可以用你的桌子做很多事情。首先看一下MEMBER表。 City - 这不是一个唯一字段,您应该为该字段创建一个额外的表并在该字段中添加 CityID

桌书。 AuthorPublisherGenre 字段在这种情况下,您还应该创建特定的表格。

一个作者可以有很多书。出版商也有很多书。想象一下,出版商决定重命名他的品牌,如果你在一个特定的表中有这个名字,你可以毫无问题地进行更改,只在一个地方。想想这个。

阅读此https://en.wikipedia.org/wiki/Database_normalization

满足 3NF 就足够了

【讨论】:

  • 是的,我了解数据库部分。但是有一个问题,当用户创建一本书时,他们会传递作者姓名,所以我需要首先在作者表中搜索该作者姓名,如果存在则获取 authorID,如果不存在则我在作者中创建一个作者表,然后用 authorID 填充 book 表?这是流程还是不同?
  • 是的,可以这样
  • 另外值得一提的是,应该有另一个表来满足 OP 的要求,其中包含交易:有人在书本上执行的操作。在实体本身所在的同一个表中对实体执行操作是个坏主意,因为有一天它可能需要向操作添加更多详细信息,这会破坏关系。
猜你喜欢
  • 2021-04-26
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 2013-05-29
  • 2010-09-19
  • 1970-01-01
相关资源
最近更新 更多