Задать вопрос
@evolit
Вася

Что лучше, одна большая таблица или много одинаковых и небольших?

Есть таблица "Земельные_участки" со столбцами
{ID, Разрешенное_использованиеId, Категория_землиId, Наличие_водопроводаId}

А так же вспомогательные таблицы - справочники("Разрешенные_использования", "Категории_земли", "Наличие_водопровода"), которые имеют одинаковую структуру
{ID, Text}
А сами из себя представляют просто перечень вариантов для заполнения.
Связи: Одна строка из таблицы "Разрешенное использование"(или из "Категории_земли или из "Наличие_водопровода") имеет связи со многими строками из таблицы "Земельные участки".

Вопрос: на сколько правильным (или не правильным) будет преобразовать вспомогательные таблицы в две таблицы("Справочник" и "ТипТекста") со структурой:

таблица "Справочник"
{ID, Text, TypeId}

таблица "ТипТекста"
{ID,Text}
(Text = {"Разрешенное использование", "Категория_земли","Наличие_водопровода"})
Связи: одна строка из таблицы "ТипТекста" имеет связь с несколькими строками в таблице "Справочник".
  • Вопрос задан
  • 2527 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
gbg
@gbg
Любые ответы на любые вопросы
Правильным будет вариант "много мелких таблиц".
Он позволит связать эти мелкие таблицы с основной при помощи внешних ключей, что обеспечит консистентность.

В случае же со свалкой, "великим словарем" следить за тем, что категории не перепутают, придется программисту.
Ответ написан
Комментировать
Не надо вообще хранить те справочники которые не редактируются пользователями а использовать целочисленный тип в базе ну и enum в коде, можно также хранить непосредственно значение в таблице, это избавит от лишних объединений и повысит скорость запросов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@evolit Автор вопроса
Вася
Сергей
В итоге нашёл два способа использовать ваш вариант (через Enum).

1) Через атрибут
[Description("bla bla")]
Чтение атрибута: https://dotnetfiddle.net/2qmx9w спасибо Сергей
DropDownList для MVC (через метод расширения): stackoverflow.com/a/16089319

2) Через атрибут
[Display(Name = "Blabla")]"
Чтение атрибута: https://dotnetfiddle.net/M9G4bT (по сути тоже самое)
DropDownList для MVC 5 (родной хелпер): stackoverflow.com/a/22295360

Сам способ мне лично очень нравится. Удобно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы