-1

我有这张表来规范一个 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  

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

4

1 回答 1

1

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

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(代理键)是正确的,但我猜这不是您的目标。我必须添加预订表,其中将为每个预订的客户插入一行。您需要在该表中添加适当的客户信息。您提供的表更多是可以从查询返回的逻辑视图,而不是要在数据库中存储和更新的物理表。相反,应该使用 bookings 表。

我希望这可以帮助你。

在此处输入图像描述

于 2013-11-11T21:05:47.663 回答