从XML中提取Normal Form

时间:2010-09-02 16:29:28

标签: xml database normalization

<Historic>
-----<ReturnData Year="2010">
----- -----<ReturnHistory>
----- -----<Return StoreDate="2010-07-31" Type="1">
----- -----<EndDate>2010-01-31</EndDate>
----- -----<ReturnDetail TimePeriod="1">
----- ----- -----<Value>2.83</Value>
----- ----- </ReturnDetail>
----- -----</Return>
----- </ReturnData>
-----<ReturnData Year="2010">
----- -----<ReturnHistory>
----- -----<Return StoreDate="2010-07-31" Type="1">
----- -----<EndDate>2010-01-31</EndDate>
----- -----<ReturnDetail TimePeriod="2">
----- ----- -----<Value>1.83</Value>
----- ----- </ReturnDetail>
----- -----</Return>
----- </ReturnData>
<Historic>

我将其存储在表格中,如下所示:

表名=历史

StockId : int  
StockCode: string  
Year:int  
StoreDate: datetime  
EndDate: datetime  
ReturnTypeId: int 
TimePeriodId: int  

我的桌子是第三种正常形式吗?

您会推荐这种结构,还是应该为每个父节点创建相应的表格,即进一步规范化?

1 个答案:

答案 0 :(得分:0)

仅从结构中,没有明确的方法来回答这个问题 - 表是否在3NF中是否在很大程度上取决于该表中存储的数据的含义和“语义”。

我只是在猜测:Year列很可能取决于StoreDate(或EndDate)列 - 对吗?

此外,更多猜测:StockCodeStockId相互依赖 - 这也违反了3NF - 尝试将您的股票信息放入单独的表格中:

股票信息

StockId    INT
StockCode  STRING

然后只保留实际表格中的StockId,并将表格中的引用添加到StockInformation列的StockId

如果你删除这两个问题,那么你的桌子很可能现在可以在3NF中 - 但是,这又取决于存储的数据和真正的含义 - 根据字段的结构无法准确检查3NF