<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 我的表是第三种范式吗?
你会推荐这种结构吗?或者我应该为每个父节点创建相应的表,即进一步规范化它?
发布于 2010-09-03 00:36:26
仅仅从结构上看,没有明确的方法来回答这个问题-表是否在3NF中在很大程度上取决于表中存储的数据的含义和“语义”。
我只是猜测:Year列很可能依赖于StoreDate (或EndDate)列-对吗?
另外,更多的猜测:StockCode和StockId是相互依赖的-这也违反了3NF -试着把你的股票信息放到一个单独的表中:
股票信息
StockId INT
StockCode STRING然后在您的实际表中只保留StockId,并在StockId列上添加一个从您的表到StockInformation的引用。
如果您删除了这两个问题,您的表很有可能现在可能是3NF格式-但同样,这取决于存储的数据及其真正的含义-不能仅基于字段的结构准确地检查3NF。
https://stackoverflow.com/questions/3629142
复制相似问题