2011-01-03 2 views
1

Мне нужно сообщить о структуре базы данных. Мне нужно собирать данные из Интернета по одному конкретному вопросу на нескольких конкретных сайтах и ​​вставлять эти данные в базу данных.Структура базы данных для нелинейных данных

Проблема с этой задачей заключается в том, что информация не является линейной, если я пытаюсь создать таблицы с полями для всех возможных данных, я получаю много полей строк со значениями NULL. Есть ли какие-либо проблемы с этим (в конечном итоге со многими полями строк со значениями NULL)? Или я должен использовать другую структуру? Например, сохраните данные в одном поле и в этом поле, содержащем ассоциативный массив с данными.

Что я имею в виду нелинейные данных заключается в следующий:

array(
     'name' => 'Don', 
     'age' => '31' 
    ); 


array(
     'name' => 'Peter', 
     'age' => '28', 
     'car' => 'ford', 
     'km' => '2000' 
    ); 

В конкретном поиске сайта я буду хранить только «имя» и «возраст», а в другом сайте я буду хранить «имя», «возраст», «автомобиль» и «км».

Я не знаю. Если я объясню причину моей проблемы. Мой английский не очень хорош.

С наилучшими пожеланиями.

+1

было бы легче ответить на этот вопрос, если вы можете привести пример того, что выглядит данных и как она будет использоваться –

+0

Привет, я редактировал с пример. Благодарю. –

ответ

0

Ok позволяет отслеживать back..and предположит, что вы наиболее комфортно с базами данных .... всегда можно разбить нелинейную структуру линейных type..only производительности запроса будет получить удар ..

Нет проблем в строках с множеством нулевых значений. Зависит от реализации db, но я видел такие проекты раньше, и они довольно гибкие.

Позвольте мне привести пример Допустим, мы должны хранить часы работы в неделю. Но в вашем случае неделя может иметь любое количество дней.

Так вы определите таблицу со столбцами, как

StartDate, Id, MondayHour, Tuesdayhour и т.д. etc..upto SundayHour Если вы хотите добавить еще один час, как MondayHour1, просто добавить столбец и изменить ваши запросы. .

Чтобы сохранить ту же структуру, является линейным (нормализованная) способ (не уверен, что если линейный является правильным словом) просто определить следующую таблицу DayID, DAYNAME

И тогда ваша таблица часов будет StartDate, ID, DayID, Hours .. Только теперь вам нужно соединение на двух столах ,

Надежда Я понял и ответил на ваш вопрос правильно

+0

Спасибо за ответ. –

1

Такая проблема - это именно та область, где решения NoSQL превосходят. С традиционной базой данных вы должны указать все столбцы заранее, в то время как решения NoSQL дают вам возможность добавлять любые нужные вам данные.

Так что это зависит от того, какой у вас будет фиксированный объем данных. Если вы уже знаете все столбцы, которые вы будете использовать. Чем вы можете добавить столбцы как NULL.

Если вы еще не знаете все столбцы и ожидаете, что в будущем будет больше столбцов, лучше будет решение NoSQL.

+0

Спасибо за ваш ответ. –

1

У вас есть много вариантов,

  • с использованием базы данных с поддержкой объектов

  • - "- с поддержкой XML

  • ваше решение, сохраняя baseinfo в одной таблице, атрибуты в другом.

Лично я бы использовал 3), легко и быстро. И не привязывает вас к конкретному db или программному обеспечению.

С уважением, /т

+0

Спасибо за ваш ответ. –

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