开发者

Extract Normal Form from XML

<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>

I'm storing this in a table as follows:

Table Name = Historical

Columns开发者_运维知识库

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

Is my table in the third normal form?

Would you recommend this structure or should I create corresponding tables for each parent node i.e. normalise it further?


Just from the structure, there's no clear way to answer this - whether a table is in 3NF or not is largely dependant on the meaning and the "semantics" of the data stored in that table.

I'm just guessing here: the Year column is most likely dependent on the StoreDate (or EndDate) column - right?

Also, more guessing: StockCode and StockId are dependant on one another - this also violates 3NF - try to put your stock information into a separate table:

Stock Information

StockId    INT
StockCode  STRING

and then keep only the StockId in your actual table and add a reference from your table to StockInformation on the StockId column.

If you remove those two issues, there's a good chance your table could now be in 3NF - but again, that depends on that data stored and what that really means - cannot accurately check for 3NF just based on the structure of the fields.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜