powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Object ID
17 сообщений из 17, страница 1 из 1
Object ID
    #33631963
StudSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто использовал в своей практике OID.
Поделитесь пожалуйста (+/-).

Заранее спасибо.
--
Учусь (пока/ещё) чего и вам желаю


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Object ID
    #33632246
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня правило - абсолютно все объекты имеют неизменяемый ID, причем для некоторых он скрытый а для других - видимый и по нему можно искать. Все ссылки между объектами только по ID. Никаких (-) пока не заметил.
Успехов.
...
Рейтинг: 0 / 0
Object ID
    #33632267
StudSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод
.... не изменяемый ID...


Уникальный в пределах всей системы (базы)? Если да, то как различаешь
объекты разных типов.
Как с зависимостями? FK то не построишь.

--
Учусь (пока/ещё) чего и вам желаю


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Object ID
    #33632513
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уникальный внутри класса потому что для некоторых классов ID открыт. Хотя можно и сквозную нумерацию устроить.
Если класс=таблица то с FK все в порядке в любом случае.
...
Рейтинг: 0 / 0
Object ID
    #33633147
StudSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но в таком случае, где же приимущества OID, если уникальность в прелелах
таблицы.
Все ссылки тогда фиксированные.
Пример: есть класс матеиалы, есть класс изделия.
Получается там где я ссылаюсь на материал, я не могу ссылаться на изделия.
И надо писать код один к одному для разных классов (элементов таблиц).

Так я и без OID могу.

Если вести единую последовательность, то как получать typeinfo (если в самом
OID - вопрос производительности).
Раздельно (TYPEID,ID) - ИМХО более заманчивее.

Как считаете?

--
Учусь (пока/ещё) чего и вам желаю


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Object ID
    #33634192
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudSW
где же приимущества OID

OID нужен для того, чтобы при появлении нового объекта его раз и навсегда жестко идентифицировать, использовать OID во всех ссылках на этот объект и контролировать целостность ссылок (т.е. не удалять объект если есть ссылки).
Тип объекта определяется не по OID, а по типу ссылки.
Про изделия и материалы: не понял проблемы. Продажа - изделий, покупка -материалов, никакой путаницы. Но если надо иногда их объединяют в один класс с явным указанием типа.
...
Рейтинг: 0 / 0
Object ID
    #33634290
StudSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод
....
Тип объекта определяется не по OID, а по типу ссылки.
....

Так какая же здесь разница в - можно ведь использовать обычную реляционную
модель, т.е. - занчение превичного ключа.
Про материалы и изделия пример вот в чем:
1. Материалы покупаются, изделия производятся, т.е. он разные по натуре и
имеют отличительные наборы реквизитов.
2. Но..., и материалы, и изделия участвуют в складских операциях
(перемещение, списание, ...)
3. Есть производственные операции. В простом случае производство из
материалов изделий.
А в случае много ступенчатого производства (+Производство из изделий и
материалов)
+ Есть необходимость добавления (бетонов, каркасов). Они все по
определению различны,
но имеют общие в некотором аспекте черты.

--
Учусь (пока/ещё) чего и вам желаю


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Object ID
    #33634298
StudSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается по твоему подходу необходимо использовать для каждого вида свой
"документ"
и заниматьсч копи-пастом.
А если в документе могут участвовать две группы одновременно, тогда как?

--
Учусь (пока/ещё) чего и вам желаю


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Object ID
    #33634309
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OID это и есть первичный ключ (если класс=таблица)
Оычно изделия, материалы, детали, сборки - это все один класс с подклассами.
...
Рейтинг: 0 / 0
Object ID
    #33634356
StudSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, допустим OID уникален в пределах класса и подклассов.
Как организовать "наследование"?
Как получать информацию в какой именно подкласс входит объект?

--
Учусь (пока/ещё) чего и вам желаю


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Object ID
    #33634456
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudSW
Как получать информацию в какой именно подкласс входит объект?

Атрибут Тип объекта = ссылка на классификатор типов, возможно иерархический
...
Рейтинг: 0 / 0
Object ID
    #33634996
StudSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. паралельно что бы по ссылке, получать TypeInfo надо ссылку оформлять в
виде (TYPID,ID)
что и будет в данном случае OID.
Либо держать таблиуц OBJECTS, в которой по OID получать (TYPID,ID).

Иерархию можно хранить в таблице CLASSES (TYPID,PARENTID,NAME,TABNAME,...),
в которой подразумевать что все наследники должны иметь реквизиты родителей
+ свои.

А всё правильно понял?

Но всё равно остается вопрос зависимостей. Т.к. обычно СУБД по жестко
определяют какая таблица с какой по какому связана. А необходимо, чтобы она
по данным TYPID определяла к какой таблицы (т.е. классу) относитя объект.

Ведь триггерная зависимость в много ползовательской среде не надёжна
(выполняется в контексте транзакции). Не использовать же ту трехзвенку?

--
Учусь (пока/ещё) чего и вам желаю


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Object ID
    #33635054
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TypeID не исключает нормальные constraint'ы.

Таблицы дочерних классов ссылаются на таблицы родителей (может и на одну корневую) по OID. Это гарантируется constraint'ом. Даже cascade update работать будет.

А TypeID нужен когда тебе нужно УТОЧНИТЬ тип объекта. Например, узнать, является ли данный ОБЪЕКТ сотрудником. Или - сотрудник - руководителем подразделения (со специфическими свойствами).

В принципе, TypeID может быть и не скаляром.

Например, какое-то юрлицо проявляет свойства
а) поставщика
б) покупателя.

Правда, так я никогда не делал, но может получиться интересно.
...
Рейтинг: 0 / 0
Object ID
    #33636077
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudSWВедь триггерная зависимость в много ползовательской среде не надёжна
Плюньте в лицо тому, кто сказал Вам такую глупость. Реализация ссылочной целостности триггерами - малоосмысленное извращение, но при прямых руках работать будет как надо.
...
Рейтинг: 0 / 0
Object ID
    #33636352
StudSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос не в кривости реализации, а в том что тригеры не могут заменять FK во
всех случаях. Пример: одна транзакция удалила запись, но ещё не
зафиксировна. А другая пытается сослаться на эту запись - тригер эту
ситуацию не обработает (работает в контексте транзакций), а внешний ключ
такого не допустит (работает вне транзакций).

Другое дело, что с определёнными ограничениями можно полагаться и на
тригерную целостность: вроде запрета изменения PK, запрета прямого удаления
(только пометка),
удаление (физическое) в монополном режиме.
В принципе в таком режиме наверное и предется работать.

А на счет иерархического представления классов - идея интересная.

--
Учусь (пока/ещё) чего и вам желаю


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Object ID
    #33636404
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudSW
Вопрос не в кривости реализации, а в том что тригеры не могут заменять FK во
всех случаях.
Чушь.

StudSWа внешний ключ такого не допустит (работает вне транзакций).
Чушь, причем очевидная и непродуманная. Это утверждение означает, что в одной транзакции невозможно вставить две записи, одна из которых ссылается на другую, либо удалить родительскую запись вместе с дочерними.

StudSWУчусь (пока/ещё) чего и вам желаю
Тогда учебное задание: реализовать триггерами полноценную ссылочную целостность между двумя таблицами.
...
Рейтинг: 0 / 0
Object ID
    #33636507
PridobreY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudSW
Иерархию можно хранить в таблице CLASSES (TYPID,PARENTID,NAME,TABNAME,...),
в которой подразумевать что все наследники должны иметь реквизиты родителей
+ свои.

А всё правильно понял?

Но всё равно остается вопрос зависимостей. Т.к. обычно СУБД по жестко
определяют какая таблица с какой по какому связана. А необходимо, чтобы она
по данным TYPID определяла к какой таблицы (т.е. классу) относитя объект.

Если я правильно понял что имел ввиду автор, по поводу материалов и изделий.
Все они являются ТМЦ(родитель), у которой в минимальном случае есть, к примеру, наименование и тип. Конкретный объект ТМЦ(наследник) имеет дополнительные свойства: цвет, вкус, прочность и т.д.
Приведу три примера реализации хранения свойств наследников.

1. Избыточность данных, денормализация.
Все объекты хранятся в одной таблице с полным перечнем возможных свойств, и сылкой на классификатор типов.
При заполнении для нужного типа, заполняются нужные поля.
2. Объекты разных типов, хранятся в разных таблицах.
Для поддержания целостности, создается табличка, которая хранит значения первичных ключей объектов.
Причем, первичный ключ уникален в пределах таблиц объектов всех типов.
При добавлении объекта любого типа, добавляется запись в таблицу первичных ключей. На эту таблицу ссылается та, которая содержит строки доукментов.
3. Все объекты хранятся в одной таблице с перечнем общих свойств, и ссылкой на классификатор типов. Тип имеет набор дополнительных свойств объекта.
Эти свойства хранятся в отдельных таблицах, в зависимости от типа данных(или в одной, с денормализацией). При добавлении объекта, заполняется набор его свойств, предопределенный для типа.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Object ID
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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