powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение атрибутов сущности - как лучше ?
15 сообщений из 40, страница 2 из 2
Хранение атрибутов сущности - как лучше ?
    #33195108
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ugnich AntonСамая вкуснятина - вывод на печать. Есть шаблон документа, в котором есть слова, например, %[День рождения фирмы]%. И система автоматом заменяет в тексте это название атрибута на значение. С варинтом "ALTER TABLE" это было бы сложнее.
Если клиент позволяет строить динамический запрос и достучаться до имен полей в БД, то SELECT * FROM ПАРТНЕРЫ WHERE ID=? и подставлять в шаблон значения соответствующих колонок по имени. Примерно так это реализовано у нас на PowerBuilder.

Кстати вопрос аналогичный locky , как вы решили вопрос с типми атрибутов? Все в строке или три поля datetime, money, varchar(255)?
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195124
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nickне ALTER TABLE, а

sp_rename 'tablename', '_old_tablename'

create tablename
(
...
)

insert tablename ( ... )
select ... from _old_tablename

А почему такая нелюбовь к ALTER TABLE, если брать именно справочник контрагентов то за последние пару лет он у нас пополнился всего пару раз с введением "КПП" для платежек и "ЕГРН" для отчетов
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195131
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets wrote:

> Кстати вопрос аналогичный *locky*, как вы решили вопрос с типми
> атрибутов? Все в строке или три поля datetime, money, varchar(255)?

4 типа: datetime,numeric(19,9),varchar(512),int

нечто вроде
Код: plaintext
1.
2.
3.
4.
create table Value(
Element int,parameter int,
vi int,vc varchar( 512 ),vd datetime,vf numeric( 19 , 9 )
)
где element - id конкретного экземпляра объекта, parameter -
идентификатор параметра, Vx - значение параметра.
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195134
Ugnich Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EstetsЕсли клиент позволяет строить динамический запрос и достучаться до имен полей в БД, то SELECT * FROM ПАРТНЕРЫ WHERE ID=? и подставлять в шаблон значения соответствующих колонок по имени. Примерно так это реализовано у нас на PowerBuilder.
Называть имена таблиц/колонок русскими буквами - "я на это пойтить не могу" (С). А иначе - меня юзеры не поймут, потому как им иногда приходиться редактировать шаблоны, в которых эти атрибуты написаны.
Нет, все-таки не вижу гибкости в этом решении.

EstetsКстати вопрос аналогичный locky , как вы решили вопрос с типми атрибутов? Все в строке или три поля datetime, money, varchar(255)?
У меня сейчас два поля: VARCHAR(255), INT. Нужны будут другие типы - добавлю.
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195151
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
Код: plaintext
1.
2.
3.
4.
create table Value(
Element int,parameter int,
vi int,vc varchar( 512 ),vd datetime,vf numeric( 19 , 9 )
)
где element - id конкретного экземпляра объекта, parameter -
идентификатор параметра, Vx - значение параметра.

Так построены только "Контрагенты" или все справочники? Используются ли хранимые процедуры для обработки всего этого? И если не секрет на чем написана клиентская часть?
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195161
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ugnich AntonНазывать имена таблиц/колонок русскими буквами - "я на это пойтить не могу" (С). А иначе - меня юзеры не поймут, потому как им иногда приходиться редактировать шаблоны, в которых эти атрибуты написаны.
Нет, все-таки не вижу гибкости в этом решении.
Ну всегда возможны алиасы
Код: plaintext
1.
2.
3.
4.
SELECT
  first_name AS "ИМЯ",
  last_name AS "ФАМИЛИЯ"
...
FROM partners
Или закачать на клиента таблицу настройки
Код: plaintext
1.
SELECT table_name, field_name, fileld_type, rus_report_name
FROM partner_alias
И сделать подстановку
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195165
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets wrote:

> Так построены только "Контрагенты" или все справочники? Используются ли
> хранимые процедуры для обработки всего этого? И если не секрет на чем
> написана клиентская часть?

Так построены все справочники, за исключением ведущихся по периодам.
Для такого рода информации используется обычная 3НФ

Хранимые процедуры используются, да. Без них - никуда :-)
Крайне сложно вместить "машину справочников" в client-side скрипты.

Клиент написан на Delphi, ранние версии с применением только стандартных
компонентов, текущая - применяется Developer Express (очень удобно в
некоторых местах, хотя и тормознуто бывает не по детски).

>Для фанатов экстремальной универсализации - возможен еще и гибридный
>подход - в течение некоторого времени система работает по варианту 2,
>накапливая список всех возможных атрибутов - а потом переходит на схему
>ALTER TABLE, соответсвенно оптимизируя запросы :)
Для фанатов :-) у меня система находится одновременно в нескольких НФ.
Те же справочники - вроде бы с одной стороны как-бы 5НФ, с другой
стороны - 2НФ.

Кстати, применяется кэш-таблица, потому как схема вида объект-аттрибут
является очень удобной для разработки, но и правда, с точки зрения
быстродейтсвия бывает крайне страшна. Приходится лавировать....
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195218
SergGol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При использовании варианта c DDL операторами в любом виде нужно бы учесть как недостаток невозможность доступа к данным в момент дабавления(удаления, изменения) состава атрибутов сущности. Что бы ни говорили о том, что это де будет делаться раз в пятилетку практика показывает, что такие манипуляции по закону подлости требуются очень срочно и как раз в то время, когда всем нужно работать. А при большом объеме данных могут еще и выполняться недостаточно быстро. То есть простым "Выйти всем на 5 минут" не обойдешься. По моему, вариант с разворачиванием атрибутов по вертикали предпочтительней. По поводу типов, то:
1. Хранить все в текстовом поле + указание типа с последующими преобразованиями.
2. Виделить несколько полей разных типов(кому места не жалко).
3. Завести несколько таблиц для атрибутов разных типов.
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195235
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergGol wrote:
> 1. Хранить все в текстовом поле + указание типа с последующими
> преобразованиями.
вах! и морочится потом с этим. А ну как чилдрен умный запихнет значения
"Вася" в параметр, который мы искренне считаем датой? и прочие, собссно,
вкусности?
> 2. Виделить несколько полей разных типов(кому места не жалко).
Дык а что, NULL у нас уже место занимает, что его жалеть надоть? как по
моему, дык первый вариант с энтой точки зрения - ваще жуть....
> 3. Завести несколько таблиц для атрибутов разных типов.
Как показывает практика такое не всегда выгодно, но случаи бывают
разные, я вполне могу себе и такое представить.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195238
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergGol wrote:
> При использовании варианта c DDL операторами в любом виде нужно бы
> учесть как недостаток невозможность доступа к данным в момент
> дабавления(удаления, изменения) состава атрибутов сущности. Что бы ни
> говорили о том, что это де будет делаться раз в пятилетку практика
> показывает, что такие манипуляции по закону подлости требуются очень
> срочно и как раз в то время, когда всем нужно работать. А при большом
> объеме данных могут еще и выполняться недостаточно быстро. То есть
> простым "Выйти всем на 5 минут" не обойдешься. По моему, вариант с
> разворачиванием атрибутов по вертикали предпочтительней. По поводу
Ха! Поле в таблицу добавляется пулей, если, конечно, не задать ему
дефолтное значение. По поводу удаления - честно говоря не помню, давно
чего-нить удалял.
А вот добавление нового аттрибута в конструкцию "Объект-аттрибут"... это
да, это есть прелесть. В моей реализации при добавлении нового параметра
предполагается добавление оного же во все существующие экземпляры
объектов нужного типа (во избежание конструкций left join при выборке
параметров, когда у некоторых экземпляров ряд парамметров может
отсутствовать)

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195249
Gorden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как все-же насчет вопроса с картинкой в этом топике ? Есть какие-нибудь варианты ?
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195252
SergGol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
Ха! Поле в таблицу добавляется пулей ...

Тем не менее вопрос блокировки таблицы в момент изменения структуры должен быть решен. Понятное дело на таблицу такого рода завязано все.
Предположим БД Oracle. В результате изменения сруктуры становятся недействительными куча объектов. Нужна перекомпиляция. Для мссиквела проще, но все равно проблема остается. Получается, что для незначительного в общем действия придеться решать много системных проблем.
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33195656
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergGol
Тем не менее вопрос блокировки таблицы в момент изменения структуры должен быть решен. Понятное дело на таблицу такого рода завязано все.
Предположим БД Oracle. В результате изменения сруктуры становятся недействительными куча объектов. Нужна перекомпиляция. Для мссиквела проще, но все равно проблема остается. Получается, что для незначительного в общем действия придеться решать много системных проблем.
С точки зрения ORACLE согласен, если рассматривать MS-Sybase никаких проблем с ALTER TABLE ADD Field не замечал.

С удалением полей не связывался, т.е. при удалении атрибута, он удаляется из настройки, но колонка в таблице с данными остается. Что на мой взгляд правильно, что бы потом у пользователей не возникли вопросы "поле на форме нам конечно не нужно, а где данные которые мы туда забили?"
...
Рейтинг: 0 / 0
Хранение атрибутов сущности - как лучше ?
    #33197307
Ugnich Anton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GordenА как все-же насчет вопроса с картинкой в этом топике ? Есть какие-нибудь варианты ?
Я бы добавил в таблицу ProductParams поле Val_OptionID. По логике, ведь, значение из списка параметров - это ещё один "тип данных" ?!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Хранение атрибутов сущности - как лучше ?
    #36608682
User_125
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как насчет XML?
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение атрибутов сущности - как лучше ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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