有人可以规范化这张桌子吗?

时间:2013-11-11 20:35:57

标签: database normalization database-normalization

我有这个表来规范一个uni项目,现在每次我认为它应该只是 是两张桌子,然后我认为不应该是三张......我会把这个告诉你们其中一个人的优秀知识,因为你们可以指出它应该做的最佳方式和原因。

 Number Type    Single rate Double rate Family rate
1        D          56          72  
2        D          56          72  
3        T          50          72  
4        T          50          72  
5        S          48      
6        S          48      
7        S          48      
8        T          50          72  
9        T          50          72  
10       D          56          72  
11       D          56          72  
12       D          56          72  
13       D          56          72  
14       F          56          72         84
15       F          56          72         84
16       S          48      
17       S          48      
18       T          50          72  
20       D          56          72  

非常感谢任何可以帮助我看到正确方法的人

1 个答案:

答案 0 :(得分:1)

除非能够准确理解列的含义以及数据列如何相互依赖,否则无法生成正确的表设计。但是,一旦您为我们提供更多信息,这是一个可以改进的尝试。使用过的命名并不像我想的那样好,但正如我所说,问题的目的并不明确。无论如何,这是一个开始,希望它会帮助你。 另请注意,并非所有类型的应用程序都需要规范化。例如,商业智能可以使用故意未完全规范化的模式(例如Star Schema)。因此,数据库设计有时可能取决于应用程序的性质以及数据的变化方式。

Main 
----
MainID                      int           PK
MainTypeID                  Char(1)       Example: D, T, S etc.
MainRateIntersectionID      Int

MainRateIntersection
--------------------
MainRateIntersectionID      int           PK
MainID                      int
RateCategoryID              int


The combination of MainID and RateCategoryID should be constrained 
using UNIQUE INDEX

RateCategory
------------
RateCategoryID              int            PK
RateCategoryText            Varchar2(15)   Not Null    Example:Single, Family, etc.
RateValue                   Int            Nullable

MainType
---------
MainTypeID      Char(1)     PK

修改

根据新信息,我修改了模型。我删除了'人工'ID,因为这是一个标准化培训项目。人工ID(代理键)是正确的添加,但不是我的目标。我必须添加预订表,其中将为每个预订的客户插入一行。您需要在该表中添加适当的客户信息。您提供的表更多的是逻辑视图,可以从查询返回,但不是在数据库中存储和更新的物理表。相反,应该使用预订表。

我希望这可以帮到你。

enter image description here