Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
История такова: я делаю дипломную работу на большом комбинате для маленького цеха. Спроектировал базу данных и принес на рецензирование в инженерный центр. Ведущий специалист посмотрел и заставил переделывать. Мотивировал вот чем: я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.). Он сказал что все то что вноситься руками не может являться ключом таблицы. Пришлось везде ставить автоинкрементируемые поля, даже в связующих таблицах. Он сказал что так делают все специалисты баз данных. Кто прав? Объясните. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 08:03 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
imho, человек с опытом правильно говорит. Например, списали старое оборудование, а вновь закупленное зарегистрировали под тем же инвентарным. Как быть? удалять старую запись из таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 08:15 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
а как быть с тем, что могут по запарке ввести 2 строки с одинаковыми данными, не будеш же отслеживать дубли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 08:25 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
да, и еще. а как мотивировать то, что в связующих таблицах тоже стоят автоинкр. поля, даже в тех что связались по предыдущим полям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 08:28 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
автора как быть с тем, что могут по запарке ввести 2 строки с одинаковыми данными, не будеш же отслеживать дубли? На это есть есть уникальные ключи, которые в крайнем случае можно отключить. А с первичными ключами так не получится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 08:37 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Ищите в этом разделе форума: тема обсуждалась неоднократно. Дело в том, что автоинкременты в большинстве случаев способны защитить нас от множества ошибок при проектировании. Но полностью заменить собой естественные ключи они не могут. По многим причинам. При использовании автоинка, по крайней мере, там, где у нас в таблице есть комбинация полей, составляющая естественный ключ, должен быть по такой комбинации построен уникальный "кандидатный" индекс. Теперь что у Вас. "...я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.)." Но ведь эти инвентарные номера - это не естественные ключи! Они в журналах так и появляются: в виде автоинкремента. Т.е. бухгалтер открывает гроссбух, идет на последнюю страницу, в новую запись пишет номер предпоследней записи плюс один. ;-) В Вашем случае прав опытный товарищ. Программа сама должна исполнять роль генератора инвентарных номеров и номеров по журналу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 08:49 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Романыч84История такова: я делаю дипломную работу на большом комбинате для маленького цеха. Спроектировал базу данных и принес на рецензирование в инженерный центр. Ведущий специалист посмотрел и заставил переделывать. Мотивировал вот чем: я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.). Он сказал что все то что вноситься руками не может являться ключом таблицы. Пришлось везде ставить автоинкрементируемые поля, даже в связующих таблицах. Он сказал что так делают все специалисты баз данных. Кто прав? Объясните. См. Ключ или отмычка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 09:02 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Романыч84История такова: я делаю дипломную работу на большом комбинате для маленького цеха. Спроектировал базу данных и принес на рецензирование в инженерный центр. Ведущий специалист посмотрел и заставил переделывать. Мотивировал вот чем: я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.). Он сказал что все то что вноситься руками не может являться ключом таблицы. Пришлось везде ставить автоинкрементируемые поля, даже в связующих таблицах. Он сказал что так делают все специалисты баз данных. Кто прав? Объясните. Click and read . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 10:55 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Романыч84 ... Ведущий специалист посмотрел и заставил переделывать. Мотивировал вот чем: я ключом в таблицах делал какой-нибудь идентификатор (инвентарный номер, номер по журналу и т.д.). Он сказал что все то что вноситься руками не может являться ключом таблицы. ... Кто прав? Объясните.Специалист не прав по двум причинам. Первая - его задача дать рецензию, а не заставлять переделывать. У него может быть свое мнение, но дипломник имеет право защищать свое. Вторая - это вопрос технический и в разных случаях хороши разные варианты. Они много раз обсуждались. Если бы это было однозначно, то таких обсуждений не было бы. В качестве примера, пусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Или даст аргументы для операторов компании делать поиск абонента по некоторому ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 14:33 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
PVP В качестве примера, пусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Или даст аргументы для операторов компании делать поиск абонента по некоторому ID. на моей памяти 2-ды менялся номер телефона. (и у массы соседей тоже). кхм. идиотское предложение, имхо. But - "Ничего личного". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 14:43 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
4321 PVP В качестве примера, пусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Или даст аргументы для операторов компании делать поиск абонента по некоторому ID. на моей памяти 2-ды менялся номер телефона. (и у массы соседей тоже). кхм. идиотское предложение, имхо. But - "Ничего личного".Так что было после замены номера? Какой код лицевого счета на квитанции? А какой код спрашивают в кассе при оплате? Или какой код называете, когда звоните на АТС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 15:51 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Так что было после замены номера? Какой код лицевого счета на квитанции? А какой код спрашивают в кассе при оплате? Или какой код называете, когда звоните на АТС? --------------------- суррогатные ключи отличаются от естественных именно тем что они не привязаны к предметной области. Искать человека можно по телефону но это не значит что для таблички "человеки" это поле обязательно должно быть первичным ключём Касательно вопроса топика - так чё здесь спрашивать-то? У препода и спросить можно чтоб объяснил Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 16:26 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
1024 Так что было после замены номера? Какой код лицевого счета на квитанции? А какой код спрашивают в кассе при оплате? Или какой код называете, когда звоните на АТС? --------------------- суррогатные ключи отличаются от естественных именно тем что они не привязаны к предметной области. Искать человека можно по телефону но это не значит что для таблички "человеки" это поле обязательно должно быть первичным ключёмНу понятно, чем отличаются сурогатные ключи. Вопрос был на счет кода на АТС. Какой там ключ? 1024 Касательно вопроса топика - так чё здесь спрашивать-то? У препода и спросить можно чтоб объяснил Вопрос задан в расчете на то, что здесь есть специалисты и их количество больше, чем один преподаватель. К стати, преподаватель мог в процессе учебы применять естественный ключ. Как тогда быть с рецензентом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 16:41 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
PVPВ качестве примера, пусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Или даст аргументы для операторов компании делать поиск абонента по некоторому ID. У меня три номера. В одной компании. Я "един в трех лицах"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 16:45 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
PVP Так что было после замены номера? Какой код лицевого счета на квитанции? А какой код спрашивают в кассе при оплате? Или какой код называете, когда звоните на АТС? кхм. это не мои проблемы. Т.ч. не помню. (и я не напрягаюсь узнавать, не было ли в афтрах их БД изврастченцеф ( ничего личного ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 17:08 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
4321 PVP Так что было после замены номера? Какой код лицевого счета на квитанции? А какой код спрашивают в кассе при оплате? Или какой код называете, когда звоните на АТС? кхм. это не мои проблемы. Т.ч. не помню. (и я не напрягаюсь узнавать, не было ли в афтрах их БД изврастченцеф ( ничего личного ).Боже! Какая это пародия на анонизм! - сказал анонист, познав женщину ( ничего личного ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 18:02 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Есть ник игрока. Но уже есть автоинкрементный суррогатный ключь. Ник уникальный. Но зачем тогда суррогатный ключь? В умной книжке я прочитал, что суррогатные ключи есть смысл создавать не только в случае отсутствия естественного, но и для ускорения работы БД. Ведь поиск по полю int провести проще, чем по полю VARCHAR(32). А с другой стороны я как-то првык при создании таблицы первым полем писать что-то типа id serial primary key. А есть у меня в базе ещё таблица со связью. Два поля int. Так вот там я ключь сурогатный не стал делать. А зачем? Одна улица с другой два раза связанна быть не может. Вот я и сделал составной ключь по обоим полям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 00:04 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
таблица "игроки" вероятно связана с таблицей "игры". При сменен ника с УльтроКиллер на УльтроМегаКиллер нужно будет поменять ник этого игрока в таблице "игры" везде где он встречается и потом в таблице "игроки". В этом причина рекомендаций неиспользования естественных ключей а не в производительности. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 10:45 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
PVP познав женщину думал, как же ваше психическое связало тему обсуждения с цитируемым анекдотом. Остается предположить наличие у вас-с девиации на естественные ключи. Бросьте это дело. Расслабьтесь. Найдите женщину. На крайняк - вручную. ничего личного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 10:58 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Для чукчей, которые думают, что они писатели, а не читатели привожу http://www.informix.com.ua/articles/key/key.htm] ссылку ещё раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 11:02 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
1024 таблица "игроки" вероятно связана с таблицей "игры". При сменен ника с УльтроКиллер на УльтроМегаКиллер нужно будет поменять ник этого игрока в таблице "игры" везде где он встречается и потом в таблице "игроки" И в чём проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 15:14 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Владимир П. 1024 таблица "игроки" вероятно связана с таблицей "игры". При сменен ника с УльтроКиллер на УльтроМегаКиллер нужно будет поменять ник этого игрока в таблице "игры" везде где он встречается и потом в таблице "игроки" И в чём проблема? проблема в том, что не замочив всех, кто в танке, "УльтроКиллер" не достоин звания "УльтроМегаКиллер". А так - никаких проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 15:43 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Кстати про суррогатные ключи. Они автоматом позволяют привести базу после к 3НФ к НФБК. И вообще нормализацию упрощают сильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 15:57 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Владимир П. 1024 таблица "игроки" вероятно связана с таблицей "игры". При сменен ника с УльтроКиллер на УльтроМегаКиллер нужно будет поменять ник этого игрока в таблице "игры" везде где он встречается и потом в таблице "игроки" И в чём проблема? В технике реализации. До тех пор, пока не все СУБД поддерживают deferred foreign keys, попытка выполнить эту операцию натыкается на совершенно идиотские проблемы и требует не менее идиотских решений. Например, обнаружив, что ключ мешает заменить ник игрока, гениальный разработчик обычно говорит - ладно, вставим новую запись с новым ником, перенаправим все ссылки, потом старую удалим. Делают так - и натыкаются, например, на бизнес-правило "разные игроки не должны иметь одинаковый email", попросту говоря срабатывает другой constraint. Делают обход этого, вляпываются в третье..... Другой, более гениальный вариант - мелькающие периодически на форумах вопросы "а как мне временно отключить constraint". Есть, наверное, и третий, и четвертый..... Итогом всего является кое-как работающая, неоправданно сложная программа, плюс гордый человек, который "умеет решать сложные практические задачи". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 17:16 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
softwarer Владимир П. 1024 поменять ник этого игрока в таблице "игры" везде где он встречается и потом в таблице "игроки" И в чём проблема? До тех пор, пока не все СУБД поддерживают deferred foreign keys, попытка выполнить эту операцию натыкается на совершенно идиотские проблемы и требует не менее идиотских решений. Например, обнаружив, что ключ мешает заменить ник игрока, гениальный разработчик обычно говорит - ладно, вставим новую запись с новым ником, перенаправим все ссылки, потом старую удалим. Делают так - и натыкаются, например, на бизнес-правило "разные игроки не должны иметь одинаковый email", попросту говоря срабатывает другой constraint. Делают обход этого, вляпываются в третье..... Другой, более гениальный вариант - мелькающие периодически на форумах вопросы "а как мне временно отключить constraint". Есть, наверное, и третий, и четвертый..... Ой, ужас какой рассказываете. Если в БД нет CONSTRAINT ... ON UPDATE CASCADE, то можно реализовать каскадное обновление через триггер. Всегда обновление поля и запуск назначенных на это событие триггеров происходит атомарно -- и только после триггерного обновления, когда база снова в согласованном состоянии, происходит проверка constraint'ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 09:56 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Столько времени занимаюсь базами данных, а понятия не имею что такое ON UPDATE CASCADE, хотя... дайте подумать.... А! Мазь от геморроя! Только зачем мне мазь? И геморрой мне ни к чему. Ну его этот геморрой, буду пользоваться старым дедовским способом: только суррогатные ключи, еще ни разу не подводили меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 10:59 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
А вот интересный вопрос по поводу: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:08 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
goodronА вот интересный вопрос по поводу: не то нажал... Так вот вопрос: Какие могут возникнуть аномалии или просто какие минусы при использовании суррогатных ключей? Я за свой пока еще небольшой опыт ни разу не пожалел, что практически всегда использовал autoincrement (indentity). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:11 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
У меня даже выдумать аномалию по этому поводу не получается -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:13 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Old NickУ меня даже выдумать аномалию по этому поводу не получается И я тоже представить не могу... Ежели только место дополнительное эти ключи занимают - так и ладно... Может чего со скоростью происходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:27 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
SarinКстати про суррогатные ключи. Они автоматом позволяют привести базу после к 3НФ к НФБК. И вообще нормализацию упрощают сильно. Это все равно, что выключать свет зажмуривая глаза:). Ограничения целостности (которые и выражаются естественными ключами) кто отслеживать будет? Никто - тогда правильней говорить "без ограничений целостности жить автоматом легче". Сохраняем бизнес-правила - тогда суррогатные ключи добавляются к естественным, а не заменяют их. Old NickУ меня даже выдумать аномалию по этому поводу не получается -------------------- Не учи отца и баста! С закрытыми-то глазами :). Пример ограничения "Тот же", требующего идентифицирующей миграции (ИМ) ключа (Не совсем в тему - идентифицирующая миграция может быть и суррогата, но когда применяют СК, как правило НЕ применяют ИМ, так что где-то рядом с темой): Таблицы: СТРАНА, РЕГИОН, ПАРТНЕРСТВО . Связи: РЕГИОН >-находится в -- СТРАНА ПАРТНЕРСТВО >-включает участник1 -- РЕГИОН ПАРТНЕРСТВО >-включает участник2 -- РЕГИОН Бизнес-правило: Регионы-партнеры должны находится в одной стране. Если ключ СТРАНА мигрирует в ключ РЕГИОН, то внешние ключи участник1 и участник2 на автомате могут поддерживать бизнес-правило. Если нет - пишем проверку ручками... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 12:44 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Бизнес-правило нельзя зашивать в код, вернее даже в структуру базы. Это всегда пользовательская фича и она может меняться, поэтому в данном случае я бы сделал бизнес-правило в виде процедуры-обработчика, подвешенной к событию (уж какое это событие, определить по вкусу). Действует бизнес-правило - вызывается обработчик, перестало действовать - отключили. Причем отключил пользователь из пользовательского интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 13:50 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> Таблицы: СТРАНА, РЕГИОН, ПАРТНЕРСТВО . Кто Вас научил так проектировать? > Регионы-партнеры должны находится в одной стране. Кто Вам сказал, что это бизнес-правило? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 14:21 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> Бизнес-правило нельзя зашивать в код, вернее даже в структуру базы. Сегодня, похоже, день откровений. Кто Вам сказал такую чушь? Автора - в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 14:23 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Бизнес-правило в виде структуры базы данных? При смене бизнес-правила будем менять структуру? Зае...шибись. Вот так и появляются различные SAPы и AXAPTы с кучей программистов, обслуживающих их в виде клепания новых и переделывания старых процедур, а также добавления полей и таблиц при любом изменении требований. Даже когда НДС меняется с 20 на 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 15:00 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
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 . . .); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 15:25 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
авторЭто такая опция к ограничению ссылочной да с этим никто не спорит. Просто оцените стоимость апдейта, если ваш пк входит скажем в ~10**5 записей различных детей. А если еще и злоупотребляете вхождением его (на стороне связанных записей) в составные ключи/индексы (которые видимо придется перестраивать)? Что должны делать другие ползатели в моменты блокировки массы записей в связанных таблицах (даже версионник, мне кажется, не пишет в изменяемую запись?). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 15:53 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Не было печали, черти накачали. Может я упустил в этой жизни что-то. Живу и не знаю что можно ключ менять. Насколько лучше я бы жил если бы раньше знал про это. Менял бы их по нескольку раз на день. А то ведь и в голову такая мысля ни разу не пришла. Чувствую себя теперь ущербным :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 16:04 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Вопрос, Old Nick, был про автора. Вы его назовете? > Бизнес-правило в виде структуры базы данных? Именно в виде структуры данных. > При смене бизнес-правила будем менять структуру? Нет, структуру данных менять не будем. Будем менять описание бизнес-правила. Где проблема? > Вот так и появляются различные SAPы и AXAPTы с кучей программистов, А дерьмо заключается в том, что альтернатива sap'ам и axapta'м - $%^ поделки вместо нормальных приложений. 2 Владимир П. > Цитаты из "Data Definition Guide" и "Language Reference". СУБД -- InterBase 6. Да, знать о cascade update/delete нужно. Использовать - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 17:01 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
У меня к коллегам есть вопрос. Предположим у нас имеется 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 не должны пересекаться. )) Очень хочу чтобы кто-нибудь показал, как это сделать на суррогатных ключах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 18:39 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> Если существует Person с Person_id равным N, то существует Customer c > Сustomer_id равным N и не может существовать Organization с org_id равным N. > и наоборот. > Т.е. множества значений org_id и customer_id не должны пересекаться. Сформулируйте _начальную задачу_, а не Ваш вариант реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 18:46 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> Сформулируйте _начальную задачу_, а не Ваш вариант реализации Ну вы опять за свое. Так не честно. Если не можем решить задачу, то давайте ее поменяем что-ли? Еще раз другими словами: Хочу чтоб всегда, если клиент является, например, физ.лицом, то для него всегда существовали записи только в customer и person. B чтоб никогда, ни при каких обстоятельствах (кривые руки программера, ошибка оператора и пр.) не появилась записть у таблице Organization!... То же самое и о таблице Organization. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 18:58 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> Ну вы опять за свое. Так не честно. Если не можем решить задачу, то давайте ее поменяем что-ли? Не, все не так. Вы сформулируйте начальную задачу: что хотите регистрировать и для какой цели. Над задачей можно подумать. А думать над конкретной реализацией - нет смысла. Объясню, почему в данном случае нет смысла: Вы хотите использовать imho абсолютно противоестественное ограничение при наличии работоспособных альтернативных вариантов. Почему - ну, видимо, посчитали, что так лучше. ОК, Ваше решение - это Ваше решение и Ваша головная боль. Как описывать физические и юридические лица - здесь обсуждалось миллион раз. ;) Для Вашей реализации могу предложить Вам такие костыли: используйте только четные/нечетные значения суррогатных ключей для физических/юридических лиц. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 19:17 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Для Вашей реализации могу предложить Вам такие костыли: используйте только четные/нечетные значения суррогатных ключей для физических/юридических лиц. ;) Уважаемый guest_20040621! вы хитры, изворотливы, находчивы. Ценю. Я не люблю вдаваться в конкретные задачи, потому как считаю более важным найти принцип (шаблон) для решения таких задач. А если задача станет еще сложнее? например у нас будет один клас и целое дерево подклассов со своими атрибутами (не забываем о наследовани атрибутов, но однако полагаем что множественное наследование у нас отсутствует). И, как же по вашему в этом случае добиться целостности? Чтобы всякий объект (представленный несколькими записями в иерархии таблиц) случайным образом не был наделен ненужными ему свойствами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 19:27 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> Я не люблю вдаваться в конкретные задачи, потому как считаю более важным найти принцип (шаблон) > для решения таких задач. Я и просил сформулировать задачу целиком. ;) > А если задача станет еще сложнее? например у нас будет один клас и целое дерево подклассов со своими атрибутами (не > забываем о наследовани атрибутов, но однако полагаем что множественное наследование у нас отсутствует). Давайте уже оставим в покое наследование и ограничимся реляционными структурами. Из них сделать объекты, полагаю, труда не составит. Иначе все будет как всегда. :( Обсуждаемая задача традиционным образом imho не решается (точнее, решается, но настолько криво, что об этом и говорить не хочется). Из альтернативных вариантов imho наиболее предпочтительным является решение на основе метаданных. > случайным образом не был наделен ненужными ему свойствами? Constraint в виде таблицы связи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 19:55 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
goodron Old NickУ меня даже выдумать аномалию по этому поводу не получается И я тоже представить не могу... Ежели только место дополнительное эти ключи занимают - так и ладно... Может чего со скоростью происходит?Аномалия? А пожалте. Вот у нас есть таблица персон с суррогатным ключом. И сегодня мы видим, что под записью с ID = 1234 скрывается Петров, паспорт 98 76 543210. Приходим на работу завтра - и что видим: те документы, которые оформлял Петров теперь вроде как оформлял Васечкин, паспорт 67 89 452301! Объяснение оператора: "Ну и что: раз атрибуты можно менять, мы их и поменяли. А что, нельзя было? 8-[ ] Это я к тому, что без дополнительных мероприятий СК не могут обеспечить целостность во времени. А ЕК - могут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 23:28 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Романыч, есть разница между "теоритечиской" нормализацией и "практической". То, что Вы нарисовали разумно с точки зрения теории и логической модели. При физической имплементации имеет существенный смысл перейти на суррогатные ключи. Т.е. по делу вы оба правы, но если говорить о практической имплементации то второй товарищь прав. Помнити радикализм в дизайне ни к чему хорошему не приводит, все выражается из стоимости и что Вы за это получили. В качестве дипломной работы я бы пошел с сурогатными ключами и сказал бы что ключи данные выбраны для минимизации таких то оверхедов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 03:13 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Вот товарища Urri в данном вопросе целиком и полностью поддерживаю. И вообще, почитав весь бред про суррогатные ключи, про то какие они замечательные я начинаю понимать почему практически все системы криво работают. Видел я таких проектировщиков. Всю модель разрабатывает за пол часа. Типа - создаёт таблицу. Связь с другой должна быть 0-1. Делает на этой таблице свой собственный суррогатный ключ, естесс-но identity. Зачем?... На него ж ни одна таблица ссылаться не будет! но все равно делает. А потом в такой модели несколько предприятий с одним INN, и всякая другая хрень и сплошной геморрой с получением отчетности. Господа! ПК предназначен не только для того, чтобы уникально и однозначно идентифицировать запись. Но и для того, чтобы поддерживать определенные бизнес правила. 2 guest_20040621 Приведенная задача решается традиционнным способом, если использовать составной первичный плюч по таблице Customer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:14 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
gardenman wrote: >Аномалия? А пожалте. >Вот у нас есть таблица персон с суррогатным ключом. И сегодня мы видим, >что под записью с ID = 1234 скрывается Петров, паспорт 98 76 543210. >Приходим на работу завтра - и что видим: те документы, которые оформлял >Петров теперь вроде как оформлял Васечкин, паспорт 67 89 452301! >Объяснение оператора: "Ну и что: раз атрибуты можно менять, мы их и >поменяли. А что, нельзя было? 8-[ ] >Это я к тому, что без дополнительных мероприятий СК не могут обеспечить >целостность во времени. А ЕК - могут. Дык и из окна можно прыгать, но не прыгает ведь? ну, про персоны ваще без паспорта кто нить слышал? а когда персона паспорт меняет? тоже слышали? и как прикажете поступить? > Вот товарища Urri в данном вопросе целиком и полностью поддерживаю. > И вообще, почитав весь бред про суррогатные ключи, про то какие они > замечательные я начинаю понимать почему практически все системы криво > работают. вах! пачти все и пачти криво! Бред, говорите... серебряную пулю ищем... > Видел я таких проектировщиков. Всю модель разрабатывает за пол часа. > Типа - создаёт таблицу. Связь с другой должна быть 0-1. Делает на этой > таблице свой собственный суррогатный ключ, естесс-но identity. Зачем?... > На него ж ни одна таблица ссылаться не будет! но все равно делает. А > потом в такой модели несколько предприятий с одним INN, и всякая другая > хрень и сплошной геморрой с получением отчетности. Гы.... несколько предприятий с одним ИНН... ага, к примеру - филиалы. Бывает такое.... И ваще, если у меня ЕК состоит из 8 полей, я что, должен писать нечто вроде Код: plaintext 1. Код: plaintext 1. > > > Господа! ПК предназначен не только для того, чтобы уникально и > однозначно идентифицировать запись. Но и для того, чтобы поддерживать > определенные бизнес правила. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:28 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> почитав весь бред про суррогатные ключи, про то какие они замечательные Дружище, Вы считаете нормальным публично демонстрировать свое невежество? > ПК предназначен не только для того, чтобы уникально и однозначно идентифицировать запись. > Но и для того, чтобы поддерживать определенные бизнес правила. Кролики - это не только ценный мех, но и 2 - 3 килограмма ценного диетического мяса. Хватит нести чушь. > Приведенная задача решается традиционнным способом, если использовать составной первичный плюч > по таблице Customer. Вы условие задачи внимательно читали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:32 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
да вроде само название "естественные" ключи предпологает зависимость от внешнего мира. В обычной жизни информация как минимум может отсутствовать или быть неверной. Что там ИНН, обычный Ме и Жо на который вроде достаточно битового поля может 1.Отсутсвовать (в списке физ.лиц по тем или иным причинам надо внести юр.лицо) 2.Может быть неправильной (ошиблись при вводе/переносе из другой системы) 3.А ещё выясняется что он может меняться и нужно историю изменений хранить Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:58 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Urri Вот у нас есть таблица персон с суррогатным ключом. И сегодня мы видим, что под записью с ID = 1234 скрывается Петров, паспорт 98 76 543210. Приходим на работу завтра - и что видим: те документы, которые оформлял Петров теперь вроде как оформлял Васечкин, паспорт 67 89 452301! Объяснение оператора: "Ну и что: раз атрибуты можно менять, мы их и поменяли. А что, нельзя было? 8-[ ] Это я к тому, что без дополнительных мероприятий СК не могут обеспечить целостность во времени. А ЕК - могут. Бред. Введите в систему клиента, паспорта которого вы не знаете. Или клиента со справкой об освобождении и т.п. Бред. Про смену паспортов говорилось. При этом _если_ в сиситеме на ЕСТЕСТВЕННЫХ ключах с КАСКАДОМ (ес-но, а как же поддерживать исправления при ошибках опператора?), оператор отредактирует полностью Васькина на Пупкина, то и все вхождения (в силу каскадов) поменяются на Пупкина. Или вторичных ключей не вводить? Или каскды не использовать? (отдельные процедуры на правку ошибочных значений ключей писать?) Прямо какой-то сивый бред. Если вам надо запретить изменение некоторых "естественно-ключевых" полей, т.е. "запретить" смену "физ сущности", но оставить лазейки для правки ошибок первоначального ввода - то делается это (в силу необходимости лазеек) именно что на уровне более гибком, чем пк - т.е. или (в конце концов) уровне приложения (или хп-шек). Есть правда и способ с полным хранением исторических "представлений" (вообще без апдейтов записей, и сохранением всех ранее введенных (хотя бы в архиве)) сущностей (записей). В нем явно отслеживается, кто из операторов и в какой момент подменил "физ сущность" комплекта исторически связанных представлений. Но это затратно. ОФТОП: И вообще "ЕК" и "СК" - "одинаково" суррогатны. Т.к. никаких "сущностей" и "атрибутов" в природе (отдельно от голов) не существует. Они в ней появляются благодаря головам. То что к примеру дебила зовут Федя, "Федя" может и не знать вовсе. Более того, когда он помрет, сущности "Федя" в природе не будет. А знать о ней, о "сущности" т.е. и об атрибуте "Федя" будут другие "сущности" (таким образом сохраняя ее "в реальном мире"). СК попросту свободен от иных функций, кроме как представлять собой идею уникальности записи внутри модели, но освобожден от попыток привязать к нему ф-ю обеспечения однозначности привязки к "физ. сущности реального мира". (ЕК, как замечено выше, не освобождает от возможности подмены "сущности". По крайней мере не всегда, и почти всегда - с сопутствующими осложнениями). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:00 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
странные вещи пишет некий чел про организацию классов и естественность ключей. тип ключей (естественный/суррогат) тут вообще никоим раком. Тут уж вопрос о составном ключе. Составной "Суррогатный" ключ в предке (id_typ,id) и такие же в потомках, но с ограничением на величину id_typ = 1|2|3...|id_classN решает вашу "задачу" "чиста на констрайнтах" не уверен, правда, что это хорошее решение (кажеца глупым хранить поле с константным значением в таблице). (да и триггер на раздачу уникумных id тут гораздо лучче). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:06 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
>кажеца глупым хранить поле с константным значением в таблице Действительно кажется глупым, но увы, вешать обеспечение целостности на триггеры - это всегда медленнее и менее надежно чем PK/FK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:12 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Old NickБизнес-правило в виде структуры базы данных? При смене бизнес-правила будем менять структуру? Зае...шибись. Вот так и появляются различные SAPы и AXAPTы с кучей программистов, обслуживающих их в виде клепания новых и переделывания старых процедур, а также добавления полей и таблиц при любом изменении требований. Даже когда НДС меняется с 20 на 18.насколько я знаю, в SAP на уровне БД даже первичные ключи не объявляются. Все это в сервере приложения. Что касается добавления новых полей, то единственный вопрос - куда добавлять - в словарь СУБД или в собственный словарь данных. Что с точки пользователя не так уж и важно. Отчеты переделавть все равно - ибо новое поле не влезает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:23 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
gardenman>кажеца глупым хранить поле с константным значением в таблице Действительно кажется глупым, но увы, вешать обеспечение целостности на триггеры - это всегда медленнее и менее надежно чем PK/FK. не знаю. Думаю все зависит от реализации СУБД. Вот например в постгрессе чек/ФК - тоже хранимка (только написанная разработчиками). С другой стороны там нет надобности заниматься "звездатым" наследованием. Там есть свое. И ваша таблица "предок" может быть вообще "виртуальной" (в ней может не быть ни одной записи) а SELECT * FROM предок; вернет всех потомков (причем вы можете получить и имя таблицы - "истинного" владельца записи в таком запросе SELECT *, tablenaime FROM предок; ЗЗЫ опять таки обращаю внимание, что "составной" и "суррогат" - немного разные вещи (я пытался это "немного "оспорить" в другом топике, но это не к этому разговору). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:28 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
наврал, вы получите tableoid. из которого получается tablename сверткой с pg_class по tableoid SELECT .... c.relname AS tablename FROM ... JOIN pg_class AS c USING(tableoid) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:33 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
4321 авторЭто такая опция к ограничению ссылочной да с этим никто не спорит. Просто оцените стоимость апдейта, если ваш пк входит скажем в ~10**5 записей различных детей. А теперь оцените, насколько часто происходят такие глобальные изменения? Что, каждый день SuperPlayer переименовывается в SuperpuperGamer? Очень часто меняют международный код валюты? По нескольку раз на неделе приходится переименовывать общепринятые обозначения марок стали в справочнике материалов? Откуда этот миф о частом и дорогостоящем изменении идентифицирующих атрибутов сущности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 13:08 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Владимир П. Откуда этот миф о частом и дорогостоящем изменении идентифицирующих атрибутов сущности? не передергивайте, речь шла не о частоте, а о цене. Цена в наличии. Т.ч. со своим "мифом" по части цены вы вляпались. Сделали б харакирю, что ли, "родной" (задолбали уже "логики") по поводу наличия (т.е. известности на любой момент времени) "идентифицирующего" "естественного" атрибута в любом случае - это к врачу. (ибо примеры отсутствия - выше по обсуждению) Если система не способна взять в учет сущность, которая на момент необходимости ввода ее в систему не предоставила сведения о своем "идентифицирующем" атрибуте - это какая-то туповатая система. или "весьма ограниченная" . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 13:19 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
2 4321 А вот сколько раз было, что ни попадя вводили в базу, делали из базы настоящую помойку, а потом прилетал жареный петух и клевал в причинное место, которым думали в то время когда проектировали ситему. главное в проектировании - это валидация данных и производительность. Нужно минимизировать ошибку юзера и сделать так чтоб ему работалось комфортно (т.е. быстро). Лишние ключи мешают производительности. А отсутствие нужных ключей - мешает валидации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 13:35 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Владимир П. Очень часто меняют международный код валюты? По нескольку раз на неделе приходится переименовывать общепринятые обозначения марок стали в справочнике материалов? гхм. Вот думаю, насколько ваши "естественные" атрибуты "естественны" . Вы видимо совершенно правы, когда говорите о совершенно _суррогатных_ атрибутах (и "код валюты" и "обозначения марок стали в справочнике материалов" абсолютно модельные, суррогатные вещи, неприсущие как таковые ни сталям, ни валюте) . Так же например в системах учет движения по "счетам учета" "счет учета" (т.е. его "наименование" - "символьная запись") вещь абсолютно суррогатная (в течении года к тому же и неизменная, и без своего "именования" даже и не существующая (правда существует "нечто" ассоциированное с этой абстракцией,но не будем углубляцца)). Т.ч. в системах учитывающих "модельные" сущности ("счета учета", "коды валют" и т.п.) использование их в качестве ПК таки возможно оправдано. (надо оценить цену джойна - с одной стороны, и длину полей (а сталобыть и цену записи/чтения хранения) ЕК vs СК - с другой). 2. валидатор. Для валидации есть куча инструментов. Те же Уникью, к примеру, Not NULL и т.п.. Т.ч. это не аргумент в нашем случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 13:50 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
авторглавное в проектировании - это валидация данных А каким боком сурогатные (или вообще любые) ключи имеют отношение к валидации? авторЛишние ключи мешают производительности Сильно мешают? Настолько что ради этого стоит ловить гимор при глюках внешней системы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 13:53 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
4321Вот думаю, насколько ваши "естественные" атрибуты "естественны" . Заданы предметной областью, а следовательно -- естественны. 4321Вы видимо совершенно правы, когда говорите о совершенно _суррогатных_ атрибутах (и "код валюты" и "обозначения марок стали в справочнике материалов" абсолютно модельные, суррогатные вещи, неприсущие как таковые ни сталям, ни валюте) Вот тут не понял, поясните. Во-первых: в чем вы видите отличие "совершенно _суррогатных_ атрибутов" от просто "суррогатных атрибутов"? Во-вторых: код валюты и обозначения марок стали в данном примере для вас чем являются: суррогатным атрибутом, совершенно суррогатным атрибутом или естественным? (кажется их естественность вы отвергаете). 4321Т.ч. в системах учитывающих "модельные" сущности использование их в качестве ПК таки возможно оправдано Ну о том и речь, что существуют такие естественные атрибуты, которые удобно назначить на первичный ключ, причем не зная их значение вообще не имеет смысла вводить такие записи в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 14:35 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Владимир П.Заданы предметной областью, а следовательно -- естественны. гхм. "Атрибут" сущности (т.е. св-во "объекта реального мира") - естественен, если он (оно) не моделен. Если "предметная область" сама по себе - модель то в ней уже есть "модельные" суррогаты (каковые не есть "естественные св-ва объектов реального мира") - и они то и выступают _для вас_ в качестве ЕК. Владимир П.Вот тут не понял, поясните. Во-первых: в чем вы видите отличие "совершенно _суррогатных_ атрибутов" "Во-первых:" [ну если это вам оказалось совсем не понятно, то будем считать] - шучу я так, типа. забавляюсь, т.с. А отличия не вижу. Нет-с. Это у Вас вдруг появились отличия. во-вторых - см. выше. - тут - хфилософия, неким родом. Если вы моделируете модель (делаете кальку с кальки) то в ней уже есть куча модельных (привнесенных людяма) суррогатов, которые выступают у вас "естественными аттрибутами". Просто именно для таких случаев наблюдаеца "естественное" желание воспользоваться уже имеющимися в моделируемой модели суррогатами. (И чё тут вам неясного - ну ущепните меня - не пойму) не берите в голову. эта мысль видимо не про вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 14:59 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
область видимости Ну например тот же поминаемый везде ИНН. Это ж не человек и не организация. Это номер. Выдумали эти номера чтоб в разных системах один и тот же объект идентифицировать. Т.е. писать в БД не "Рога и Копыта зарегистрированное по адресу ..." а просто ИНН 12345678. Это суррогатный ключ в пределах деятельности российских налоговых органов. Если писать свою систему то можно сделать PK из ИНН, это будет естественный ключ в пределах данной системы. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 15:58 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> Если писать свою систему то можно сделать PK из ИНН, это будет естественный > ключ в пределах данной системы. Этот номер может быть первичным ключом исключительно в базе данных МНС (или как там оно называется?). Все. Для всех остальных случаев он не будет независимым, и, следовательно, не может быть первичным ключом. Внимательно читайте у Дейта определение первичного ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 16:18 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
в БД налоговой он не является первичным ключём. ----------- Это суррогатный ключ в пределах деятельности российских налоговых органов. ----------- Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 16:24 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> в БД налоговой он не является первичным ключём. Абсолютно фиолетово. Там он _может являться_ первичным ключом. Во всех остальных случаях - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 16:29 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
тьфу, причём тут ПК? ИНН с точки зрения налоговой это суррогатный ключ т.к. она сама его от балды присваивает подотчётным организациям. С точки зрения разработчика бух.проги это естественный ключ т.к. является атрибутом организации поставщика/покупателя. И он не может быть первичным ключём нигде (хотя некоторые норовят сделать) т.к. может отсутствовать или быть ошибочно выданым Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 16:38 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> тьфу, причём тут ПК? Цитата из [1764261]: "...Если писать свою систему то можно сделать PK из ИНН..." PK - это primary key или у этой аббревиатуры есть другое толкование? > ИНН с точки зрения налоговой это суррогатный ключ т.к. она сама его от балды Кто Вам это сказал? > С точки зрения разработчика бух.проги это естественный ключ т.к. является > атрибутом организации поставщика/покупателя. Кто Вам сказал, что любой атрибут может рассматриваться как естественный ключ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 16:46 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> ИНН с точки зрения налоговой это суррогатный ключ т.к. она сама его от > балды Кто Вам это сказал? =============== ну, если ИНН именно в налоговой возникает то не трудно догадаться что именна она его и создаёт. Никакой смысловой нагрузки он не имеет, это просто счётчик расчитанный на неповторяемость. =============== > С точки зрения разработчика бух.проги это естественный ключ т.к. является > атрибутом организации поставщика/покупателя. Кто Вам сказал, что любой атрибут может рассматриваться как естественный ключ? ============= не понимаю к чему этот вопрос если б ИНН был у каждой организации и можно было бы гарантировать что он выдан правильно и всегда б можно было узнать какой ИНН у какой организации то ИНН прекрасно мог бы быть первичным ключём в табличке Организации. Все эти "если да кабы" как раз и есть то что делает использование суррогатного ключа более предпочтительным во многих случаях. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 17:00 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
> Никакой смысловой нагрузки он не имеет Например, первые две цифры - номер региона. Вы уверены, что остальная часть номера абсолютно неинформативна? > не понимаю к чему этот вопрос К тому, что атрибутов может быть вообще сколько угодно. Если разработчик не может гарантировать их независимость, то не может и использовать в качестве первичных естественных ключей. > если б ИНН был у каждой организации и можно было бы гарантировать ИНН обязан быть у любого налогоплательщика. > ИНН прекрасно мог бы быть первичным ключём в табличке Организации. Повторю: читайте определение первичного ключа у Дейта. > использование суррогатного ключа более предпочтительным во многих случаях. Использование суррогатного ключа не просто предпочтительно. Это в подавляющем большинстве случаев единственно возможный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 17:13 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
да что вы мне дейтом своим. Сами то читали первичный ключ это то по чему можно выделить запись, естественные ключи могут меняться, отсутствовать, быть неверными, в этом и проблема. ЗЫ организация меняет ИНН, налогавая делает это, скажем, за неделю. Семь дней организации не существует. 8) или ваша контора не может заказать заказать бананы в малазии т.к. поставщики малазийцы, гады, в налоговой на учёт не встали Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 17:42 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Например, первые две цифры - номер региона. Вы уверены, что остальная часть номера абсолютно неинформативна? кажеца есть форма собсн-сти, а еще там и контрольная сумма кажись была зашита (если я с номером страховых не путаю). =>Смена региона (формы собсн-ти) требует сменять ИНН=> юзать ИНН как пк стремно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 18:04 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
PVPпусть попробует специалист предложить ключ для абонентов телефонной компании лучше, чем номер телефона. Пальцем в небо. У меня номер телефона менялся уже 3 раза а номер лицевого счета - все тот же. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2005, 14:54 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Прав твой ведущий специалист. Естественных ключей не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2005, 10:50 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
MasterZivПрав твой ведущий специалист. Естественных ключей не бывает. Если рассматривать естественные ключи как ...Он сказал что все то что вноситься руками не может являться ключом таблицы. то неправда ваша, есть много специфических задач когда можно (удобнее) использовать коды введенные пользователем, как первичные ключи. Конечно к бухгалтерским и задачам это не относистся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2005, 11:18 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Ключами должны быть УНИКАЛЬНЫЕ значения, как то заводские номера изделий - если у данных нет уникальных значений - надо тогда вводить специально поля для ключей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2005, 11:27 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Все бывает... Классификация ключей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2005, 12:22 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
2 ModelR Офигительная статья. Мне очень понравилась :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2005, 14:27 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
Как известно, все проектировщики баз данных деляться на две категории: Те, которые еще не поняли , что естественных ключей не бывает. Те, которые уже поняли , что естественных ключей не бывает. Так что спорить тут бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 00:29 |
|
||
|
Объясните кто прав: студент или человек с опытом?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Истинно глаголешь!.. Выбить стальным кресалом на гранитных скрижалях! Каких бы граблей (я лично) не натоптал бы, если бы в начале своей профессиональной деятельности не начитался бы сколь заумного, столь и пустого мусора про "супер-полезность" Естественных Ключей. В сад... Ни разу после не пожалел о Суроргатных Ключах. И каждый раз шлёпаю себя по маковке (болван доверчивый), поддерживая свои же программы и сталкиваясь со своими же Естественными Ключами! Полный нах... Ничего Уникального ЕК не гарантируют! У меня самого 3 разных номера ИНН в пенсинном фонде РФ! На одного и того же человека с одними данными (спасибо моим договорным партнёрам - не нашли ИНН в бухгалтерии, фигак - завели...) !!! И это не шутка. И система у них в ПФ, типа, одна на всех централизованая... Ага... Тоже, разработчики, наверное, тащились от ЕК. Пробел или точка в фамилии, адресе и ещё 10 ИНН получишь! К счастью, для меня ЕК уже в прошлом. Строить реляции в БД по ЕК - юношеский максимализм. Но есть ещё и "И опыт, сын ошибок трудных..." (с) Явно Не Тургенев. Прислушивайтесь к мнению старших и более оптыных товарищей! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 23:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1545723]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 380ms |

| 0 / 0 |
