powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Структура таблицы
9 сообщений из 9, страница 1 из 1
Структура таблицы
    #39689458
rrttyyrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть объект, который имеет несколько типов.

- 1 и 2 тип:
1 большая TextArea
Колонка: Text

3 тип:
мин, макс и номер по умолчанию
Колонки: min_number, max_number и default_number

4 тип:
мин дата, макс дата и номер по умолчанию
Колонки: min_date, max_date и default_date

5 тип:
список со значениями и выбор дефолтного значения
Колонки: value, is_default_value, value_sort (для правильного отображения в списке)

Как правильно создать таблицу / таблицы под такой объект:

Будет ли такая таблица, таблицой курильщика:
object_id
object_type_id
text
min_number
max_number
default_number
min_date
max_date
default_date
value
is_default_value
value_sort

В зависимости от типа заполнять нужные поля, а остальные оставлять NULL.
Логику доставания данных для определённого типа делать на стороне приложения.

Или нужно выделить схожие типы и рассувать по таблицам?

Хотелось бы услышать мнение.
...
Рейтинг: 0 / 0
Структура таблицы
    #39689461
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не увлекаться добавлением новых полей, то можно сказать, что пока все норм. :)
...
Рейтинг: 0 / 0
Структура таблицы
    #39689464
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читать про EAV, читать про столбцы типа XML.
Применить то, что наиболее подойдет под ваши условия.
...
Рейтинг: 0 / 0
Структура таблицы
    #39689493
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rrttyyrr,

ну с такой структурой можно SPARSE NULL + COLUMN_SET и заполнять через xml
...
Рейтинг: 0 / 0
Структура таблицы
    #39689507
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmЧитать про EAV, читать про столбцы типа XML.
Применить то, что наиболее подойдет под ваши условия.И точно не применять тип TEXT (если версия сервера свежая)
...
Рейтинг: 0 / 0
Структура таблицы
    #39689512
Владимир Затуливетер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже согласен что пока все нормально, даже если еще несколько полей добавить, то тоже будет норм.
EAV - пока не стоит, нужно очень хорошо понимать что это и как с этим жить.

+ я бы check constraint навесил, чтобы мусор в таблице не собирался

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
alter table dbo.tbl1
add check constraint (
	( object_type_id = 1 
	and text is not null 
	and min_number is null
	and max_number is null
	and default_number is null
	and min_date is null
	and max_date is null
	and default_date is null
	and value is null
	and is_default_value is null
	and value_sort is null
	)
or
	( object_type_id = 2 
	and text is null 
	and min_number is not null
	and max_number is not null
	and default_number is not null
	and min_date is null
	and max_date is null
	and default_date is null
	and value is null
	and is_default_value is null
	and value_sort is null
	)
or
	(object_type_id = 3 
	and ...
	)
)
...
Рейтинг: 0 / 0
Структура таблицы
    #39689514
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Затуливетер,

дичь какая-то
...
Рейтинг: 0 / 0
Структура таблицы
    #39689515
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rrttyyrr,

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

Т.е. ваши объекты при их внешней схожести должны храниться в раздельных таблицах.
Как правило, хранение разнородных, но внешне схожих данных приводит к тому, что при обработке в коде появляются _фильтры_, условные переходы и тому подобное. Разработчик обычно игнорирует эти проблем, хотя ему приходится писать не новый код для новых объектов, а постоянно допиливать старый, с риском что-то усложнить или сломать. В редких случаях сводной отчетности такой разработчик потирает руки радуясь, что наконец-то обобщенная таблица ему пригодилась. Так что хорошо подумайте. В любом случае рефакторинг Вам в руки.
...
Рейтинг: 0 / 0
Структура таблицы
    #39689557
Владимир Затуливетер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKдичь какая-то
согласен, но эта "дичь" потом может сэкономить прилчино времени.
рано или поздно кто-то для типа object_type_id=4 добавит значение в Text, и забудет про min_date, max_date и default_date к примеру.
такой констрейнт подобные баги ловит на самой ранней стадии.
так что я за эту "дичь"
какие агруметы против?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Структура таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]