Как вы управляете «списками выбора» в базе данных - PullRequest
2 голосов
/ 17 сентября 2008

У меня есть приложение с несколькими объектами «списка выбора» (используется для заполнения выпадающих списков с одним выбором). Эти объекты должны быть извлечены из базы данных. Как мне сохранить эти объекты в базе данных? Должен ли я создать новую таблицу для каждого списка выбора? Есть ли лучшее решение?

Ответы [ 16 ]

0 голосов
/ 18 сентября 2008

Здесь есть несколько подходов.

1) Создайте одну таблицу на список выбора. Каждая из таблиц будет иметь столбцы ID и Name; значение, выбранное пользователем, будет сохраняться на основе идентификатора выбранного элемента.

2) Создайте единую таблицу со всеми списками выбора. Столбцы: ID; идентификатор списка (или тип списка); Название. Когда вам нужно заполнить список, выполните запрос «выбрать все элементы, где идентификатор списка = ...». Преимущество такого подхода: действительно легко добавлять списки выбора; недостаток: немного сложнее писать запросы по группам (например, дайте мне количество записей, которые выбрали значение X ".

Я лично предпочитаю вариант 1, мне он кажется "чище".

0 голосов
/ 18 сентября 2008

Попробуйте перевернуть вопрос. Зачем вам нужно вытащить его из базы данных? Разве данные не являются частью вашей модели, но вы действительно хотите сохранить их в базе данных? Вы можете использовать OR mapper, например linq2sql или nhibernate (при условии, что вы находитесь в мире .net) или в зависимости от данных, которые вы можете хранить вручную в каждой таблице - есть ситуации, когда было бы разумно поместить все это в та же таблица, но учитывайте это только в том случае, если чувствуете, что это имеет смысл Обычно размещение разных данных в разных таблицах значительно облегчает (позднее) понимание происходящего.

0 голосов
/ 18 сентября 2008

Я сделал это двумя разными способами: 1) уникальные таблицы в списке 2) главная таблица для списка, с представлениями, чтобы дать определенные

Я предпочитаю исходный вариант, поскольку он облегчает обновление списков (по крайней мере, на мой взгляд)

0 голосов
/ 18 сентября 2008

Мы фактически создали объекты для обработки простых списков выбора. Мы создали таблицу Lookup, которая содержит все доступные списки выбора, и таблицу LookupValue, которая содержит все записи имя / значение для Lookup.

Отлично работает для нас, когда нам нужно, чтобы оно было простым .

0 голосов
/ 18 сентября 2008

Если вы не возражаете против использования строк для фактических значений, вы можете просто присвоить каждому списку разные значения list_id и заполнить одну таблицу:

item_id: int

list_id: int

текст: varchar (50)

Кажется, проще всего, если вам не нужно несколько вещей на элемент списка

0 голосов
/ 18 сентября 2008

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

select optionDesc from Options where 'MyList' = optionList

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

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