powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объясните кто прав: студент или человек с опытом?
82 сообщений из 82, показаны все 4 страниц
Объясните кто прав: студент или человек с опытом?
    #33188174
Романыч84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
История такова: я делаю дипломную работу на большом комбинате для маленького цеха. Спроектировал базу данных и принес на рецензирование в инженерный центр. Ведущий специалист посмотрел и заставил переделывать. Мотивировал вот чем: я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.). Он сказал что все то что вноситься руками не может являться ключом таблицы. Пришлось везде ставить автоинкрементируемые поля, даже в связующих таблицах. Он сказал что так делают все специалисты баз данных. Кто прав? Объясните.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33188181
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
imho, человек с опытом правильно говорит.
Например, списали старое оборудование, а вновь закупленное зарегистрировали под тем же инвентарным. Как быть? удалять старую запись из таблицы?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33188190
Романыч84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как быть с тем, что могут по запарке ввести 2 строки с одинаковыми данными, не будеш же отслеживать дубли?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33188197
Романыч84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, и еще. а как мотивировать то, что в связующих таблицах тоже стоят автоинкр. поля, даже в тех что связались по предыдущим полям?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33188211
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора как быть с тем, что могут по запарке ввести 2 строки с одинаковыми данными, не будеш же отслеживать дубли?
На это есть есть уникальные ключи, которые в крайнем случае можно отключить. А с первичными ключами так не получится
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33188234
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите в этом разделе форума: тема обсуждалась неоднократно.
Дело в том, что автоинкременты в большинстве случаев способны защитить нас от множества ошибок при проектировании. Но полностью заменить собой естественные ключи они не могут. По многим причинам.
При использовании автоинка, по крайней мере, там, где у нас в таблице есть комбинация полей, составляющая естественный ключ, должен быть по такой комбинации построен уникальный "кандидатный" индекс.
Теперь что у Вас.
"...я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.)."
Но ведь эти инвентарные номера - это не естественные ключи! Они в журналах так и появляются: в виде автоинкремента. Т.е. бухгалтер открывает гроссбух, идет на последнюю страницу, в новую запись пишет номер предпоследней записи плюс один. ;-)
В Вашем случае прав опытный товарищ. Программа сама должна исполнять роль генератора инвентарных номеров и номеров по журналу.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33188259
Тип-Топ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Романыч84История такова: я делаю дипломную работу на большом комбинате для маленького цеха. Спроектировал базу данных и принес на рецензирование в инженерный центр. Ведущий специалист посмотрел и заставил переделывать. Мотивировал вот чем: я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.). Он сказал что все то что вноситься руками не может являться ключом таблицы. Пришлось везде ставить автоинкрементируемые поля, даже в связующих таблицах. Он сказал что так делают все специалисты баз данных. Кто прав? Объясните.
См. Ключ или отмычка
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33188563
Фотография Lamer@fools.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Романыч84История такова: я делаю дипломную работу на большом комбинате для маленького цеха. Спроектировал базу данных и принес на рецензирование в инженерный центр. Ведущий специалист посмотрел и заставил переделывать. Мотивировал вот чем: я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.). Он сказал что все то что вноситься руками не может являться ключом таблицы. Пришлось везде ставить автоинкрементируемые поля, даже в связующих таблицах. Он сказал что так делают все специалисты баз данных. Кто прав? Объясните.

Click and read .
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33189515
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Романыч84 ... Ведущий специалист посмотрел и заставил переделывать. Мотивировал вот чем: я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.). Он сказал что все то что вноситься руками не может являться ключом таблицы.
... Кто прав? Объясните.Специалист не прав по двум причинам. Первая - его задача дать рецензию, а не заставлять переделывать. У него может быть свое мнение, но дипломник имеет право защищать свое.

Вторая - это вопрос технический и в разных случаях хороши разные варианты. Они много раз обсуждались. Если бы это было однозначно, то таких обсуждений не было бы. В качестве примера, пусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Или даст аргументы для операторов компании делать поиск абонента по некоторому ID.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33189547
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP В качестве примера, пусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Или даст аргументы для операторов компании делать поиск абонента по некоторому ID.
на моей памяти 2-ды менялся номер телефона. (и у массы соседей тоже). кхм. идиотское предложение, имхо. But - "Ничего личного".
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33189769
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 PVP В качестве примера, пусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Или даст аргументы для операторов компании делать поиск абонента по некоторому ID.
на моей памяти 2-ды менялся номер телефона. (и у массы соседей тоже). кхм. идиотское предложение, имхо. But - "Ничего личного".Так что было после замены номера? Какой код лицевого счета на квитанции? А какой код спрашивают в кассе при оплате? Или какой код называете, когда звоните на АТС?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33189921
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что было после замены номера? Какой код лицевого счета на квитанции? А
какой код спрашивают в кассе при оплате? Или какой код называете, когда
звоните на АТС?
---------------------

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

Касательно вопроса топика - так чё здесь спрашивать-то? У препода и спросить
можно чтоб объяснил


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33189988
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024
Так что было после замены номера? Какой код лицевого счета на квитанции? А
какой код спрашивают в кассе при оплате? Или какой код называете, когда
звоните на АТС?
---------------------

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

К стати, преподаватель мог в процессе учебы применять естественный ключ. Как тогда быть с рецензентом?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33189996
MLeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPВ качестве примера, пусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Или даст аргументы для операторов компании делать поиск абонента по некоторому ID.
У меня три номера. В одной компании. Я "един в трех лицах"?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33190078
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP Так что было после замены номера? Какой код лицевого счета на квитанции? А какой код спрашивают в кассе при оплате? Или какой код называете, когда звоните на АТС?
кхм. это не мои проблемы. Т.ч. не помню. (и я не напрягаюсь узнавать, не было ли в афтрах их БД изврастченцеф ( ничего личного ).
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33190232
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 PVP Так что было после замены номера? Какой код лицевого счета на квитанции? А какой код спрашивают в кассе при оплате? Или какой код называете, когда звоните на АТС?
кхм. это не мои проблемы. Т.ч. не помню. (и я не напрягаюсь узнавать, не было ли в афтрах их БД изврастченцеф ( ничего личного ).Боже! Какая это пародия на анонизм! - сказал анонист, познав женщину ( ничего личного ).
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33190505
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ник игрока. Но уже есть автоинкрементный суррогатный ключь. Ник уникальный. Но зачем тогда суррогатный ключь? В умной книжке я прочитал, что суррогатные ключи есть смысл создавать не только в случае отсутствия естественного, но и для ускорения работы БД. Ведь поиск по полю int провести проще, чем по полю VARCHAR(32). А с другой стороны я как-то првык при создании таблицы первым полем писать что-то типа id serial primary key.

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


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33191000
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP познав женщину
думал, как же ваше психическое связало тему обсуждения с цитируемым анекдотом. Остается предположить наличие у вас-с девиации на естественные ключи. Бросьте это дело. Расслабьтесь. Найдите женщину. На крайняк - вручную.
ничего личного
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33191023
Фотография Lamer@fools.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для чукчей, которые думают, что они писатели, а не читатели привожу http://www.informix.com.ua/articles/key/key.htm] ссылку ещё раз.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33196900
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024
таблица "игроки" вероятно связана с таблицей "игры". При сменен ника с
УльтроКиллер на УльтроМегаКиллер нужно будет поменять ник этого игрока в
таблице "игры" везде где он встречается и потом в таблице "игроки"
И в чём проблема?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33197036
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. 1024
таблица "игроки" вероятно связана с таблицей "игры". При сменен ника с
УльтроКиллер на УльтроМегаКиллер нужно будет поменять ник этого игрока в
таблице "игры" везде где он встречается и потом в таблице "игроки"
И в чём проблема?
проблема в том, что не замочив всех, кто в танке, "УльтроКиллер" не достоин звания "УльтроМегаКиллер".
А так - никаких проблем
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33197105
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати про суррогатные ключи.

Они автоматом позволяют привести базу после к 3НФ к НФБК.
И вообще нормализацию упрощают сильно.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33197412
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. 1024
таблица "игроки" вероятно связана с таблицей "игры". При сменен ника с
УльтроКиллер на УльтроМегаКиллер нужно будет поменять ник этого игрока в
таблице "игры" везде где он встречается и потом в таблице "игроки"
И в чём проблема?
В технике реализации. До тех пор, пока не все СУБД поддерживают deferred foreign keys, попытка выполнить эту операцию натыкается на совершенно идиотские проблемы и требует не менее идиотских решений. Например, обнаружив, что ключ мешает заменить ник игрока, гениальный разработчик обычно говорит - ладно, вставим новую запись с новым ником, перенаправим все ссылки, потом старую удалим. Делают так - и натыкаются, например, на бизнес-правило "разные игроки не должны иметь одинаковый email", попросту говоря срабатывает другой constraint. Делают обход этого, вляпываются в третье..... Другой, более гениальный вариант - мелькающие периодически на форумах вопросы "а как мне временно отключить constraint". Есть, наверное, и третий, и четвертый.....

Итогом всего является кое-как работающая, неоправданно сложная программа, плюс гордый человек, который "умеет решать сложные практические задачи".
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33198213
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Владимир П. 1024
поменять ник этого игрока в таблице "игры" везде где он встречается и потом в таблице "игроки"
И в чём проблема?
До тех пор, пока не все СУБД поддерживают deferred foreign keys, попытка выполнить эту операцию натыкается на совершенно идиотские проблемы и требует не менее идиотских решений. Например, обнаружив, что ключ мешает заменить ник игрока, гениальный разработчик обычно говорит - ладно, вставим новую запись с новым ником, перенаправим все ссылки, потом старую удалим. Делают так - и натыкаются, например, на бизнес-правило "разные игроки не должны иметь одинаковый email", попросту говоря срабатывает другой constraint. Делают обход этого, вляпываются в третье..... Другой, более гениальный вариант - мелькающие периодически на форумах вопросы "а как мне временно отключить constraint". Есть, наверное, и третий, и четвертый.....

Ой, ужас какой рассказываете.
Если в БД нет CONSTRAINT ... ON UPDATE CASCADE, то можно реализовать каскадное обновление через триггер. Всегда обновление поля и запуск назначенных на это событие триггеров происходит атомарно -- и только после триггерного обновления, когда база снова в согласованном состоянии, происходит проверка constraint'ов.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33198454
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столько времени занимаюсь базами данных, а понятия не имею что такое ON UPDATE CASCADE, хотя... дайте подумать.... А! Мазь от геморроя! Только зачем мне мазь? И геморрой мне ни к чему. Ну его этот геморрой, буду пользоваться старым дедовским способом: только суррогатные ключи, еще ни разу не подводили меня.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33198488
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот интересный вопрос по поводу:
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33198496
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodronА вот интересный вопрос по поводу:
не то нажал...
Так вот вопрос:
Какие могут возникнуть аномалии или просто какие минусы при использовании суррогатных ключей? Я за свой пока еще небольшой опыт ни разу не пожалел, что практически всегда использовал autoincrement (indentity).
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33198503
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня даже выдумать аномалию по этому поводу не получается

--------------------
Не учи отца и баста!
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33198570
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickУ меня даже выдумать аномалию по этому поводу не получается
И я тоже представить не могу...
Ежели только место дополнительное эти ключи занимают - так и ладно...
Может чего со скоростью происходит?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33198858
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinКстати про суррогатные ключи.

Они автоматом позволяют привести базу после к 3НФ к НФБК.
И вообще нормализацию упрощают сильно.
Это все равно, что выключать свет зажмуривая глаза:).
Ограничения целостности (которые и выражаются естественными ключами) кто отслеживать будет? Никто - тогда правильней говорить "без ограничений целостности жить автоматом легче".
Сохраняем бизнес-правила - тогда суррогатные ключи добавляются к естественным, а не заменяют их. Old NickУ меня даже выдумать аномалию по этому поводу не получается

--------------------
Не учи отца и баста!
С закрытыми-то глазами :).
Пример ограничения "Тот же", требующего идентифицирующей миграции (ИМ) ключа (Не совсем в тему - идентифицирующая миграция может быть и суррогата, но когда применяют СК, как правило НЕ применяют ИМ, так что где-то рядом с темой):

Таблицы: СТРАНА, РЕГИОН, ПАРТНЕРСТВО .

Связи:
РЕГИОН >-находится в -- СТРАНА
ПАРТНЕРСТВО >-включает участник1 -- РЕГИОН
ПАРТНЕРСТВО >-включает участник2 -- РЕГИОН

Бизнес-правило:
Регионы-партнеры должны находится в одной стране.

Если ключ СТРАНА мигрирует в ключ РЕГИОН, то внешние ключи участник1 и участник2 на автомате могут поддерживать бизнес-правило. Если нет - пишем проверку ручками...
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33199112
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бизнес-правило нельзя зашивать в код, вернее даже в структуру базы. Это всегда пользовательская фича и она может меняться, поэтому в данном случае я бы сделал бизнес-правило в виде процедуры-обработчика, подвешенной к событию (уж какое это событие, определить по вкусу).
Действует бизнес-правило - вызывается обработчик, перестало действовать - отключили. Причем отключил пользователь из пользовательского интерфейса.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33199239
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Таблицы: СТРАНА, РЕГИОН, ПАРТНЕРСТВО .

Кто Вас научил так проектировать?

> Регионы-партнеры должны находится в одной стране.

Кто Вам сказал, что это бизнес-правило?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33199252
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Бизнес-правило нельзя зашивать в код, вернее даже в структуру базы.

Сегодня, похоже, день откровений. Кто Вам сказал такую чушь? Автора - в студию.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33199410
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бизнес-правило в виде структуры базы данных? При смене бизнес-правила будем менять структуру? Зае...шибись.

Вот так и появляются различные SAPы и AXAPTы с кучей программистов, обслуживающих их в виде клепания новых и переделывания старых процедур, а также добавления полей и таблиц при любом изменении требований. Даже когда НДС меняется с 20 на 18.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33199518
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickСтолько времени занимаюсь базами данных, а понятия не имею что такое ON UPDATE CASCADE
Это такая опция к ограничению ссылочной целостности, которая при обновлении первичного ключа каскадно обновляет внешние ключи у подчиненных полей.

Цитаты из "Data Definition Guide" и "Language Reference". СУБД -- InterBase 6.

<tconstraint> = [CONSTRAINT constraint]
FOREIGN KEY ( col [, col …]) REFERENCES other_table
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

Referential integrity checks are available in the form of the ON UPDATE and ON DELETE options to the REFERENCES statement. When you create a foreign key by defining a column or table REFERENCES constraint, you can specify what should happen to the foreign key when the referenced primary key changes. The options are:

NO ACTION [Default]: The foreign key does not change (can cause the primary key update or delete to fail due to referential integrity checks);
CASCADE The corresponding foreign key is updated or deleted as appropriate to the new value of the primary key;
SET DEFAULT Every column of the corresponding foreign key is set to its default value; fails if the default value of the foreign key is not found in the primary key;
SET NULL Every column of the corresponding foreign key is set to NULL.

If you do not use the ON UPDATE and ON DELETE options when defining foreign keys, you must make sure that when information changes in one place, it changes in all referencing columns as well. Typically, you write triggers to do this.

CREATE TABLE PROJECT (
. . .
TEAM_LEADER INTEGER REFERENCES EMPLOYEE (EMP_NO)
ON DELETE SET NULL
ON UPDATE CASCADE
. . .);
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33199618
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто такая опция к ограничению ссылочной
да с этим никто не спорит. Просто оцените стоимость апдейта, если ваш пк входит скажем в ~10**5 записей различных детей. А если еще и злоупотребляете вхождением его (на стороне связанных записей) в составные ключи/индексы (которые видимо придется перестраивать)? Что должны делать другие ползатели в моменты блокировки массы записей в связанных таблицах (даже версионник, мне кажется, не пишет в изменяемую запись?).
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33199656
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не было печали, черти накачали.

Может я упустил в этой жизни что-то. Живу и не знаю что можно ключ менять. Насколько лучше я бы жил если бы раньше знал про это. Менял бы их по нескольку раз на день. А то ведь и в голову такая мысля ни разу не пришла. Чувствую себя теперь ущербным :-(
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33199903
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос, Old Nick, был про автора. Вы его назовете?

> Бизнес-правило в виде структуры базы данных?

Именно в виде структуры данных.

> При смене бизнес-правила будем менять структуру?

Нет, структуру данных менять не будем. Будем менять описание бизнес-правила. Где проблема?

> Вот так и появляются различные SAPы и AXAPTы с кучей программистов,

А дерьмо заключается в том, что альтернатива sap'ам и axapta'м - $%^ поделки вместо нормальных приложений.

2 Владимир П.

> Цитаты из "Data Definition Guide" и "Language Reference". СУБД -- InterBase 6.

Да, знать о cascade update/delete нужно. Использовать - нет.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200245
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня к коллегам есть вопрос. Предположим у нас имеется 3 таблицы.
1) Customer (customer_id,....)
2) Organization (org_id,...)
3) Person (person_id,....)
Т.е. между Customer и Person, ровно как и между Customer и Organization существует связь IS A . В терминах ООП Organization и Person - подтипы Customer. Задача - реализоватьтолько на констрэйнтах (без использования триггеров и хп) правило:
Если существует Person с Person_id равным N, то существует Customer c Сustomer_id равным N и не может существовать Organization с org_id равным N.
и наоборот.

Т.е. множества значений org_id и customer_id не должны пересекаться.
)) Очень хочу чтобы кто-нибудь показал, как это сделать на суррогатных ключах.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200261
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Если существует Person с Person_id равным N, то существует Customer c
> Сustomer_id равным N и не может существовать Organization с org_id равным N.
> и наоборот.
> Т.е. множества значений org_id и customer_id не должны пересекаться.

Сформулируйте _начальную задачу_, а не Ваш вариант реализации.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200299
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Сформулируйте _начальную задачу_, а не Ваш вариант реализации
Ну вы опять за свое. Так не честно. Если не можем решить задачу, то давайте ее поменяем что-ли?
Еще раз другими словами:
Хочу чтоб всегда, если клиент является, например, физ.лицом, то для него всегда существовали записи только в customer и person. B чтоб никогда, ни при каких обстоятельствах (кривые руки программера, ошибка оператора и пр.) не появилась записть у таблице Organization!...
То же самое и о таблице Organization.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200337
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ну вы опять за свое. Так не честно. Если не можем решить задачу, то давайте ее поменяем что-ли?

Не, все не так. Вы сформулируйте начальную задачу: что хотите регистрировать и для какой цели. Над задачей можно подумать. А думать над конкретной реализацией - нет смысла. Объясню, почему в данном случае нет смысла: Вы хотите использовать imho абсолютно противоестественное ограничение при наличии работоспособных альтернативных вариантов. Почему - ну, видимо, посчитали, что так лучше. ОК, Ваше решение - это Ваше решение и Ваша головная боль. Как описывать физические и юридические лица - здесь обсуждалось миллион раз. ;)

Для Вашей реализации могу предложить Вам такие костыли: используйте только четные/нечетные значения суррогатных ключей для физических/юридических лиц. ;)
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200351
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621>
Для Вашей реализации могу предложить Вам такие костыли: используйте только четные/нечетные значения суррогатных ключей для физических/юридических лиц. ;)

Уважаемый guest_20040621! вы хитры, изворотливы, находчивы. Ценю.
Я не люблю вдаваться в конкретные задачи, потому как считаю более важным найти принцип (шаблон) для решения таких задач.

А если задача станет еще сложнее? например у нас будет один клас и целое дерево подклассов со своими атрибутами (не забываем о наследовани атрибутов, но однако полагаем что множественное наследование у нас отсутствует). И, как же по вашему в этом случае добиться целостности? Чтобы всякий объект (представленный несколькими записями в иерархии таблиц) случайным образом не был наделен ненужными ему свойствами?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200385
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Я не люблю вдаваться в конкретные задачи, потому как считаю более важным найти принцип (шаблон)
> для решения таких задач.

Я и просил сформулировать задачу целиком. ;)

> А если задача станет еще сложнее? например у нас будет один клас и целое дерево подклассов со своими атрибутами (не
> забываем о наследовани атрибутов, но однако полагаем что множественное наследование у нас отсутствует).

Давайте уже оставим в покое наследование и ограничимся реляционными структурами. Из них сделать объекты, полагаю, труда не составит. Иначе все будет как всегда. :(

Обсуждаемая задача традиционным образом imho не решается (точнее, решается, но настолько криво, что об этом и говорить не хочется). Из альтернативных вариантов imho наиболее предпочтительным является решение на основе метаданных.

> случайным образом не был наделен ненужными ему свойствами?

Constraint в виде таблицы связи.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200541
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron Old NickУ меня даже выдумать аномалию по этому поводу не получается
И я тоже представить не могу...
Ежели только место дополнительное эти ключи занимают - так и ладно...
Может чего со скоростью происходит?Аномалия? А пожалте.
Вот у нас есть таблица персон с суррогатным ключом. И сегодня мы видим, что под записью с ID = 1234 скрывается Петров, паспорт 98 76 543210.
Приходим на работу завтра - и что видим: те документы, которые оформлял Петров теперь вроде как оформлял Васечкин, паспорт 67 89 452301! Объяснение оператора: "Ну и что: раз атрибуты можно менять, мы их и поменяли. А что, нельзя было? 8-[ ]
Это я к тому, что без дополнительных мероприятий СК не могут обеспечить целостность во времени. А ЕК - могут.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200612
папа Карло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Романыч, есть разница между "теоритечиской" нормализацией и "практической". То, что Вы нарисовали разумно с точки зрения теории и логической модели. При физической имплементации имеет существенный смысл перейти на суррогатные ключи. Т.е. по делу вы оба правы, но если говорить о практической имплементации то второй товарищь прав. Помнити радикализм в дизайне ни к чему хорошему не приводит, все выражается из стоимости и что Вы за это получили. В качестве дипломной работы я бы пошел с сурогатными ключами и сказал бы что ключи данные выбраны для минимизации таких то оверхедов.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200880
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот товарища Urri в данном вопросе целиком и полностью поддерживаю.
И вообще, почитав весь бред про суррогатные ключи, про то какие они замечательные я начинаю понимать почему практически все системы криво работают.
Видел я таких проектировщиков. Всю модель разрабатывает за пол часа. Типа - создаёт таблицу. Связь с другой должна быть 0-1. Делает на этой таблице свой собственный суррогатный ключ, естесс-но identity. Зачем?... На него ж ни одна таблица ссылаться не будет! но все равно делает. А потом в такой модели несколько предприятий с одним INN, и всякая другая хрень и сплошной геморрой с получением отчетности.


Господа! ПК предназначен не только для того, чтобы уникально и однозначно идентифицировать запись. Но и для того, чтобы поддерживать определенные бизнес правила.

2 guest_20040621
Приведенная задача решается традиционнным способом, если использовать составной первичный плюч по таблице Customer.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200918
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman wrote:
>Аномалия? А пожалте.
>Вот у нас есть таблица персон с суррогатным ключом. И сегодня мы
видим, >что под записью с ID = 1234 скрывается Петров, паспорт 98 76 543210.
>Приходим на работу завтра - и что видим: те документы, которые
оформлял >Петров теперь вроде как оформлял Васечкин, паспорт 67 89
452301! >Объяснение оператора: "Ну и что: раз атрибуты можно менять, мы
их и >поменяли. А что, нельзя было? 8-[ ]
>Это я к тому, что без дополнительных мероприятий СК не могут
обеспечить >целостность во времени. А ЕК - могут.
Дык и из окна можно прыгать, но не прыгает ведь?
ну, про персоны ваще без паспорта кто нить слышал? а когда персона
паспорт меняет? тоже слышали? и как прикажете поступить?

> Вот товарища Urri в данном вопросе целиком и полностью поддерживаю.
> И вообще, почитав весь бред про суррогатные ключи, про то какие они
> замечательные я начинаю понимать почему практически все системы криво
> работают.
вах! пачти все и пачти криво!
Бред, говорите... серебряную пулю ищем...

> Видел я таких проектировщиков. Всю модель разрабатывает за пол часа.
> Типа - создаёт таблицу. Связь с другой должна быть 0-1. Делает на этой
> таблице свой собственный суррогатный ключ, естесс-но identity. Зачем?...
> На него ж ни одна таблица ссылаться не будет! но все равно делает. А
> потом в такой модели несколько предприятий с одним INN, и всякая другая
> хрень и сплошной геморрой с получением отчетности.
Гы.... несколько предприятий с одним ИНН... ага, к примеру - филиалы.
Бывает такое....
И ваще, если у меня ЕК состоит из 8 полей, я что, должен писать нечто вроде
Код: plaintext
1.
delete dbo.Table where Field1=@field1 and ... and Field8=@Field8
мне проще
Код: plaintext
1.
delete dbo.Table where id = @id
чисто технологически проще.
>
>
> Господа! ПК предназначен не только для того, чтобы уникально и
> однозначно идентифицировать запись. Но и для того, чтобы поддерживать
> определенные бизнес правила.
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33200927
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> почитав весь бред про суррогатные ключи, про то какие они замечательные

Дружище, Вы считаете нормальным публично демонстрировать свое невежество?

> ПК предназначен не только для того, чтобы уникально и однозначно идентифицировать запись.
> Но и для того, чтобы поддерживать определенные бизнес правила.

Кролики - это не только ценный мех, но и 2 - 3 килограмма ценного диетического мяса. Хватит нести чушь.

> Приведенная задача решается традиционнным способом, если использовать составной первичный плюч
> по таблице Customer.

Вы условие задачи внимательно читали?
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #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
Объясните кто прав: студент или человек с опытом?
    #33212295
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прав твой ведущий специалист. Естественных ключей не бывает.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33212372
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПрав твой ведущий специалист. Естественных ключей не бывает.
Если рассматривать естественные ключи как
...Он сказал что все то что вноситься руками не может являться ключом таблицы.
то неправда ваша, есть много специфических задач когда можно (удобнее) использовать коды введенные пользователем, как первичные ключи. Конечно к бухгалтерским и задачам это не относистся.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33212411
Полкан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ключами должны быть УНИКАЛЬНЫЕ значения, как то заводские номера изделий - если у данных нет уникальных значений - надо тогда вводить специально поля для ключей.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33212657
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33213117
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ModelR
Офигительная статья. Мне очень понравилась :)
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33214713
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как известно, все проектировщики баз данных деляться на две категории:
Те, которые еще не поняли , что естественных ключей не бывает.

Те, которые уже поняли , что естественных ключей не бывает.

Так что спорить тут бессмысленно.
...
Рейтинг: 0 / 0
Объясните кто прав: студент или человек с опытом?
    #33216604
MasterZiv, Истинно глаголешь!.. Выбить стальным кресалом на гранитных скрижалях!

Каких бы граблей (я лично) не натоптал бы, если бы в начале своей профессиональной деятельности не начитался бы сколь заумного, столь и пустого мусора про "супер-полезность" Естественных Ключей. В сад... Ни разу после не пожалел о Суроргатных Ключах. И каждый раз шлёпаю себя по маковке (болван доверчивый), поддерживая свои же программы и сталкиваясь со своими же Естественными Ключами! Полный нах... Ничего Уникального ЕК не гарантируют! У меня самого 3 разных номера ИНН в пенсинном фонде РФ! На одного и того же человека с одними данными (спасибо моим договорным партнёрам - не нашли ИНН в бухгалтерии, фигак - завели...) !!! И это не шутка. И система у них в ПФ, типа, одна на всех централизованая... Ага... Тоже, разработчики, наверное, тащились от ЕК. Пробел или точка в фамилии, адресе и ещё 10 ИНН получишь!

К счастью, для меня ЕК уже в прошлом. Строить реляции в БД по ЕК - юношеский максимализм. Но есть ещё и "И опыт, сын ошибок трудных..." (с) Явно Не Тургенев. Прислушивайтесь к мнению старших и более оптыных товарищей!
...
Рейтинг: 0 / 0
82 сообщений из 82, показаны все 4 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объясните кто прав: студент или человек с опытом?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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