powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как хранить тип объекта и его значение в разных колонках
4 сообщений из 4, страница 1 из 1
Как хранить тип объекта и его значение в разных колонках
    #39174994
Тэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, есть таблица настроек прайса поставщика для автоматической загрузки. Изначально планировалось, что настроек будет определенное кол-во и изменяться оно будет крайне редко, потому на каждую настройку была выделена отдельная колонка в базе.
Но на практике вышло, что настройки меняются каждую неделю, а то и чаще, и нет времени постоянно менять структуру базы, процедуры и т.д.

Хочется сделать таблицу типа:

Код: sql
1.
2.
3.
4.
5.
6.
7.
[dbo].[SupplierSettings](
	[Id] [bigint] IDENTITY(1,1) NOT NULL,
	[SupplierId] [bigint] NOT NULL,  -- ссылка на поставщика
	[SettingTypeId] [int] NOT NULL, -- тип настройки (например, номер колонки с ценой)
	[DBValue]  -- значение настройки
        DBTypeId  -- тип данных значения настройки
)



Не сталкивалась никогда, как эту таблицу сделать средствами БД? Каким типом сделать столбец DBValue?

И нужен некий справочник DBTypes (Id, Value) С типами. Как в нем хранить Value(в каком типе), чтоб после легко было в некой процедуре сделать приведение SupplierSettings.DBValue к этому типу?

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Как хранить тип объекта и его значение в разных колонках
    #39175050
ээээ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тэй,

в M$Sql есть тип Variant [i.e. sql_variant] -- именно в M$Sql 2 столбца не нужно.

в Postgres можно value класть в text, опираясь на то, что каст в text определен для всех типов. Но для блобов это будет дороговато (по дефолту там в ескейп представление будет кастится)
...
Рейтинг: 0 / 0
Как хранить тип объекта и его значение в разных колонках
    #39175071
Тэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ээээ, MSDN говорит, что

При обработке типа sql_variant SQL Server поддерживает неявное преобразование объектов других типов данных в тип sql_variant. Но SQL Server не поддерживает неявные преобразования типа sql_variant в объекты с другим типом данных.
То есть все равно надо где-то знать, в какой тип надо приобразовать и делать это явным преобразованием
...
Рейтинг: 0 / 0
Как хранить тип объекта и его значение в разных колонках
    #39176906
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ТэйДобрый день, есть таблица настроек прайса поставщика для автоматической загрузки. Изначально планировалось, что настроек будет определенное кол-во и изменяться оно будет крайне редко, потому на каждую настройку была выделена отдельная колонка в базе.
Но на практике вышло, что настройки меняются каждую неделю, а то и чаще, и нет времени постоянно менять структуру базы, процедуры и т.д.



Поздравляю, дружище, с нарушением первой НФ!
Оно никогда не проходит даром теперь наслаждайся!





Хочется сделать таблицу типа:

Код: sql
1.
2.
3.
4.
5.
6.
7.
[dbo].[SupplierSettings](
	[Id] [bigint] IDENTITY(1,1) NOT NULL,
	[SupplierId] [bigint] NOT NULL,  -- ссылка на поставщика
	[SettingTypeId] [int] NOT NULL, -- тип настройки (например, номер колонки с ценой)
	[DBValue]  -- значение настройки
        DBTypeId  -- тип данных значения настройки
)



Не сталкивалась никогда, как эту таблицу сделать средствами БД? Каким типом сделать столбец DBValue?




Да все очень просто, сделай 5 -10таблиц, по одной на каждый потенциальный тип данных.
Для любой СУБД подойдет.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как хранить тип объекта и его значение в разных колонках
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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