Структура таблицы SQL - PullRequest
       1

Структура таблицы SQL

0 голосов
/ 19 августа 2011

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

Как правило, опрос будет содержать оценки, текстовые обзоры и дополнительную дополнительную информацию, доступную для клиентов. Теперь я думаю о том, чтобы либо сохранить каждую информацию в отдельном столбце, либо объединить все эти данные и сохранить их в виде XML в одном столбце.

Я не уверен, что будет лучшим решением, но у меня на уме следующие проблемы: - возможно ли увеличение объема собираемой информации, будет проблемой в случае одного столбца XML - может ли один столбец XML серьезно повлиять на производительность при извлечении и обработке информации из столбца xml

Ответы [ 4 ]

3 голосов
/ 19 августа 2011

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

Это редко,IMO, что хранение XML (или любого другого составного типа данных) является хорошей идеей в БД.Хотя всегда есть исключения.

2 голосов
/ 19 августа 2011

Что ж, для простоты у вас есть два варианта: динамические или статические обследования.

Динамические обследования будут выглядеть так: dynamic

Мало того, что отчетность будет более сложной,но так будет и пользовательский интерфейс.Количество вопросов неизвестно, и вам в конечном итоге понадобится логика для обработки порядка, группировки и типов данных.

Статические обследования будут выглядеть примерно так: static

Хотя вы, безусловно, сдадитесьПри некоторой гибкости решение (включая отчеты) значительно проще.Вам не нужно обрабатывать порядок, группировку или типы данных (по крайней мере, динамически).

Мне нравится утверждать, что "Простота - лучший дизайн" почти во всех.

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

Удачи!

1 голос
/ 19 августа 2011

Если вы не хотите бороться с реляционной базой данных, которая ожидает реляционные данные, вам, вероятно, нужны разумно нормализованные данные.Я не вижу в вашем случае, какое преимущество даст вам XML.Если в опросе введено несколько значений, вам, вероятно, понадобится другая таблица для записей опроса с внешним ключом для опроса.

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

Если причина, по которой вы рассматриваете XML, заключается в том, что ответы будут очень разных типов (например, обзор с оценкой, заголовок, заголовок, тело и раздел комментариев)для одного вопроса: список гиперссылок для другого вопроса и т. д.) тогда таблица ответов может фактически состоять из нескольких таблиц, чтобы можно было смоделировать данные для каждого типа вопроса.Это был бы довольно сложный случай.

Надеюсь, одной строки для ответа в одной таблице будет достаточно.

0 голосов
/ 19 августа 2011

Чтобы воспользоваться ответом Флимзи, вы просто хотите сохранить данные в базе данных, а не в определенном формате (например, XML). Возможно, на данный момент вы требуете XML, но завтра это может быть файл CSV или файл DAT фиксированной ширины. Кроме того, если вы храните только данные, вы можете использовать «мощь» базы данных для поиска по определенным столбцам информации, а затем при желании вернуть ее в формате XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...