xml - 从 XML 中提取范式

标签 xml database normalization

<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)列 - 对吗?

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

股票信息

StockId    INT
StockCode  STRING

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

如果您消除了这两个问题,那么您的表现在很可能处于 3NF 中 - 但同样,这取决于存储的数据及其真正含义 - 无法仅根据字段结构准确检查 3NF .

关于xml - 从 XML 中提取范式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3629142/

相关文章:

C# XmlSerializer : Create xmlns attribute on a nested object

java - 从 XML 文件检索数据在 Java 中有一些限制

mysql - 使用查询连接多个表

sql - 如何计算不同表中ID的出现次数

mysql - 在 MySQL 中使用单个 UPDATE 规范化字段

audio - 将 avi 文件中的音频标准化

XML 命名空间和 DTD 验证

ruby-on-rails - rails : Is the version number in 'schema.rb' used for anything?

python - tensorflow 推理时的批量归一化

java - Castor XML 绑定(bind)和 JAXB 绑定(bind)有什么区别