首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这些表是否尊重3NF数据库规范化?

这些表是否尊重3NF数据库规范化?
EN

Stack Overflow用户
提问于 2010-04-10 09:13:16
回答 4查看 1.3K关注 0票数 6

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

代码语言:javascript
复制
1. Are these tables respect the 3NF Database Normalization?
2. What if 2 authors work together for the same title?
3. The column Addresss should have it's own table?
4. When a reader borrows a book, I make an entry in BORROWING table. After he returns the book, I delete that entry and I make another one entry in HISTORY table. Is this a good idea? Do I brake any rule? Should I have instead one single BORROWING table with a DATE\_OF\_RETURNING column?

EN

回答 4

Stack Overflow用户

发布于 2010-04-10 09:30:14

这看起来有点像家庭作业问题,但无论如何让我回答:

  1. 不,表不在3NF中;具有代理键的表很少存在。例如,READERS表有两个候选主键: READER_ID和(First_Name,Last_Name)。当然,这取决于您的问题域:如果您愿意拥有两个名称、地址和电话相同的独立个体,那么它就在3NF中。而且,在我的经验中,3NF通常比它更麻烦。
  2. ,这又取决于您的问题域。您可以通过中间表在作者和标题之间创建多对多的关系。
  3. 参见1.
  4. 您可以不用借用,创建一个完美工作的应用程序,因为历史包含您需要的所有信息。需要跟踪的信息越少,越好。--
票数 2
EN

Stack Overflow用户

发布于 2010-04-10 09:18:23

我会把标题改为多到多,留下地址。

TITLES

  • TITLE_ID,PK
  • NAME

TitleAutors

  • TITLE_ID
  • AUTHOR_ID

您可以更改借用表,使其具有条目的状态(OUT、IN、缺失、未知)并具有STATUS_DATE。

票数 1
EN

Stack Overflow用户

发布于 2010-04-10 22:51:18

你怎么能指望任何人在不了解你的业务领域的情况下认真回答这个问题?

为了认真回答这个问题,我们需要知道支配您的数据的全部功能依赖关系,而您还没有提供这些依赖关系。

例如,要使您的方案处于3NF中,就需要domainID -> titleID,或者换句话说,每个域只有一个标题,而了解域意味着您可以知道标题。从表面上看,这似乎很奇怪,但唯一能确定这是否是你正在处理的商业现实的准确代表的人是你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2612848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档