powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объясните кто прав: студент или человек с опытом?
25 сообщений из 82, страница 3 из 4
Объясните кто прав: студент или человек с опытом?
    #33201006
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вроде само название "естественные" ключи предпологает зависимость от
внешнего мира. В обычной жизни информация как минимум может отсутствовать
или быть неверной. Что там ИНН, обычный Ме и Жо на который вроде достаточно
битового поля может
1.Отсутсвовать (в списке физ.лиц по тем или иным причинам надо внести
юр.лицо)
2.Может быть неправильной (ошиблись при вводе/переносе из другой системы)
3.А ещё выясняется что он может меняться и нужно историю изменений хранить


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201011
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Urri Вот у нас есть таблица персон с суррогатным ключом. И сегодня мы видим, что под записью с ID = 1234 скрывается Петров, паспорт 98 76 543210.
Приходим на работу завтра - и что видим: те документы, которые оформлял Петров теперь вроде как оформлял Васечкин, паспорт 67 89 452301! Объяснение оператора: "Ну и что: раз атрибуты можно менять, мы их и поменяли. А что, нельзя было? 8-[ ]
Это я к тому, что без дополнительных мероприятий СК не могут обеспечить целостность во времени. А ЕК - могут.
Бред. Введите в систему клиента, паспорта которого вы не знаете. Или клиента со справкой об освобождении и т.п. Бред.
Про смену паспортов говорилось. При этом _если_ в сиситеме на ЕСТЕСТВЕННЫХ ключах с КАСКАДОМ (ес-но, а как же поддерживать исправления при ошибках опператора?), оператор отредактирует полностью Васькина на Пупкина, то и все вхождения (в силу каскадов) поменяются на Пупкина. Или вторичных ключей не вводить? Или каскды не использовать? (отдельные процедуры на правку ошибочных значений ключей писать?) Прямо какой-то сивый бред. Если вам надо запретить изменение некоторых "естественно-ключевых" полей, т.е. "запретить" смену "физ сущности", но оставить лазейки для правки ошибок первоначального ввода - то делается это (в силу необходимости лазеек) именно что на уровне более гибком, чем пк - т.е. или (в конце концов) уровне приложения (или хп-шек).

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



ОФТОП: И вообще "ЕК" и "СК" - "одинаково" суррогатны. Т.к. никаких "сущностей" и "атрибутов" в природе (отдельно от голов) не существует. Они в ней появляются благодаря головам. То что к примеру дебила зовут Федя, "Федя" может и не знать вовсе. Более того, когда он помрет, сущности "Федя" в природе не будет. А знать о ней, о "сущности" т.е. и об атрибуте "Федя" будут другие "сущности" (таким образом сохраняя ее "в реальном мире"). СК попросту свободен от иных функций, кроме как представлять собой идею уникальности записи внутри модели, но освобожден от попыток привязать к нему ф-ю обеспечения однозначности привязки к "физ. сущности реального мира". (ЕК, как замечено выше, не освобождает от возможности подмены "сущности". По крайней мере не всегда, и почти всегда - с сопутствующими осложнениями).
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201036
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странные вещи пишет некий чел про организацию классов и естественность ключей. тип ключей (естественный/суррогат) тут вообще никоим раком. Тут уж вопрос о составном ключе. Составной "Суррогатный" ключ в предке (id_typ,id) и такие же в потомках, но с ограничением на величину id_typ = 1|2|3...|id_classN решает вашу "задачу" "чиста на констрайнтах" не уверен, правда, что это хорошее решение (кажеца глупым хранить поле с константным значением в таблице). (да и триггер на раздачу уникумных id тут гораздо лучче).
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201056
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>кажеца глупым хранить поле с константным значением в таблице
Действительно кажется глупым, но увы, вешать обеспечение целостности на триггеры - это всегда медленнее и менее надежно чем PK/FK.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201105
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickБизнес-правило в виде структуры базы данных? При смене бизнес-правила будем менять структуру? Зае...шибись.

Вот так и появляются различные SAPы и AXAPTы с кучей программистов, обслуживающих их в виде клепания новых и переделывания старых процедур, а также добавления полей и таблиц при любом изменении требований. Даже когда НДС меняется с 20 на 18.насколько я знаю, в SAP на уровне БД даже первичные ключи не объявляются. Все это в сервере приложения. Что касается добавления новых полей, то единственный вопрос - куда добавлять - в словарь СУБД или в собственный словарь данных. Что с точки пользователя не так уж и важно. Отчеты переделавть все равно - ибо новое поле не влезает...
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201122
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman>кажеца глупым хранить поле с константным значением в таблице
Действительно кажется глупым, но увы, вешать обеспечение целостности на триггеры - это всегда медленнее и менее надежно чем PK/FK.
не знаю. Думаю все зависит от реализации СУБД. Вот например в постгрессе чек/ФК - тоже хранимка (только написанная разработчиками). С другой стороны там нет надобности заниматься "звездатым" наследованием. Там есть свое. И ваша таблица "предок" может быть вообще "виртуальной" (в ней может не быть ни одной записи) а SELECT * FROM предок; вернет всех потомков (причем вы можете получить и имя таблицы - "истинного" владельца записи в таком запросе
SELECT *, tablenaime FROM предок;

ЗЗЫ опять таки обращаю внимание, что "составной" и "суррогат" - немного разные вещи (я пытался это "немного "оспорить" в другом топике, но это не к этому разговору).
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201145
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наврал, вы получите tableoid. из которого получается tablename сверткой с pg_class по tableoid
SELECT .... c.relname AS tablename FROM ... JOIN pg_class AS c USING(tableoid)
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201506
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 авторЭто такая опция к ограничению ссылочной
да с этим никто не спорит. Просто оцените стоимость апдейта, если ваш пк входит скажем в ~10**5 записей различных детей.
А теперь оцените, насколько часто происходят такие глобальные изменения?
Что, каждый день SuperPlayer переименовывается в SuperpuperGamer? Очень часто меняют международный код валюты? По нескольку раз на неделе приходится переименовывать общепринятые обозначения марок стали в справочнике материалов?

Откуда этот миф о частом и дорогостоящем изменении идентифицирующих атрибутов сущности?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201543
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. Откуда этот миф о частом и дорогостоящем изменении идентифицирующих атрибутов сущности?
не передергивайте, речь шла не о частоте, а о цене. Цена в наличии.
Т.ч. со своим "мифом" по части цены вы вляпались. Сделали б харакирю, что ли, "родной" (задолбали уже "логики")

по поводу наличия (т.е. известности на любой момент времени) "идентифицирующего" "естественного" атрибута в любом случае - это к врачу. (ибо примеры отсутствия - выше по обсуждению)
Если система не способна взять в учет сущность, которая на момент необходимости ввода ее в систему не предоставила сведения о своем "идентифицирующем" атрибуте - это какая-то туповатая система. или "весьма ограниченная" .
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201580
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 4321
А вот сколько раз было, что ни попадя вводили в базу, делали из базы настоящую помойку, а потом прилетал жареный петух и клевал в причинное место, которым думали в то время когда проектировали ситему.
главное в проектировании - это валидация данных и производительность. Нужно минимизировать ошибку юзера и сделать так чтоб ему работалось комфортно (т.е. быстро). Лишние ключи мешают производительности. А отсутствие нужных ключей - мешает валидации.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201626
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. Очень часто меняют международный код валюты? По нескольку раз на неделе приходится переименовывать общепринятые обозначения марок стали в справочнике материалов?
гхм. Вот думаю, насколько ваши "естественные" атрибуты "естественны" .
Вы видимо совершенно правы, когда говорите о совершенно _суррогатных_ атрибутах (и "код валюты" и "обозначения марок стали в справочнике материалов" абсолютно модельные, суррогатные вещи, неприсущие как таковые ни сталям, ни валюте) . Так же например в системах учет движения по "счетам учета" "счет учета" (т.е. его "наименование" - "символьная запись") вещь абсолютно суррогатная (в течении года к тому же и неизменная, и без своего "именования" даже и не существующая (правда существует "нечто" ассоциированное с этой абстракцией,но не будем углубляцца)). Т.ч. в системах учитывающих "модельные" сущности ("счета учета", "коды валют" и т.п.) использование их в качестве ПК таки возможно оправдано. (надо оценить цену джойна - с одной стороны, и длину полей (а сталобыть и цену записи/чтения хранения) ЕК vs СК - с другой).


2. валидатор. Для валидации есть куча инструментов. Те же Уникью, к примеру, Not NULL и т.п.. Т.ч. это не аргумент в нашем случае.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201640
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторглавное в проектировании - это валидация данных
А каким боком сурогатные (или вообще любые) ключи имеют отношение к валидации?
авторЛишние ключи мешают производительности Сильно мешают? Настолько что ради этого стоит ловить гимор при глюках внешней системы?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201797
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321Вот думаю, насколько ваши "естественные" атрибуты "естественны" .
Заданы предметной областью, а следовательно -- естественны.

4321Вы видимо совершенно правы, когда говорите о совершенно _суррогатных_ атрибутах (и "код валюты" и "обозначения марок стали в справочнике материалов" абсолютно модельные, суррогатные вещи, неприсущие как таковые ни сталям, ни валюте)
Вот тут не понял, поясните. Во-первых: в чем вы видите отличие "совершенно _суррогатных_ атрибутов" от просто "суррогатных атрибутов"?
Во-вторых: код валюты и обозначения марок стали в данном примере для вас чем являются: суррогатным атрибутом, совершенно суррогатным атрибутом или естественным? (кажется их естественность вы отвергаете).

4321Т.ч. в системах учитывающих "модельные" сущности использование их в качестве ПК таки возможно оправдано
Ну о том и речь, что существуют такие естественные атрибуты, которые удобно назначить на первичный ключ, причем не зная их значение вообще не имеет смысла вводить такие записи в БД.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33201887
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.Заданы предметной областью, а следовательно -- естественны. гхм. "Атрибут" сущности (т.е. св-во "объекта реального мира") - естественен, если он (оно) не моделен. Если "предметная область" сама по себе - модель то в ней уже есть "модельные" суррогаты (каковые не есть "естественные св-ва объектов реального мира") - и они то и выступают _для вас_ в качестве ЕК.

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

во-вторых - см. выше. - тут - хфилософия, неким родом. Если вы моделируете модель (делаете кальку с кальки) то в ней уже есть куча модельных (привнесенных людяма) суррогатов, которые выступают у вас "естественными аттрибутами". Просто именно для таких случаев наблюдаеца "естественное" желание воспользоваться уже имеющимися в моделируемой модели суррогатами. (И чё тут вам неясного - ну ущепните меня - не пойму) не берите в голову. эта мысль видимо не про вас.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202085
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
область видимости

Ну например тот же поминаемый везде ИНН. Это ж не человек и не организация.
Это номер. Выдумали эти номера чтоб в разных системах один и тот же объект
идентифицировать. Т.е. писать в БД не "Рога и Копыта зарегистрированное по
адресу ..." а просто ИНН 12345678. Это суррогатный ключ в пределах
деятельности российских налоговых органов.

Если писать свою систему то можно сделать PK из ИНН, это будет естественный
ключ в пределах данной системы.


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202164
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Если писать свою систему то можно сделать PK из ИНН, это будет естественный
> ключ в пределах данной системы.

Этот номер может быть первичным ключом исключительно в базе данных МНС (или как там оно называется?). Все. Для всех остальных случаев он не будет независимым, и, следовательно, не может быть первичным ключом. Внимательно читайте у Дейта определение первичного ключа.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202181
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в БД налоговой он не является первичным ключём.

-----------
Это суррогатный ключ в пределах
деятельности российских налоговых органов.
-----------



Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202197
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> в БД налоговой он не является первичным ключём.

Абсолютно фиолетово.
Там он _может являться_ первичным ключом. Во всех остальных случаях - нет.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202233
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, причём тут ПК?

ИНН с точки зрения налоговой это суррогатный ключ т.к. она сама его от балды
присваивает подотчётным организациям. С точки зрения разработчика бух.проги
это естественный ключ т.к. является атрибутом организации
поставщика/покупателя.

И он не может быть первичным ключём нигде (хотя некоторые норовят сделать)
т.к. может отсутствовать или быть ошибочно выданым



Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202255
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> тьфу, причём тут ПК?

Цитата из [1764261]: "...Если писать свою систему то можно сделать PK из ИНН..."
PK - это primary key или у этой аббревиатуры есть другое толкование?

> ИНН с точки зрения налоговой это суррогатный ключ т.к. она сама его от балды

Кто Вам это сказал?

> С точки зрения разработчика бух.проги это естественный ключ т.к. является
> атрибутом организации поставщика/покупателя.

Кто Вам сказал, что любой атрибут может рассматриваться как естественный ключ?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202289
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> ИНН с точки зрения налоговой это суррогатный ключ т.к. она сама его от
> балды

Кто Вам это сказал?


===============
ну, если ИНН именно в налоговой возникает то не трудно догадаться что именна
она его и создаёт. Никакой смысловой нагрузки он не имеет, это просто
счётчик расчитанный на неповторяемость.
===============


> С точки зрения разработчика бух.проги это естественный ключ т.к. является
> атрибутом организации поставщика/покупателя.

Кто Вам сказал, что любой атрибут может рассматриваться как естественный
ключ?

=============
не понимаю к чему этот вопрос

если б ИНН был у каждой организации и можно было бы гарантировать что он
выдан правильно и всегда б можно было узнать какой ИНН у какой организации
то ИНН прекрасно мог бы быть первичным ключём в табличке Организации.

Все эти "если да кабы" как раз и есть то что делает использование
суррогатного ключа более предпочтительным во многих случаях.




Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202331
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Никакой смысловой нагрузки он не имеет

Например, первые две цифры - номер региона. Вы уверены, что остальная часть номера абсолютно неинформативна?

> не понимаю к чему этот вопрос

К тому, что атрибутов может быть вообще сколько угодно. Если разработчик не может гарантировать их независимость, то не может и использовать в качестве первичных естественных ключей.

> если б ИНН был у каждой организации и можно было бы гарантировать

ИНН обязан быть у любого налогоплательщика.

> ИНН прекрасно мог бы быть первичным ключём в табличке Организации.

Повторю: читайте определение первичного ключа у Дейта.

> использование суррогатного ключа более предпочтительным во многих случаях.

Использование суррогатного ключа не просто предпочтительно. Это в подавляющем большинстве случаев единственно возможный вариант.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202420
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да что вы мне дейтом своим. Сами то читали

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


ЗЫ
организация меняет ИНН, налогавая делает это, скажем, за неделю. Семь дней
организации не существует.

8)

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


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33202485
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621 Например, первые две цифры - номер региона. Вы уверены, что остальная часть номера абсолютно неинформативна? кажеца есть форма собсн-сти, а еще там и контрольная сумма кажись была зашита (если я с номером страховых не путаю).
=>Смена региона (формы собсн-ти) требует сменять ИНН=> юзать ИНН как пк стремно.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33205278
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPпусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона.
Пальцем в небо. У меня номер телефона менялся уже 3 раза а номер лицевого счета - все тот же.
;)
...
Рейтинг: 0 / 0
25 сообщений из 82, страница 3 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объясните кто прав: студент или человек с опытом?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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