有没有人能确保我的数据库是第三范式,如果不是,解释一下为什么不?我需要的DB只有3个表。所以就是这样:
Customer No. (PK) Store No. (PK) Sale No. (PK)
Name Location Customer No. (FK)
Telephone Revenue Store No. (FK)
Address Total
Purchases($) Paid
Store No.发布于 2013-02-09 17:36:44
下面是三个表应该是什么:表1:Customer
Customer No. (PK)
Name
Telephone
Address然后表2:商店
Store no. (PK)
Location然后表3:销售
Sale No. (PK)
Customer No (FK)
Store No (FK)
Total
Paid_yes_no如果您试图通过Paid列跟踪部分付款等,那么它将是一个单独的表(以及一个复杂得多的数据库)。但是,如果您的Paid列仅指示账单是否已支付,则上述方法应该有效。
也许您还需要一个Date字段?
发布于 2013-02-09 18:27:57
有一些问题,其中一些可能是因为规范是针对家庭作业而不是现实世界。
Store No. in Customers是一个重复的列有多个商店的企业有使用多个商店的客户是合理的-除非您的规范另有说明,在这种情况下应该扩展分类法(命名),您可以考虑First Store No。或Home Store No.而不是。此外,如果它在customers表中的remain.Purchases($)依赖于其他将要更改的数据,则应该将其标记为外键。由于它是从其他信息派生的,你不应该存储it.Address不是一个单一的列-它有多个部分,如街道,城市,州,国家和邮政编码可能反过来需要额外的表格细节,以完全满足第二范式。同样,Telephone也不太可能只是一个数字。你需要知道的每件事都应该只出现一次。如果你可以从其他东西中计算出它,你应该这样做,而不是存储答案。在现实世界中,有时您可能会将一些信息缓存到表中或对其进行批处理以提高性能,但这些信息将在以后应用,而且只有在必要时才会应用。
在http://databases.about.com/od/specificproducts/a/normalization.htm上有一个数据库规范化的简要概述,你应该在修改你的项目之前先看一看。
https://stackoverflow.com/questions/14786434
复制相似问题