<Historic><br/>
-----<ReturnData Year="2010"><br/>
----- -----<ReturnHistory><br/>
----- -----<Return StoreDate="2010-07-31" Type="1"><br/>
----- -----<EndDate>2010-01-31</EndDate><br/>
----- -----<ReturnDetail TimePeriod="1"><br/>
----- ----- -----<Value>2.83</Value><br/>
----- ----- </ReturnDetail><br/>
----- -----</Return><br/>
----- </ReturnData><br/>
-----<ReturnData Year="2010"><br/>
----- -----<ReturnHistory><br/>
----- -----<Return StoreDate="2010-07-31" Type="1"><br/>
----- -----<EndDate>2010-01-31</EndDate><br/>
----- -----<ReturnDetail TimePeriod="2"><br/>
----- ----- -----<Value>1.83</Value><br/>
----- ----- </ReturnDetail><br/>
----- -----</Return><br/>
----- </ReturnData><br/>
<Historic>
我将其存储在如下表中:
表名=历史
列
StockId : int
StockCode: string
Year:int
StoreDate: datetime
EndDate: datetime
ReturnTypeId: int
TimePeriodId: int
我的表是第三范式吗?
您会推荐这种结构还是我应该为每个父节点创建相应的表,即进一步规范化?
最佳答案
仅从结构来看,没有明确的方法来回答这个问题 - 表是否符合 3NF 在很大程度上取决于存储在该表中的数据的含义和“语义”。
我只是在这里猜测:Year
列很可能依赖于 StoreDate
(或 EndDate
)列 - 对吗?
此外,更多猜测:StockCode
和 StockId
相互依赖 - 这也违反了 3NF - 尝试将您的股票信息放入单独的表中:
股票信息
StockId INT
StockCode STRING
然后仅在您的实际表格中保留 StockId
,并将您表格中的引用添加到 StockId
列上的 StockInformation
。
如果您消除了这两个问题,那么您的表现在很可能处于 3NF 中 - 但同样,这取决于存储的数据及其真正含义 - 无法仅根据字段结构准确检查 3NF .
关于xml - 从 XML 中提取范式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3629142/