powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
78 сообщений из 78, показаны все 4 страниц
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36204473
Ivan Shkuropadsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вопрос, касающийся зависимых сущностей и идентицифирующих связей.

Есть две таблицы, связанных идентифицирующей связью, например:
"Организации" и "Телефоны организации".

У "Организаций" простой первичный ключ (ID).
У "Телефонов" кроме собственного ID в состав первичного ключа входит ID организации.

Т.е. как обычно описывается в литературе:
Если внешний ключ сущности используется в качестве ее первичного ключа (PK) или как часть составного первичного ключа , то сущность является зависимой от родительской сущности. Если внешний ключ не является первичным и не входит в составной первичный ключ, то сущность является независимой от родительской сущности.

Появилась необходимость ввести такой атрибут "Организации" как "Основной телефон". Соответственно, для этого в таблицу "Организации" добавляется ссылка на запись дочерней таблицы "Телефоны". А поскольку первичный ключ у "Телефонов" составной, то получается нечто странное и некрасивое:

"Организация" ссылается на "Телефон", который зависит от "Организации".

И вот получается, что внешний ключ "Организации" так же как и первичный "Телефонов" тоже должен состоять из двух полей.... Но какой смысл в таблице "Организации" иметь свой собственный ID в составе внешнего ключа....

А если ссылаться только на ID "Телефона", то тогда и его первичный ключ должен состоять только из одного поля? Но тогда "Телефоны" по определению, данному в литературе, не будут являться зависимыми сущностями?...

Вопрос собственно: как правильнее поступать в данном случае?
1. не включать ID организации в PK телефона?
2. включать ID организации в состав внешнего ключа самой же организации? (бред...)
3. или так связывать эти таблицы вообще нельзя?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36204716
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan ShkuropadskyПоявилась необходимость ввести такой атрибут "Организации" как "Основной телефон".
Это не атрибут "Организации", это атрибут табл. "Телефоны"
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36204923
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все нормально, только не надо было делать составной примарный ключ у дочерней таблицы. Нужен был просто внешний ключ.
С уважением, Naf
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36204972
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf,

А всё ж таки действительно, как лучше (какие подводные камни м.б.): поле в главной - указатель на дочернюю (на основной телефон) или поле в дочерней с указанием "типа" телефона (основной/неосновной)?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36205149
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

а что ты упёрся в поля телефонов и организаций. Можно завести таблицу связей между телефонами и организациями, так что телефон не будет содержать атрибутов организации (ID организации и признак "основной") и наоборот Организация ничего не будет знать о телефонах.

Но вообще решение зависит от того, что ты моделируешь.

Если речь идёт о "Карточке организации" (т.е. это не две сущности "Организация" и "Телефон", а на самом деле одна) без первичного учёта телефонов, то телефоны надо рассматривать как часть этой карточки (как запись детализации счёта есть неотъемлемая его часть и без него не существует) со всеми необходимыми атрибутами, например с признаком "основной".
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36205182
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan ShkuropadskyПоявилась необходимость ввести такой атрибут "Организации" как "Основной телефон". Соответственно, для этого в таблицу "Организации" добавляется ссылка на запись дочерней таблицы "Телефоны". А поскольку первичный ключ у "Телефонов" составной, то получается нечто странное и некрасивое:

"Организация" ссылается на "Телефон", который зависит от "Организации".

И вот получается, что внешний ключ "Организации" так же как и первичный "Телефонов" тоже должен состоять из двух полей.... Но какой смысл в таблице "Организации" иметь свой собственный ID в составе внешнего ключа....А в чем трагедия-то ? Как раз это и является гарантией, что основной телефон будет принадлежать именно этой организации, а никакой другой. Так что нет повода к панике, все нормально.
А вот если сделать телефоны независимой сущностью с собственным идентификатором, то организации можно будет привязать в качестве основного любой телефон, даже никак не относящийся к этой организации. Или придется контролировать корректность номера кодом в тригере или процедуре.

P.S. IMO, предпочтительнее контролировать корректность данных стандартным механизмом СУБД с помощью внешних ключей. Не надо бояться составных ключей.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36205263
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA,

нехорошесть в том, что придётся сначала создать организацию, потом прописать к ней телефоны, а потом в организации указать основной телефон. Т.е. в транзакции как минимум лишний update нужен, а то ещё и запрос к телефонам за ID основного, или такая экзотика, как отложенная проверка ограничений целостности.

Поиск по основному номеру будет очень неэффективным, поскольку для определения этого признака придётся заглядывать в "Организации" (или наоборот, перебирать все организации и смотреть какие у них основные телефоны).

Видимо от таблиц нужно подняться на более высокий уровень абстракции и повторно выполнить нормализацию и поосторожнее обходиться с сурогатными ключами.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36205267
Фотография Taper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модIvan ShkuropadskyПоявилась необходимость ввести такой атрибут "Организации" как "Основной телефон".
Это не атрибут "Организации", это атрибут табл. "Телефоны"
Вот за все случаи не скажу, но именно в своей БД пошел именно подобным путем. Признак "главности" прописывается в поле дочерней таблицы.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36205316
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabChA,
нехорошесть в том, что придётся сначала создать организацию, потом прописать к ней телефоны, а потом в организации указать основной телефон. Т.е. в транзакции как минимум лишний update нужен, а то ещё и запрос к телефонам за ID основного, или такая экзотика, как отложенная проверка ограничений целостности.А зачем собственно ? Ссылка на телефон запросто может быть nullable, в постановке явно не указывается наличие основного телефона в организации. Посему необходимость в столь длинной транзакции или отложенной проверки не очевидна. Но если уж номер указан, то обязан принадлежать этой организации, что и будет контролировать составной внешний ключ.
Хотя, честно скажу, пока писал предыдущий пост, также склонялся к варианту с дополнительной таблицей. Он, IMO, лучше всего соответствует озвученной постановке проблемы.
mcureenabПоиск по основному номеру будет очень неэффективным, поскольку для определения этого признака придётся заглядывать в "Организации" (или наоборот, перебирать все организации и смотреть какие у них основные телефоны).Вы же не считаете все запросы в которых участвует больше одной таблицы неэффективными ? При нормальной нормализации, простите за тавтологию, таких запросов большинство. К тому, что не увидел сути проблемы, что куда-то надо будет "заглядывать", так как в большинстве случаев это приходиться делать всегда.
mcureenabВидимо от таблиц нужно подняться на более высокий уровень абстракции и повторно выполнить нормализацию и поосторожнее обходиться с сурогатными ключами.При условии, если мы начнем расширять постановку задачи, например, в сторону ранжирования телефонов. Пока она не кажется очевидной.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36205333
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA,

авторНо если уж номер указан, то обязан принадлежать этой организации, что и будет контролировать составной внешний ключ.

Если этот признак в таблице "Телефоны", то принадлежность телефона организации выполняется автоматически без каких либо вспомогательных FK и проверок.

Код: plaintext
К тому, что не увидел сути проблемы, что куда-то надо будет "заглядывать", так как в большинстве случаев это приходиться делать всегда.

В данном случае есть простое решение, которое позволяет не делать лишних движений. Довольно странно плодить "тяжёлые" запросы только потому что в системе таковые уже имеются.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36205371
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabChAНо если уж номер указан, то обязан принадлежать этой организации, что и будет контролировать составной внешний ключ.Если этот признак в таблице "Телефоны", то принадлежность телефона организации выполняется автоматически без каких либо вспомогательных FK и проверок.Правильно, но тогда могут быть нарушены другие условия. От отсутствия основного номера, что по постановке не страшно, до того что все существующие могут стать основными, что явно некорректно. Декларативным механизмом стандартных ограничений СУБД уже сложно выразить наличие только одного(!) основного номера, посему контроль придется переложить на некий исполняемый код. Не то, чтобы это смертельно, но, IMO, где можно обойтись без него, лучше обойтись.
В некоторых СУБД в CHECK можно использовать запросы, но всё равно вариант с полем "основной" в таблице телефонов мне кажется сомнительным. Бросается его явная избыточность, из множества телефонов только один является основным, но признак присутствует у всех. Таким образом вариант с отдельной таблицей "основной номер организации" считаю наиболее правильным.
mcureenabChAК тому, что не увидел сути проблемы, что куда-то надо будет "заглядывать", так как в большинстве случаев это приходиться делать всегда.В данном случае есть простое решение, которое позволяет не делать лишних движений. Довольно странно плодить "тяжёлые" запросы только потому что в системе таковые уже имеются.Честно говоря уже перестал понимать, о каком множестве "тяжелых" запросов идет речь. Пользователю не нужны идентификаторы организации и телефонов, а то, что за ними стоит, т.е., наименование организации и номер телефона в его естественной форме. В таком случае, с учетом раздельности сущностей организации и телефонов, слияние между ними придется делать по любому. А вот если номер телефона ввести в основной ключ таблицы телефонов(ид_орг,номер), то, при обратной связи в таблицу организаций, номер в своём естественном виде и так будет представлен в таблице организаций, что как раз и удовлетворяет пожелание избегать любых мало-мальских осложнений при выполнении запросов.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36205598
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Т.е. как обычно описывается в литературе:

Не читайте такую литературу. Примите как аксиому: независимая сущность - независимый идентификатор. В вашем случае проблема вот в чем: предприятие не является собственником телефонного номера, она арендует его у оператора. Т. е. фактически идентификатор телефонного номера выглядит как-то так [оператор][тип сети]...[характеристики сети, связанные с маршрутизацией, протоколами, способами соединения и пр.]...[способ идентификации абонентского устройства][публичный идентификатор абонентского устройства]. На самом деле в большинстве случаев поддерживать настолько глубокую идентификацию нет необходимости, используется только публичный идентификатор абонентского устройства. Но при этом важно понимать, что это ничто иное, как оправданное упрощение, подразумеваемые связи остались, несмотря на то, что не регистрируются.

Т. о. в данном случае правильной будет структура данных отдельно для номерной емкости, отдельно для предприятий и отдельно - для связей. В таблице связей легко можете использовать дополнительные атрибуты (типа желаемого "основного" телефонного номера. На самом деле это тоже неправильная реализация, телефонный номер не может быть ни основным, ни вспомогательным.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36206118
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Shkuropadsky пишет:

> Появилась необходимость ввести такой атрибут "Организации" как "Основной
> телефон". Соответственно, для этого в таблицу "Организации" добавляется
> ссылка на запись дочерней таблицы "Телефоны". А поскольку первичный ключ
> у "Телефонов" составной, то получается нечто странное и некрасивое:
>
> "Организация" ссылается на "Телефон", который зависит от "Организации".

Ну и что ж некрасивого ? Только то, что ты не сможешь сразу
создать организаию с телефоном, сначала нужно будет создать
организацию без телефона, создать телефон, и потом прописать его
в организацию.

>
> И вот получается, что внешний ключ "Организации" так же как и первичный
> "Телефонов" тоже должен состоять из двух полей....

Смысла иметь одно и то же поле с двумя значениями нет.

Но какой смысл в
> таблице "Организации" иметь свой собственный ID в составе внешнего ключа....

У тебя будет два поля -- ссылки на телефон в организации.
"IDОрганизации" -- первичный ключ, NOT NULL, и одновременно первое поле ссылки
на телефон.
"IDТелефона" -- второе поле ссылки на телефон, NULL.

> А если ссылаться только на ID "Телефона", то тогда и его первичный ключ
> должен состоять только из одного поля?

Можно делать телефоны как с одним полем в ПК -- как независимую сущность,
так и с двумя полями -- как зависимую.

Но тогда "Телефоны" по
> определению, данному в литературе, не будут являться зависимыми
> сущностями?...

Зависимые сущности и зависимые данные -- это не совсем одно и то же.
Даже если телефон будет независимой сущностью, а это значит только,
что в его ПК не входят ссылки на другие сущности, запись о телефоне
может быть связана в БД с записью о организации. Отличие
будет только в том, можно ли будет создать телефон без организации
(при независимой сущности "Телефон") или нельзя (при зависимой).


> Вопрос собственно: как правильнее поступать в данном случае?

Можно и так, и так. Тебе только надо посмотреть с точки зрения
предметной области, что будет правильнее.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36207920
Ivan Shkuropadsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо за ответы!
Со многими согласен, все точки зрения поняты ;)
Подведу промежуточный итог...
(варианты с дополнительными таблицами не рассматриваем)

1. Организация и Телефон - независимые сущности , т.е. телефонный номер выдается организации и может теоретически существовать без самой организации.

Здесь все вроде просто:

Организация:
--------------------------
IDОгранизации (Identity)
IDТелефонаОсновного
--------------------------
PK(IDОгранизации )
FK(IDТелефонаОсновного)
_______________________


Телефон организации:
--------------------------
IDТелефона (Identity)
IDОгранизации
--------------------------
PK(IDТелефона)
FK(IDОгранизации)
_______________________


Никаких вопросов здесь нет, все понятно. Действительно - это тот случай, когда суцщности независимые, а данные - зависимы.



2. Организация и Телефон - зависимые сущности , т.е. телефонный номер организации не может существовать без самой организации на уровне сущностей.

Если создавать структуру с помощью CASE-средства (например, MySQL Workbench OSS), то добавление идентифицирующей связи приводит к следующему:

Организация:
--------------------------
IDОгранизации (Identity)
IDОгранизации2 - поле автоматически добавлено при создании ссылки на Телефон
IDТелефонаОсновного
--------------------------
PK(IDОгранизации )
FK(IDОгранизации2, IDТелефонаОсновного) - внешний ключ включает в себя два поля
_______________________


Телефон организации:
--------------------------
IDТелефона (Identity)
IDОгранизации
--------------------------
PK(IDТелефона, IDОгранизации) - составной первичный ключ - зависимая сущность
FK(IDОгранизации)
_______________________


А вот тут возникает два вопрос:

Если все-таки Организация ссылается на Телефон, то как видно выше - в таблице Организация появляется автоматически поле "IDОрганизации2", дублирующее (де-факто) IDОрганизации !!!! это ведь дополнительное место на диске!

Была идея удалять это "лишнее" поле, но тогда возникали проблемы с программированием на LINQ (MS .NET Enitity Framework): насколько я понял - необходимо чтобы внешний и первичный ключ полностью соответствовали друг другу.

Так вот - стоит ли терпеть это "лишнее" поле? Или нужно любыми способами избавляться от такой неприятной по своим последствиям идентифицирующей связи между этими двумя сущностями?


Еще раз спасибо за отклики!
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36207974
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Shkuropadsky wrote:

> Если все-таки Организация ссылается на Телефон, то как видно выше - в
> таблице Организация появляется _автоматически_ поле "IDОрганизации2",
> дублирующее (де-факто) IDОрганизации !!!! это ведь дополнительное место
> на диске!

Это -- проблема твоего CASE-средства. Например, ErWin бы так не сделал.
Но решается это легко -- поставь у них одинаковые rolename-ы,
т.е. у атрибута, генерирующего "IDОрганизации2" нужно поставить rolename
"IDОрганизации". Будет одно поле. Если не понятно, что такое "rolename",
то нужно просто поле переименовать в "IDОрганизации" CASE их должен
слить в одно поле. Если не сольёт -- это баг. Если не даёт сливать,
говорит, что уже такое поле есть -- ну, это уже не баг, это -- фича,
брак функциональности. Ну, тогда либо руками его переименовывать
в выходном скрипте, либо CASE менять.

> Так вот - стоит ли терпеть это "лишнее" поле? Или нужно любыми способами
> избавляться от такой неприятной по своим последствиям идентифицирующей
> связи между этими двумя сущностями?
НеТ, не стоит его терпеть. Не нужно оно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36207998
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> составной первичный ключ

Просто забудьте, что они бывают. Типичный признак структуры данных, спроектированной баранами. Исключительно фактологических баз данных, для которых это можно было бы использовать, в природе не существует, это миф. И структуры данных, и данные темпоральны.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208013
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621 wrote:

> Просто забудьте, что они бывают. Типичный признак структуры данных,
> спроектированной баранами.

Вовсе нет. Как раз в рассматриваемом случае есть два пути (которые
автор только что изложил). С независимой сущностью "Телефон" и -- с зависимой.
Во втором случае, если делать правильно, без составного ключа не обойтись.

В общем, мнение твоё, guest_20040621, очень экстремистское.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208146
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я знаю два типа логики: Галилея и Аристотеля. Боюсь, MasterZiv, оба прошли мимо Вас.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208190
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan Shkuropadsky

Организация:
--------------------------
IDОгранизации (Identity)
--------------------------
PK(IDОгранизации )
_______________________


Телефон организации:
--------------------------
IDТелефона (Identity)
IDОгранизации
прочие атрибуты телефона
--------------------------
PK(IDТелефона)
FK(IDОгранизации)
_______________________

и никаких проблем
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208431
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

вопрос то он задает по тупому
чеку хотся, щоб допустим в гриде был "Организация, телефон основной" и при этом хотелось бы этот телефон из лукапа менять по желанию из "Телефоны организации" и при этом НЕ вводить дополнительный признак "основности" в "Телефоны организации" и при этом обойтис только ДДЛ.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208439
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Я знаю два типа логики: Галилея и Аристотеля. Боюсь, MasterZiv, оба прошли мимо Вас.Судя по лёгкости перехода на личности, рядом с Вами они тоже не задерживались. Отсутствие логики и вменяемых аргументов всегда можно заменить оскорблениями.
Непонятно, зачем временами прикрываетесь Дейтом, он ведь тоже типичный баран. И вместо железной уверенности, что основной ключ может быть только атомарным, блеет какую-то ерунду про фунциональные зависимости подмножеств атрибутов и выбор основного ключа из множества потенциальных.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208461
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA,

Дейт и вправду баран. БД НЕ есть модель предметной области. В БД НЕТ макрообъектов (множества типов) с указанием конечного числа отношений построенных на этом множестве, нет описания точки входа в макротип. Ключ в БД просто уникальный идентификатор на всякую непонятную фигню.......
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208596
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Судя по лёгкости перехода на личности

Дружище, задолбало, когда одни и те же люди дают одни и те же идиотские советы.

> зачем временами прикрываетесь Дейтом, он ведь тоже типичный баран

Как раз Дейт не баран. Проблема в том, что он пишет для баранов, его работа так и называется "Введение...". Понимаете? Т. е. он очень доступно излагает примитивные вещи, чтобы бараны получили хотя бы поверхностное представление о проектировании. Соответственно, примеры из его работы носят исключительно теоретический характер. И если бы бараны внимательно читали Дейта, то безусловно обратили бы внимание на требование независимости ключа. Доступно?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208648
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, ChA, раз уж Вы взяли на себя смелось рассуждать о логике, вопрос: объясните, почему при проектировании баз данных следует использовать логику в интерпретации Галилея, а не Аристотеля. Опционально: в чем с точки зрения проектирования заключается принципиальная разница между логикой Аристотеля и логикой Галилея?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36208839
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Дружище, задолбало, когда одни и те же люди дают одни и те же идиотские советы.Меня тоже, дружище. Один и тот же участник нередко несёт откровенный вздор без всяких пояснений. Вероятно, считает категоричность достаточным критерием истины. Сдается, мне, что кто-то сильно его обманул. То ли Галилей, то ли Аристотель.guest_20040621Проблема в том, что он пишет для баранов, его работа так и называется "Введение...". Понимаете? Т. е. он очень доступно излагает примитивные вещи, чтобы бараны получили хотя бы поверхностное представление о проектировании. Соответственно, примеры из его работы носят исключительно теоретический характер. И если бы бараны внимательно читали Дейта, то безусловно обратили бы внимание на требование независимости ключа.Браво. В то время как Дейт рассуждает о подмножествах ключевых и неключевых атрибутов, нормализации и функциональных зависимостях, активно пользуясь примерами с составными ключами, некто из независимости ключа легко выводит его атомарность. Аристотель с Галилеем в этот момент явно были в другом месте.guest_20040621объясните, почему при проектировании баз данных следует использовать логику в интерпретации Галилея, а не Аристотеля. Опционально: в чем с точки зрения проектирования заключается принципиальная разница между логикой Аристотеля и логикой Галилея?Если этот вопрос Вас действительно сильно беспокоит, то настоятельно рекомендую погуглить, можете даже начать с Википедии. Доступно излагаю ? Сами справитесь ? Потом доложите. Ну, а если не одолеете, ничего страшного, просто не чешите, само пройдёт.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36209057
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA, дружище, Вам даже Дейта читать рано, несмотря на то, что он пишет очень просто. Начните с логики. Любой.

> без всяких пояснений

Дорастете до пояснений - получите их. Пока просто читайте.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36210543
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават Юсифовчеку хотся, щоб допустим в гриде был "Организация, телефон основной"
Я с гридами на редактирование не работаю ;)
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36210630
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621ChA, дружище, Вам даже Дейта читать рано, несмотря на то, что он пишет очень просто. Начните с логики. Любой.guest_20040621, дружище, если судить по дефектам Вашей, то читать вообще вредно. Хотя, надеюсь, что выборка непредставительная и просто имеет место индивидуальная непереносимость.guest_20040621Дорастете до пояснений - получите их. Пока просто читайте.Дружок, от Вас никто никогда ничего не получит. Кроме раздутых щёк и непомерного самомнения. Боюсь, это неизлечимо.

P.S. Благодаря таким вот "проектировщикам" базы и "засраны" суррогатными ключами при одновременном дублировании фактической информации и нарушении ссылочной целостности. Тоже наверное читали Галилея с Аристотелем, а потом много думали.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36210895
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA, меняйте работу. Мало того, что Вы напрасно получаете деньги за проектирование баз данных, Вы просто глупый человек.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36210932
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621ChA, меняйте работу. Мало того, что Вы напрасно получаете деньги за проектирование баз данных, Вы просто глупый человек.Дружище, не плюйтесь в экран. Посмотритесь в зеркало и Ваше душевное равновесие будет восстановлено. Кстати, неплохо также познакомиться с Гегелем и Кантом, они тоже сильно помогают в проектировании БД, надо только их внимательно слушать.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36210948
Ivan Shkuropadsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, не ссорьтесь! :)


guest_20040621 ,
если я правильно вас понял - вы против того, чтобы в состав первичного ключа зависимой сущности входил первичный ключ родительской сущности ?
(считаем, что все ключи - суррогатные (int, автоинкремент))
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36210957
Ivan Shkuropadsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават Юсифов
чеку хотся, щоб допустим в гриде был "Организация, телефон основной" и при этом хотелось бы этот телефон из лукапа менять по желанию из "Телефоны организации" и при этом НЕ вводить дополнительный признак "основности" в "Телефоны организации" и при этом обойтис только ДДЛ.
Сахават Юсифов , не обязательно грид, но в целом все правильно :)
Или вы считаете такой подход к интерфейсу и/или структуре БД неправильным?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211026
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, примарный ключ должен быть:
1. суррогатным
2. атомарным
2.1 возможное исключение распределенные БД, тогда составной: ключ базы и ключ В базе
С уважением, Naf
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211129
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA, с равновесием у меня все в порядке, спасибо. Я испытываю сожаление, что напрасно потратил время на контакт с Вами: тупость - худшее из человеческих качеств.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211274
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод, Ivan Shkuropadsky,

я воще то сделал акцент ДОПУСТИМ в гриде :)
Да нормальная практика, "основное место работы", "старшая жена", "любимый ресторан" ... вся жисть из этого интерфеса и состоит. а вот РСУД не может адекватно все это отразить, там кроме ссылочной целостности (и то до первого селекта без ключа :):):), т.е офигенные возможности трансформации без учета семантики) нифига нету :(
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211318
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Я испытываю сожаление, что напрасно потратил время на контакт с Вами: тупость - худшее из человеческих качеств.Поздравляю, дружок, осознание своих недостатков - верный путь к выздоровлению.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211327
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafИМХО, примарный ключ должен быть:
1. суррогатным
2. атомарным
Можете обосновать необходимость суррогатного атомарного основного ключа в таблицах, реализующих, например, связи сущностей M:N ?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211430
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf пишет:

> ИМХО, примарный ключ должен быть:
> 1. суррогатным
> 2. атомарным
> 2.1 возможное исключение распределенные БД, тогда составной: ключ базы и
> ключ В базе

Это всё верно, но для независимой сущности. Есть сущности исключительно
зависимые. Там лишний суррогатный ключ -- это зло. А составной -- нормальное
и правильное решение.

Пример:
Счёт-фактура -- независимая сущность с суррогатным ключём.

Позиция счёта-фактуры -- зависимая сущность с составным ключём:
идентификатор счёта-фактуры и
номер (идентификатор) позиции счёта-фактуры.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211444
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA пишет:

> Дружище, не плюйтесь в экран.

ChA, не надоело ещё на троллей время и нервы тратить ?
Ты не пиши ничего -- он и заткнётся.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211460
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
ChA, не надоело ещё на троллей время и нервы тратить ?
Ты не пиши ничего -- он и заткнётся.
Да, нет, даже забавно стало :) Впрочем, ты прав, общаясь с троллем сам понемногу в него превращаешься, надо завязывать.

P.S. Просто "задолбало" наблюдать, как любой топик с участием анонима превращается в топик самолюбования. Вот все вокруг такие бараны, и один он, весь из себя такой красивый, прямо в центре стада
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211900
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChANafИМХО, примарный ключ должен быть:
1. суррогатным
2. атомарным
Можете обосновать необходимость суррогатного атомарного основного ключа в таблицах, реализующих, например, связи сущностей M:N ?
Пример: 2 сущности - Организации, ФизЛица
множественная ассоциация между ними: Работник(Организация,Физлицо) - многие-ко-многим
Организация может содержать множество работников, Физлицо может быть работником нескольких организаций: в разный период действия, а также быть внешним или внутренним совместителем.
Сущности начислений и удержаний работников имеют ссылки именно на ассоциативную сущность Работник: именно от параметров ассоциации (оклад, срок выслуги) зависят расчеты по ним.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36211914
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Naf пишет:

> ИМХО, примарный ключ должен быть:
> 1. суррогатным
> 2. атомарным
> 2.1 возможное исключение распределенные БД, тогда составной: ключ базы и
> ключ В базе

Это всё верно, но для независимой сущности. Есть сущности исключительно
зависимые. Там лишний суррогатный ключ -- это зло. А составной -- нормальное
и правильное решение.

Пример:
Счёт-фактура -- независимая сущность с суррогатным ключём.

Позиция счёта-фактуры -- зависимая сущность с составным ключём:
идентификатор счёта-фактуры и
номер (идентификатор) позиции счёта-фактуры.

Почему не сделать атомарный первичный ключ и внешний ключ на документ-владелец?
Если понадобится отразить в агрегированной таблице по какой строке начислен НДС, то достаточно будет добавить атомарный внешний ключ на таблицу позиций.
Если же позиция изменится, то в вашем случае придется ее менять и во внешней таблице
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212095
Ivan Shkuropadsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за высказанные мнения! :)

Я чувствую, моя проблема сейчас в том, что не могу выработать самостоятельно принципы, по которым сущности следует рассматривать как зависимые...

"Независимая сущность не нуждается в информации из другой сущности для идентификации уникального экземпляра." (http://www.interface.ru/ca/comp.htm)

Т.е. если не отвлекаться на суррогатность ключей, то исходить нужно именно из возможностей самоидентификации.

Поэтому, например:
- Банковский счет (организации) - это независимая сущность (от организации).
- Сотрудник (организации) - это независимая сущность (идентифицируется как конкретный человек).
- Подразделение (организации) - это зависимая сущность.
- Адрес (один из нескольких адресов организации) - это независимая сущность.

А вот, например,
- Контракт (с одним и только одним клиентом) - это зависимая (от клиента) сущность? Ведь у контракта есть свой номер и дата. Следовательно ссылка на клиента для идентификации не требуется. Т.е. контракт - независимая сущность.

И еще:
Страна, Регион, Город.
Регион - зависимая от Страны сущность, поскольку без страны не идентифицируется.
Город - зависимая от Страны сущность, НО! независимая от Региона, поскольку есть страны без регионов и город идентифицируется только с учетом страны.

Я нигде не ошибаюсь в рассуждениях?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212653
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават ЮсифовДа нормальная практика, "основное место работы", "старшая жена", "любимый ресторан" ... вся жисть из этого интерфеса и состоит(
Есть сущность Человек, у него есть атрибут Список мест работы, один из элементов этого списка имеет атрибут Основное, а остальные - По совместительству. И только так.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212658
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChAМожете обосновать необходимость суррогатного атомарного основного ключа в таблицах, реализующих, например, связи сущностей M:N ?
Элементарно: аудит
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212673
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модСахават ЮсифовДа нормальная практика, "основное место работы", "старшая жена", "любимый ресторан" ... вся жисть из этого интерфеса и состоит(
Есть сущность Человек, у него есть атрибут Список мест работы, один из элементов этого списка имеет атрибут Основное, а остальные - По совместительству. И только так.у человека нет основного места работы, а есть основное место работы на такую-то дату
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212687
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nafу человека нет основного места работы, а есть основное место работы на такую-то дату
Все значения атрибутов сущности действительны на дату
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212690
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Shkuropadsky,

Проблема в том, что все сильно зависит от задачи, области применения. И у всех участников свое видение, собственно спор отчасти из-за этого, мне кажется.
Например, сущность Адрес является возможно независимой в БД регистрации граждан по месту проживания. Однако, в бухгалтерской программе адрес контрагента вообще может не являться сущностью, а быть просто строковым реквизитом или сильно зависимой от контрагента сущностью - контакт.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212693
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модNafу человека нет основного места работы, а есть основное место работы на такую-то дату
Все значения атрибутов сущности действительны на датуопять же, на какую. вам возможно достаточно на текущую, а в другой задаче нет.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212708
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan Shkuropadsky
Я нигде не ошибаюсь в рассуждениях?
Все сущности независимы по определению. Просто между ними м.б. ссылки.
Например: есть Организации и Подразделения, Подразделения ссылаются на Организации. Но можно получить список всех подразделений независимо от Организации по какому-либо признаку.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212709
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf wrote:

> Пример: 2 сущности - Организации, ФизЛица
> множественная ассоциация между ними: Работник(Организация,Физлицо) -
> многие-ко-многим

Ну так вы будете суррогатный ключ лепить в работнике ?
К слову, у нас в БД он таки налеплен. Но там это диктовалось
методологией разработки.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212719
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Naf wrote:

> Пример: 2 сущности - Организации, ФизЛица
> множественная ассоциация между ними: Работник(Организация,Физлицо) -
> многие-ко-многим

Ну так вы будете суррогатный ключ лепить в работнике ?
К слову, у нас в БД он таки налеплен. Но там это диктовалось
методологией разработки.

видите у вас он тоже есть))
и внешний ключ-ссылка из других таблиц к этой ассоциации
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212720
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf wrote:

> Почему не сделать атомарный первичный ключ и внешний ключ на
> документ-владелец?

Потому что не нужно. Вы его никогда по-хорошему не будете использовать.
его можно использовать только при CRUD-операциях с одной записью
позиции. Но эти же операции можно делать и с составным ключём,
с тем же успехом.

> Если понадобится отразить в агрегированной таблице по какой строке
> начислен НДС, то достаточно будет добавить атомарный внешний ключ на
> таблицу позиций.

А можно - составной. Эффект один и тот же.

И ещё -- обычно (вроде бы как) по позиции счёта-фактуры НДС не
начисляют, начисляют по всей фактуре вместе. Я это к тому,
что если на эту таблицу есть ссылки, то уже появляется резон
в суррогатном ключе, но я как раз хотел привести пример, когда
этого не происходит.

> Если же позиция изменится, то в вашем случае придется ее менять и во
> внешней таблице

PK никогда не меняется, что вы. Если PK меняется, это -- к доктору.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212808
Ivan Shkuropadsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод
Все сущности независимы по определению. Просто между ними м.б. ссылки.

Хм... А как же теория баз данных с её сильными и слабыми сущностями?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212866
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212881
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Shkuropadsky,

есть сильные и слабые ограничения на связи между сущншстями а не силь и слаб сущности
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36212904
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модСахават ЮсифовДа нормальная практика, "основное место работы", "старшая жена", "любимый ресторан" ... вся жисть из этого интерфеса и состоит(
Есть сущность Человек, у него есть атрибут Список мест работы, один из элементов этого списка имеет атрибут Основное, а остальные - По совместительству. И только так.
необязательно

никто не мешает

Чек(ид, (ЧМР)основноместоработы)
ЧМР(ид, Чек(работник), МР (местоработы))
МР(ид)
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213109
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават Юсифовнеобязательно
А как получить список МР с указанием основной ?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213147
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan Shkuropadsky
Хм... А как же теория баз данных с её сильными и слабыми сущностями?
Все теории придумали, когда уже существовали СУБД и практика проектирования БД. Стоят они немного.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213279
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

а "Основное место" это просто дополнительная роль МР в допотношении Чек_МР1 (Основное место)
а список получается от Чек_МР
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213287
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf wrote:

> видите у вас он тоже есть))
> и внешний ключ-ссылка из других таблиц к этой ассоциации

У нас совсем другая причина. У нас в БД всё -- объекты,
и идентификация у них унифицированная. Только поэтому
там суррогатный ключ.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213294
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовMasterZiv,

А что за картинко ? Я не понял. Только интересно, в каком тулзе нарисовано.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213300
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов,

не лучше так
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213343
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов,
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213347
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

своя будет называтся ViPRoS :) проходит регистрацию и сертификацию
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213349
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Визуализтор, интерпретатор, Построитель Реляционно-Объектных Структур :):):)
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36213579
Фёдоров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Т.е. как обычно описывается в литературе:

Не читайте такую литературу. Примите как аксиому: независимая сущность - независимый идентификатор. В вашем случае проблема вот в чем: предприятие не является собственником телефонного номера, она арендует его у оператора. Т. е. фактически идентификатор телефонного номера выглядит как-то так [оператор][тип сети]...[характеристики сети, связанные с маршрутизацией, протоколами, способами соединения и пр.]...[способ идентификации абонентского устройства][публичный идентификатор абонентского устройства]. На самом деле в большинстве случаев поддерживать настолько глубокую идентификацию нет необходимости, используется только публичный идентификатор абонентского устройства. Но при этом важно понимать, что это ничто иное, как оправданное упрощение, подразумеваемые связи остались, несмотря на то, что не регистрируются.

Т. о. в данном случае правильной будет структура данных отдельно для номерной емкости, отдельно для предприятий и отдельно - для связей. В таблице связей легко можете использовать дополнительные атрибуты (типа желаемого "основного" телефонного номера. На самом деле это тоже неправильная реализация, телефонный номер не может быть ни основным, ни вспомогательным.

Да, именно такой подход и используем. Сильно упрощает жизнь. Всегда интересно знать Ваше мнение.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36216276
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafChAМожете обосновать необходимость суррогатного атомарного основного ключа в таблицах, реализующих, например, связи сущностей M:N ?
Пример: 2 сущности - Организации, ФизЛица
множественная ассоциация между ними: Работник(Организация,Физлицо) - многие-ко-многим
Организация может содержать множество работников, Физлицо может быть работником нескольких организаций: в разный период действия, а также быть внешним или внутренним совместителем.
Сущности начислений и удержаний работников имеют ссылки именно на ассоциативную сущность Работник: именно от параметров ассоциации (оклад, срок выслуги) зависят расчеты по ним.Честно говоря, не ожидал столь широкой трактовки таблицы связи, под которую можно подвести любую таблицу, из которой есть ссылки на пару любых сущностей. Ваш пример описывает скорее процесс, чем состояние. Не то, чтобы это принципиально что-то меняет, но суть вопроса затемняет. Поэтому поправлюсь, подразумевались таблицы, в которых для идентификации любой из её строк достаточно упомянутых ссылок. Навскидку:
"Фильм"-"Жанр"

"Книга"-"Автор"

"Рецепт"-"Ингредиент"

"Диагноз"-"Симптом"

"Сплав"-"Элемент"
и т.п.
При этом, таблица связи может иметь какие-то дополнительные поля, это неважно. Но ключ уже есть - идентификаторы обоих сущностей(пусть каждый из них суррогатен и атомарен). Что даст добавления в такую таблицу ещё одного поля - суррогатного атомарного идентификатора ? И выбор его в качестве основного ключа ? А вот если отказаться от идентифицирующей пары, хотя бы, в качестве альтернативного ключа, то возникает реальная опасность, получить сколько угодно повторяющихся пар с одинаковыми значениями. И зачем ?
_модЭлементарно: аудитВ принципе, та же проблема. Для идентификации строки недостаточно ссылок, нужны дополнительные поля, например, время события. Но тогда столкнемся с другой проблемой, дискретность, с которой можно получить время от компьютера, да и хранить тоже. Не говоря уж о том, что, в многозадачной среде события могут происходить "одновременно". Поэтому лучшим вариантом здесь действительно является суррогатный ключ, благодаря тому, что генератор суррогатных значений сериализует обращения.
_модВсе сущности независимы по определению. Просто между ними м.б. ссылки.
Например: есть Организации и Подразделения, Подразделения ссылаются на Организации. Но можно получить список всех подразделений независимо от Организации по какому-либо признаку.Хотелось бы увидеть это определение. На мой взгляд, выглядит спорно. Иначе зачем говорить о том, что они независимы, если других(по определению) не бывает.
Возможность независимого доступа, IMHO, вовсе не означает независимости описываемых в БД сущностей, это свойство РБД, так как все данные хранятся в раздельных равнодоступных плоских таблицах. В иерархических же системах хранения данных такой доступ был бы "нелегален".
В данном примере, удаление организации автоматически подразумевает удаление всех его подразделений. Они попросту не могут существовать вне организации. Что это, если не зависимость ?
Да и ценность получения списка подразделений независимо от организации сомнительна.

P.S. Удобство и применимость суррогатных ключей не оспаривалось. Они нужны для решения разного рода практических задач, начиная с упрощения запросов, физического размера БД, скорости слияний, для той же сериализации, наконец. Оспаривалась необходимость автоматического их включения в любую таблицу и полный отказ от составных ключей. Хуже того, суррогатный ключ может провоцировать на отказ от альтернативных ключей. К сожалению, это реальность, приходилось сталкиваться с таким подходом.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36220349
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChAОни попросту не могут существовать вне организации. Что это, если не зависимость ?

Сущности ссылаются друг на друга - вот и появляется иллюзия зависимости. Так подразделение просто нельзя добавить, если нет организации - это просто обязательное поле. И удалить ничего нельзя, если есть ссылки.
ChAДа и ценность получения списка подразделений независимо от организации сомнительна.
Ну например все ИТ подразделения всех организаций
Проще говоря - сурр. ключ никому не мешает, но может оказаться полезен в любой момент развития системы.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36221767
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модChAОни попросту не могут существовать вне организации. Что это, если не зависимость ?Сущности ссылаются друг на друга - вот и появляется иллюзия зависимости. Так подразделение просто нельзя добавить, если нет организации - это просто обязательное поле. И удалить ничего нельзя, если есть ссылки.Сущности равнодоступны, вот и появляется иллюзия независимости. IMHO, вполне симметричный аргумент.
У меня создалось впечатление, что со стандартом IDEF1X Вы совсем не знакомы, равно как и с понятиями идентифицирующей и неидентифицирующей связи.
Судя по всему, определения не будет._модChAДа и ценность получения списка подразделений независимо от организации сомнительна.Ну например все ИТ подразделения всех организацийКак-то уже обсуждалось нечто подобное. В большинстве случаев, полезность такой информации имеет разве что статистический характер. "Есть ложь, есть наглая ложь, а есть статистика"©. Не то, чтобы она вовсе бесполезна, но в данном примере её ценность стремится к нулю. Например, в данном случае, станет известно, что из 10 организаций 5 имеют IT-отделы, хотя лично я бы не взялся определить их только по названию подразделения. И что ?_модПроще говоря - сурр. ключ никому не мешает, но может оказаться полезен в любой момент развития системы.Т.е., места он не просит, индекс тоже обходится бесплатно ?
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36221929
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChAУ меня создалось впечатление, что со стандартом IDEF1X Вы совсем не знакомы, равно как и с понятиями идентифицирующей и неидентифицирующей связи.
Бесполезные понятия.
Т.е., места он не просит, индекс тоже обходится бесплатно ?[/quot]
Это да.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36223933
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модChAУ меня создалось впечатление, что со стандартом IDEF1X Вы совсем не знакомы, равно как и с понятиями идентифицирующей и неидентифицирующей связи.Бесполезные понятия.Следовательно, бесполезна и декларативная ссылочная целостность. Удручающая тенденция.

P.S. Наткнулся на забавный пример из практики одного из "светочей", близкого соратника Дейта, автора Practical Issues in Database Management: A Reference for the Thinking Practitioner . Вместо 4 сущностей сделал 5, но так и не обеспечил декларативной ссылочной целостности. Но все таблицы с обязательным атомарным суррогатным ключом и никаких идентифицирующих связей. Печальное зрелище, IMHO.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36224008
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA,

Тупой товарищ какой-то этот паскаль, как и дейт
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36224015
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так конечно не хватает в СКЛ CHECK ограничени Plan.Company.ID=Employee.Company.ID
вот как только эту фигню вводишь, сразу все становися кайф :)
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36224200
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChAСледовательно, бесполезна и декларативная ссылочная целостность.
С чего бы это ? Если атрибут сущности есть ссылка на другую сущность, то необходимо обеспечить отсутствие битых ссылок. Кто и как это будет делать - вопрос второй.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36225061
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,

Т.е., предлагается перетащить составные ключи? Таким образом СКЛ решает указанную ChA пробему, но это решение не красивое. Во первых составной ключ-мигант РАЗДЕЛЕН, его частей можно убить, можно интерпретировать по отдельности, их нельзя без допусилий нормаотно редактировать и т.д. А суррогат все это опеспечивает, но имеет свои недостатки (указанное выше + невозможен нормальный лукап без доп усилий). Если ввести чек констрейнт для целостности + лукап поле для суррогата (да хоть вычислимое поле) в метаданных, то суррогат намного лучше составных ключей.
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36225096
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что интересно, в NET DataSet этот механизм реализован. :)
...
Рейтинг: 0 / 0
Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
    #36228664
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модChAСледовательно, бесполезна и декларативная ссылочная целостность.Если атрибут сущности есть ссылка на другую сущность, то необходимо обеспечить отсутствие битых ссылок.До тех пор, пока это касается только пары соседних отношений, не вопрос. Но переходя на уровень БД в целом и отказываясь от составных ключей, автоматически отказываемся от одной из удобных возможностей обеспечить логическую непротиворечивость данных стандартными механизмами СУБД.
Я ведь не зря дал эту ссылку . Типичная ситуация, возникать может совершенно с разными "действующими лицами". В случае варианта BF , проверка на участие работника только в проектах "своей" организации(или подразделения в рамках одной организации, не суть) лежит на СУБД. При любой попытке подключить его к плану "чужой" организации сработает ограничение по FK.
Вариант Fabian Pascal будет честно отрабатывать только на "соседей", обеспечивая, так сказать, целостность на уровне домена, но зато в таблице участников проекта может запросто оказатся противоречивая информация, т.к, формально, работника легко подключить к проекту "чужой" организации. При этом, он был вынужден добавить ещё одну сущность, чтобы остаться в рамках атомарности ключей.
_модКто и как это будет делать - вопрос второй.В этом, IMO, и заключается основное противоречие между "остроконечниками" и "тупоконечниками". Мне более правильным кажется подход, когда непротиворечивость данных в БД, по максимуму, держится на стандартных механизмах декларативных ограничений. Это последний бастион, так сказать. И в этом случае, составные ключи могут играть очень важную роль, в том числе, и повышая производительность определённого вида запросов. Понятно, что это не панацея от всех бед, так как не все ограничения бизнес-логики возможно решить декларативно на уровне современных РСУБД. И хотя в стандарте SQL 2003 появились любопытные, на первый взгляд, вещи, которые могли бы улучшить ситуацию, но, судя по темпам миграции ведущих игроков на рынке РСУБД в сторону стандартов, боюсь, они нескоро войдут в стандартный арсенал.
Вы же, насколько понимаю, сторонник упрощённого подхода и большинство проблем с непротиворечивостью данных на уровне БД, может за исключением самых простых, готовы решать процедурно. У меня он не вызывает принципиальных возражений, если грамотно реализован, но это, скорее, исключение, чем правило. Был неоднократным свидетелем картины, когда проектировшик БД, похоже, полагал, что его роль заключается в простом добавлении во все таблицы атомарного суррогатного ключа и дело в шляпе. Всё, что потом натягивалось на это сверху, выглядело нисколько не лучше. Результат был предсказуем, в данных можно было найти немало "мусора", что подчас приводило к странного вида запросам, например, активного использования DISTINCT.
...
Рейтинг: 0 / 0
78 сообщений из 78, показаны все 4 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Зависимые сущности и идентифицирующие связи: ссылки основной таблицы на записи дочерней
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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