2011-06-15 50 views
2

结构合并两张桌子还是保持分开?

TableA (each row in TableA can map to one or more row in circle) 
    Id 
    Name 

TableB (each row in TableB can map to only one row in TableA) 
    Id 
    TableAId 
    UniqueValue 

示例数据

TableA 
    1,Sooprise 

TableB 
    1,1,something 
    2,1,somethingElse 

因此,在这种情况下, “UniqueValue” 只能自己一排TableA的关联。结合表格会更有意义吗?

结构

TableC 
    Id 
    Name 
    UniqueValue 

示例数据

TableC 
    1,Sooprise,something 
    2,Sooprise,somethingElse 

我靠着更朝向第一选择,但由于存在从B中的一对一映射到A,这些表可以结合。我明白,组合这些表会导致数据冗余(名称),但也许会因为不使用两个关系表而导致出现异常?

回答

3

我会保持两个表分开。 如果需要,我会创建一个视图来获取下一个结构。

+0

你能解释一下你所说的“创建一个视图,如果需要得到一个结构”是什么意思?谢谢! :) – sooprise 2011-06-15 13:28:39

+0

我会创建类似的东西: 'CREATE VIEW DenormalizedView AS SELECT TableB.Id,TableA.Id,TableA.Name,TableB.UniqueValue FROM TableA INNER JOIN TableB ON TableA.Id = TableB.Name' – Joss57 2011-06-15 13:41:30

+0

这样,我为我的数据保留了“规范化”结构,并且我有办法查询某种“非规范化”的数据视图(以便于进一步发展)。 – Joss57 2011-06-15 13:45:51

0

这取决于。用于什么表格?如果您发现自己需要同时从多个关系表获取数据,那么加入它们可能是一个好主意。如果他们的使用很大程度上是分开的,并且您觉得单独的表格可以提高清晰度,那么请将它们分开。

1

我认为这个选择将取决于表格的用途。如果您查看数据库空间(这可能不是问题),并且您担心更新,两张表可能会更好。 (如果1,Sooprise变为1,Sooprise_New是否要更新表B中的所有记录,还是希望值保持为1,Sooprise用于某些条目)?

我发现,在数据结构最好的未来变化,以保持TWP表

+0

就我而言,如果Sooprise成为Sooprise_New,那么所有Sooprise值都会发生变化。 – sooprise 2011-06-15 13:29:36

+0

由于您希望更改级联到相关数据中的所有相关记录,因此我认为您更愿意拥有两个表格。 – 2011-06-15 15:58:25

相关问题