2010-09-02 4 views
2

<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>
Extract нормальная форма из XML

Я храню это в таблице следующим образом:

ИмяТаблицы = Исторические

Колонны

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

ли мой стол в третьем нормальная форма?

Вы бы рекомендовали эту структуру или я должен создать соответствующие таблицы для каждого родительского узла, то есть нормализовать его дальше?

ответ

0

Как раз из структуры нет четкого способа ответить на этот вопрос: независимо от того, находится ли таблица в 3NF или нет, в значительной степени зависит от значения и «семантики» данных, хранящихся в этой таблице.

Я просто угадываю здесь: столбец Year, скорее всего, зависит от StoreDate (или EndDate) колонки - справа?

Кроме того, более угадывание: StockCode и StockId зависят друг от друга - это тоже нарушает 3NF - попробуйте поставить биржевую информацию в отдельную таблицу:

Фото Информация

StockId INT 
StockCode STRING 

и затем сохраните только StockId в своей фактической таблице и добавьте ссылку из вашей таблицы в StockInformation на столбе StockId.

Если вы удалите эти две проблемы, есть вероятность, что ваша таблица теперь может быть в 3NF, но опять же, это зависит от того, какие данные хранятся и что это значит, - не может точно проверить для 3NF только на основе структуры поля.

Смежные вопросы