|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Вопрос создан после сообщения Garya Кто-то слышал хоть об одном успешном внедрении SAP R/3 в СНГ? Хотелось бы спросить уважаемых участников. Что вы думаете по поводу использования таких ключей в ERP-системах? Для затравки статья http://www.akzhan.midi.ru/devcorner/articles/naturalKeysVersusAtrificialKeysByTentser.html ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 11:01 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Ну, тема эта суперобширна... :) И ее уже обсуждали на форуме по MS SQL, и не раз. Если поиск запустить, то в глазах рябить начинает... Обсуждение же ее, имхо, можно сравнить с выяснением, что раньше появилось - курица или яйцо. :) Вопрос, имхо, философский. И только поэтому поднявший его заслуживает участи Джордано Бруно... Шутка :) Я не могу быть объективным при обсуждении данной темы, поскольку принимал участие в работе над проектом, ориентированном на сверхдинамичность среды (можно посмотреть презентацию , кому интересно). Я являюсь сторонником суррогатных ключей, но лишь потому, что живу в условиях этого самого сверхдинамизма. Я много раз набивал себе шишку (полагаю, не только я), когда изменялись банковские реквизиты у организации, когда организация изменяла наименование, когда люди изменяли фамилию или номер паспорта. С моей индивидуальной точки зрения с точки зрения систематики невозможно четко идентифицировать понятие "объект" или "субъект" так, чтобы какая-либо автоматизированная система смогла бы отличать его от другого аналогичного объекта без помощи самого человека. Эти в существенной степени философский вопрос, и его рассмотрение обычно решается в ту или иную сторону в зависимости от контекста и на интеллектуальном уровне. Иванов И.И. в возрасте 3-х лет и в возрасте 60 лет - это один объект или разные? В них нет ни одной общей молекулы (которые уже сменились дважды). Он сменил номер паспорта - 5 раз, фамилию - 4 раза, гражданство - 3 раза, пол - один раз. И все-таки это один объект или разные? Если положительно ответить на этот вопрос, то при поиске тех естественных составляющих, которые-таки являются едиными и неизменными для этого объекта-субъекта, можно забраться в мистические и религиозные области, которые пока ( ) не поддаются автоматизации и четкой систематизации. Поэтому я являюсь сторонником суррогатных ключей. Пусть пользователь изменяет какие угодно реквизиты. Пока СК остается неизменным, это подразумевает оперирование одним и тем же объектом. С ЕК такое не прокатит. Я уже не говорю о том, что населенный пункт с названием "Москва" в мире далеко не один. Для того, чтобы обозначить ОДНОЗНАЧНО, какой именно имеется в виду, нужно к наименованию прикрутить страну, в которой он находится, вид населенного пункра (поселок городского типа, деревня, аул, кишлак, мегаполис...), географические координаты... А через некоторое время выяснится, что нужно еще уточнять, о координатах в системе какой именно планеты идет речь. ВСЕ эти проблемы решаются одним легким движением - введением суррогатного ключа. Но я не настаиваю на своем мнении. Подчеркиваю, это вопрос ФИЛОСОФСКИЙ, а у философских вопросов однозначных ответов никогда не существовало... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 12:06 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
GaryaС моей индивидуальной точки зрения с точки зрения систематики невозможно четко идентифицировать понятие "объект" или "субъект" так, чтобы какая-либо автоматизированная система смогла бы отличать его от другого аналогичного объекта без помощи самого человека. Эти в существенной степени философский вопрос, и его рассмотрение обычно решается в ту или иную сторону в зависимости от контекста и на интеллектуальном уровне. Иванов И.И. в возрасте 3-х лет и в возрасте 60 лет - это один объект или разные? В них нет ни одной общей молекулы (которые уже сменились дважды). Он сменил номер паспорта - 5 раз, фамилию - 4 раза, гражданство - 3 раза, пол - один раз. И все-таки это один объект или разные? Если положительно ответить на этот вопрос, то при поиске тех естественных составляющих, которые-таки являются едиными и неизменными для этого объекта-субъекта, можно забраться в мистические и религиозные области, которые пока ( ) не поддаются автоматизации и четкой систематизации Дело не в философии, но возможно в... мистике. Человек был создан Богом, чтобы всему сущему дать имена. Имя - это не просто идентификатор, а смысловое выжение сущности. При рассмотрении в такой плоскости проблема выглядит иначе: если мы можем понять и передать смысл, то есть шанс воспользоваться естественным ключом, в противном случае неизбежно придется использовать суррогатный ключ. GaryaПоэтому я являюсь сторонником суррогатных ключей. Пусть пользователь изменяет какие угодно реквизиты. Пока СК остается неизменным, это подразумевает оперирование одним и тем же объектом. С ЕК такое не прокатитВозможно, было бы правильным рассмотреть две стороны первичного ключа. С первой стороны, первичный ключ - это уникальная метка. И нет никакой разницы является ли эта метка внутренней или внешней. Со второй стороны, первичный ключ - это элемент взаимосвязи между сущностями. И порой, лишая смысла первичный ключ, мы лишаем смысла и связи, в которых принимает участие данная сущность. Информация в системе становится недостоверной или система усложняется, поскольку достверность приходится обеспечивать дополнительными средствами. GaryaЯ уже не говорю о том, что населенный пункт с названием "Москва" в мире далеко не один. Для того, чтобы обозначить ОДНОЗНАЧНО, какой именно имеется в виду, нужно к наименованию прикрутить страну, в которой он находится, вид населенного пункра (поселок городского типа, деревня, аул, кишлак, мегаполис...), географические координаты... Вполне достаточно координат. GaryaА через некоторое время выяснится, что нужно еще уточнять, о координатах в системе какой именно планеты идет речь. ВСЕ эти проблемы решаются одним легким движением - введением суррогатного ключа Если на этапе проектирования нет представления о том, для какого уровня создается система, то здесь никакой суррогатный ключ не спасет... Кроме того, суррогатный ключ не столько решает проблемы, сколько создает их. Можно, например, пользуясь суррогатным ключем завести 100 раз один и тот же город? Можно. Можно завести два разных города по одним и тем же координатам? Можно. Так чем же помогает суррогатный ключ? GaryaНо я не настаиваю на своем мнении. Подчеркиваю, это вопрос ФИЛОСОФСКИЙ, а у философских вопросов однозначных ответов никогда не существовало... :)Философия бывает разной... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 13:02 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
GaryaНу, тема эта суперобширна... :) И ее уже обсуждали на форуме по MS SQL, и не раз... Спасибо. Обязательно почитаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 13:12 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
2 ASU. Все меняется... (не помню, кто сказал). Если бы я жил НЕ в России, где все меняется в режиме быстрой перемотки, то, может быть, мое мнение по этому вопросы было менее категоричным. В свое время мне пришлось решать такую проблему. Изменились НАШИ банковские реквизиты (я уже не говорю о чужих). Нужно сделать так, чтобы старые документы распечатывались со старыми реквизитами, а новые - с новыми. Когда кто-то из сотрудников меняет фамилию или имя, то меня, как "асунизатора", вообще не должно волнововать, по какой причине это произошло. Вышел ли кто-то замуж, или ему опостылело имя "Канализация", которое родители дали, посчитав, что оно красиво звучит (кстати, вполне реальный случай). Для организации, где я работаю, важно, что это один и тот же человек. ПОЧЕМУ мы считаем Настью и Канализацию одним и тем же человеком - это не должно интересовать информационную систему. Эта наша, человеческая область. Если мы посчитаем, что это разные сущности, мы введем их дважды, даже если у них одинаковый номер паспорта. Может быть, мы ХОТИМ видеть одного и того же человека, как двух разных. Это не КИСкино дело! Имхо, конечно. ASUС первой стороны, первичный ключ - это уникальная метка. И нет никакой разницы является ли эта метка внутренней или внешней. Со второй стороны, первичный ключ - это элемент взаимосвязи между сущностями. И порой, лишая смысла первичный ключ, мы лишаем смысла и связи, в которых принимает участие данная сущность. Очень правильные слова! Если мы используем СК, то мы вольны придавать смысл сущности тот, который пожелаем. Когда мы используем ЕК, то у нас уже нет такой свободы. Есть искусствено притянутые за уши ограничения, который, возможно, оправдываются в большинстве ситуаций, но достаточно одной нестандартной ситуации, чтобы оказаться в полному тупике, выяснив, что ЕК совскем не такой уж "естественный", как казалось раньше. ASUВполне достаточно координат. Увы, не достаточно. Один введет координаты мавзолея Ленина на Красной площади, другой - геометрического центра Москвы (который по мере ее застройки постоянно перемещается). И они окажутся разными. А для ключа это недопустимо. Кроме того, использование координат с точки зрения соответствия практическим манипулированием информацией НЕЕСТЕСТВЕННО . Эту информацию пользователю-колотильщику по клавиатуре НЕГДЕ ВЗЯТЬ. Конечно, можно заставить вместо наименований населенных пунктов вводить коды ОКАТО. Но пока они научатся в них ориентироваться... И потом, для меня был как гром среди ясного неба, когда я узнал, что для целых регионов в России с некоторого времени коды ОКАТО изменились. ASUЕсли на этапе проектирования нет представления о том, для какого уровня создается система, то здесь никакой суррогатный ключ не спасет... Вопрос спорный, определяется степенью предсказуемости изменений. Нас интересует НАСЕЛЕННЫЙ ПУНКТ , в котором находится контрагент, и АРЕАЛ, где он находится. Под словом "АРЕАЛ" можно понимать вещи совершенно разные для разных видов анализа. И заранее трудно сказать, что под ним будет подразумеваться. Если мы обозначим населенный пункт ТОЛЬКО наименованием, то попадем в тупик, когда узнаем, что Москва есть еще и в Америке, с поставщиком из которой мы стали работать недавно. Если мы в качестве уточняющей информации добавим понятие "Страна", то попадем в тупик, узнав, что в России Москва далеко не единственная. Какой выход? Создается суррогатный ключ и поле "примечание". Вот в примечании мы и напишем, чем эта Москва отличается от двух остальных, если нам не хватает базовых полей для описания отличий этих сущностей. И наша система будет нормально фунциклировать с треми Москвами, и выдаст корректно информацию о деятельности по странам, когда мы ее запросим. И даже по регионам России, если она есть. Далее, встает традиционный ворпос о длине ключа. Для того, чтобы ЕСТЕСТВЕННЫЙ ключ сделать гарантированно уникально описывающим сущность, в идеале в него приходится включать практически все поля-атрибуты сущности (разве не так?). О какой эффективности тут можно говорить, о какой нормализации? авторМожно, например, пользуясь суррогатным ключем завести 100 раз один и тот же город? Можно. Можно завести два разных города по одним и тем же координатам? Можно. Так чем же помогает суррогатный ключ? Имхо, не следует смешивать логику проверки на допустимость операции с логикой отношения между объектами. Если действительно существуют 100 городо в с одним и тем же наименованием, то это действительно мы должны иметь возможность сделать. Если вероятность такого события довольно мала, то в логику работы программы мы можем ввести вывод предупреждающего сообщения, что город с подобным именем уже существует в 99 экземплярах (и предложить выбрать один из них, на случай, если пользователь согласится использовать существующий экземпляр). Можно просто запретить вводить повторяющиеся наименования. Но когда возникнет необходимость все-таки ввести повторяющиеся наименования, эта проблема решится в две секунды устранением ранее введенного ограничения. Но при этом логика связей между сущностями (как мы, человеки-юзеры ее себе понимаем) не пострадает. И структура данных останется без изменения. А что делать, когда ты использовал поле "Name" в качестве ЕК, а через 2 года эксплуатации выяснилось, что нужно ввести записи с повторяющимся значением поля "Name"? Кроме того, ЕК сам по себе не спасает от дублирования информации (знаю это по богатому опыту). Пользователь, привыкший к реакции системы на повторяющиеся имена, обязательно введет десяток вариаций одного и того же имени со всеми видами опечаток. Разные пользователи название "ЗАО НПП СКБ "Прогресс" введут с разным количеством кавычек, пробелов, с подбробными или сокращенными расшифровками аббревиатур, с переставленными и опущенными частями имени. Так что ЕК от этой проблемы как таковой не спасает. Эта проблема - совсем другая проблема. И ее решение требует отдельного рассмотрения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 14:18 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
еще. не прочитал, конечно... но... уж очень дорого иметь в системе суррогатные ключи... слишком много join'ов приходится делать вместо простого select'а... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 14:33 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
2 mazzy. И у того, и у этого подхода имеются и плюсы, и минусы. Имхо, их нужно рассматривать в совокупности. Лично я - сторонник суррогатных ключей. А пишется ли запрос в одну строчку или в две, имхо, это вообще дело десятое. Пользователь врядли будет писать даже простейший select * from .... Для него это китайская грамота. Гораздо важнее, с какой скоростью этот запрос работает. Ключ автоматом подразумевает индес. Что это за индекс, размер которого приближается к размеру записи? Какой смыслв подобном индексе? В названии индийского города "Тируванатапурам" - 13 символов. В названии "Ростов-на-Дону" - 14. Добавь к ним еще название страны, долготу и широту... Ну и ключище получится! И на все это нужно будет ссылаться, ПОВТОРЯЯ во всех ссылках все содержимое составного ключа... Можно ли считать нормализованной таблицу, которая "ссылается" на подобный ключ? С какой скоростью будут работать запросы с JOIN, когда JOIN действительно понадобится? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 14:54 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
формировать по типу коротких имен в DOS. и человеку понятно, и уникальность гарантируется... как бы сюда картинку вставить... вот ссылка на картинку http://forum.mazzy.ru/uploads/post-9-1085580825.png хотя согласен, что это тоже компромисс... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 15:04 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Mazzyно... уж очень дорого иметь в системе суррогатные ключи... слишком много join'ов приходится делать вместо простого select'а... Чувствуется подход из Axapta & 1С. Неплохая статья на эту тему http://emanual.ru/download2/3602.html ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 16:11 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
GaryaВсе меняется... (не помню, кто сказал). Если бы я жил НЕ в России, где все меняется в режиме быстрой перемотки, то, может быть, мое мнение по этому вопросы было менее категоричнымНе очень понятна ссылка на Россию. Древние восточные философы говорили: “Все – есть перемены”. Но как перемены связаны с темой? GaryaВ свое время мне пришлось решать такую проблему. Изменились НАШИ банковские реквизиты (я уже не говорю о чужих). Нужно сделать так, чтобы старые документы распечатывались со старыми реквизитами, а новые - с новымиИ в чем проблема? По всей видимости в ошибке проектирования. Но эта ошибка легко поправима: надо добавить к таблице поле (ALTER TABLE ADD...), где у старой записи сохранить ссылку на новую запись. Обе записи стали полноправны, для старых документов будет актуальна старая запись, для новых – новая. GaryaКогда кто-то из сотрудников меняет фамилию или имя, то меня, как "асунизатора", вообще не должно волнововать, по какой причине это произошло. Вышел ли кто-то замуж, или ему опостылело имя "Канализация", которое родители дали, посчитав, что оно красиво звучит (кстати, вполне реальный случай). Для организации, где я работаю, важно, что это один и тот же человек. ПОЧЕМУ мы считаем Настью и Канализацию одним и тем же человеком - это не должно интересовать информационную систему. Эта наша, человеческая область. Если мы посчитаем, что это разные сущности, мы введем их дважды, даже если у них одинаковый номер паспорта. Может быть, мы ХОТИМ видеть одного и того же человека, как двух разных. Это не КИСкино дело! Имхо, конечноС чего Вы решили, что любые атрибуты могут выступать в качестве первичного ключа? Для однозначной идентификации сотрудника организации существует “Табельный номер”. Наверное, надо было познакомиться с предметной областью более глубоко, прежде, чем браться за автоматизацию. Garya ASUС первой стороны, первичный ключ - это уникальная метка. И нет никакой разницы является ли эта метка внутренней или внешней. Со второй стороны, первичный ключ - это элемент взаимосвязи между сущностями. И порой, лишая смысла первичный ключ, мы лишаем смысла и связи, в которых принимает участие данная сущностьОчень правильные слова! Если мы используем СК, то мы вольны придавать смысл сущности тот, который пожелаем. Когда мы используем ЕК, то у нас уже нет такой свободыН-да... А как же быть с предметной областью? В ней уже дан смысл каждой сущности, в противном случае, этих сущностей просто бы не существовало. С таким подходом к проектированию, придется и предметную область свою придумывать и ее... пользователей. GaryaЕсть искусствено притянутые за уши ограничения, который, возможно, оправдываются в большинстве ситуаций, но достаточно одной нестандартной ситуации, чтобы оказаться в полному тупике, выяснив, что ЕК совскем не такой уж "естественный", как казалось раньшеМожно пример. Garya ASUВполне достаточно координат Увы, не достаточно. Один введет координаты мавзолея Ленина на Красной площади, другой - геометрического центра Москвы (который по мере ее застройки постоянно перемещается)Координаты в терминах долготы и широты образуют уникальное значение для любого предмета на поверхности Земли. Если предметная область требует еще и вертикальной координаты, то ее надо ввести на этапе проектирования. GaryaИ они окажутся разными. А для ключа это недопустимоНе выдумывайте, пожалуйста. GaryaКроме того, использование координат с точки зрения соответствия практическим манипулированием информацией НЕЕСТЕСТВЕННО . Эту информацию пользователю-колотильщику по клавиатуре НЕГДЕ ВЗЯТЬ. Конечно, можно заставить вместо наименований населенных пунктов вводить коды ОКАТО. Но пока они научатся в них ориентироваться... И потом, для меня был как гром среди ясного неба, когда я узнал, что для целых регионов в России с некоторого времени коды ОКАТО изменились И что страшного произошло? Изменились, ну, и что? Два населенных пункта стали иметь один и тот же код? Garya ASUЕсли на этапе проектирования нет представления о том, для какого уровня создается система, то здесь никакой суррогатный ключ не спасет...Вопрос спорный, определяется степенью предсказуемости изменений. Нас интересует НАСЕЛЕННЫЙ ПУНКТ , в котором находится контрагент, и АРЕАЛ, где он находится. Под словом "АРЕАЛ" можно понимать вещи совершенно разные для разных видов анализа. И заранее трудно сказать, что под ним будет подразумеватьсяНаверное, в этом и проблема - не изученность предметной области. В таком случае невозможно отвечать за достоверность информации в базе данных. GaryaЕсли мы обозначим населенный пункт ТОЛЬКО наименованием, то попадем в тупик, когда узнаем, что Москва есть еще и в Америке, с поставщиком из которой мы стали работать недавно. Если мы в качестве уточняющей информации добавим понятие "Страна", то попадем в тупик, узнав, что в России Москва далеко не единственная. Какой выход? Создается суррогатный ключ и поле "примечание". Вот в примечании мы и напишем, чем эта Москва отличается от двух остальных, если нам не хватает базовых полей для описания отличий этих сущностей. И наша система будет нормально фунциклировать с треми Москвами, и выдаст корректно информацию о деятельности по странам, когда мы ее запросим. И даже по регионам России, если она естьВы говорите о проблеме изучения предметной области? Или о том, как свои проблемы перекладывать на плечи пользователей? GaryaДалее, встает традиционный ворпос о длине ключа. Для того, чтобы ЕСТЕСТВЕННЫЙ ключ сделать гарантированно уникально описывающим сущность, в идеале в него приходится включать практически все поля-атрибуты сущности (разве не так?). О какой эффективности тут можно говорить, о какой нормализации?Хм... Вы что-то знаете о нормализации? Сомневаюсь. Нормализация не имеет отношения к вопросу выбора ключа по той простой причине, что нормализация проводится после того, как ключ выбран (определены функциональные зависимости, найдены детерминанты и выбран ключи из потенциальных ключей). Вопрос о длине ключа является надуманным. Естественный ключ может быть больше или меньше суррогатного ключа. Например, для стран и валют есть принятые международным сообществом аббревиатуры размером в 2-3 символа. Суррогатный ключ будет иметь размер принятый в данной СУБД (4-8 байт). В задачи ключа не входит экономить место, его задача однозначно идентифицировать кортеж. Garya авторМожно, например, пользуясь суррогатным ключем завести 100 раз один и тот же город? Можно. Можно завести два разных города по одним и тем же координатам? Можно. Так чем же помогает суррогатный ключ? Имхо, не следует смешивать логику проверки на допустимость операции с логикой отношения между объектамиЧего? Простите, но что такое “допустимость операций”? GaryaЕсли действительно существуют 100 городо в с одним и тем же наименованиемПростите, но я говорил не о множестве городов с одним именем, а о том, что один и тот же город заводят в БД много раз. Разницу понимаете? GaryaА что делать, когда ты использовал поле "Name" в качестве ЕК, а через 2 года эксплуатации выяснилось, что нужно ввести записи с повторяющимся значением поля "Name"?Если я использую в качестве ключа набор атрибутов не обеспечивающий уникальности, то мне придется признать, что я напрасно ем хлеб проектировщика БД. Но за всю мою жизнь, ни разу такого не случалось (проектированием БД я занимаюсь порядка 20 лет). GaryaКроме того, ЕК сам по себе не спасает от дублирования информации (знаю это по богатому опыту)Он так же не спасает ни от лени, ни от глупости, ни от головной боли. А разве должен? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 16:21 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
А вот ещё статья в тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 16:34 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Павел ВоронцовА вот ещё статья в тему. не работает ссылка что-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 16:59 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Ну вот, чего я боялся, то и произошло. Разговор дошел до флуда. Это тема такая... Ладно, продолжим... ASUНе очень понятна ссылка на Россию. Древние восточные философы говорили: “Все – есть перемены”. Но как перемены связаны с темой? По моим подсчетам форма счета-фактуры изменялась на протяжении одного года 5 раз. И это было в России. Сам документ "счет-фактура" является специальным первичным документом только для одного вида налога - НДС. У нас еще есть резервные возможности в этом направлении - завести под каждый вид налога отдельный вид первичных документов. Накладная, в которой повторяется 90% атрибутики счета-фактуры для этого вида налога принимается только СОВМЕСТНО со счетом-фактурой. Только в одной стране на одно и то же основное средство расчитывается две разные амортизации - для бухучета и для налогового учета. Глубинный смысл этого таинственного деяния не понимает никто, даже те, кто это придумал. Сначала вводится спецналог, потом несколько раз изменяется его ставка, потом отменяется... Смысл? Сначала воодится налог с продаж, потом несколько раз меняется его ставка, потом отменяется. Смысл? Продолжать, или хватит? авторИ в чем проблема? По всей видимости в ошибке проектирования. Но эта ошибка легко поправима: надо добавить к таблице поле (ALTER TABLE ADD...), где у старой записи сохранить ссылку на новую запись. Обе записи стали полноправны, для старых документов будет актуальна старая запись, для новых – новая. Имеется движение, связанное с этими записями. И это движение ссылается на разные записи. Нужно прилично извернуться, чтобы система догадалась объединить обороты по этим записям в одну кучу, поскольку они относятся к одной и той же сущности. Это не совсем ошибка проектирования. Это относится, вообще-то, к аспекту недочетов реляционной модели, которая предлагает рассматривать кортежи как набор атрибутов сущностей, "забывая" о том, что атрибуты у одних и тех же сущностей могут изменяться, и историю этих изменений зачастую необходимо хранить не просто в каком-то регистрационном журнале, а в самой модели. авторС чего Вы решили, что любые атрибуты могут выступать в качестве первичного ключа? Для однозначной идентификации сотрудника организации существует “Табельный номер”. Наверное, надо было познакомиться с предметной областью более глубоко, прежде, чем браться за автоматизацию. Правда!? А я не знал А теперь увольте этого сотрудника и через пару месяцев снова примите обратно на работу под новым табельным номером (только не говорите, что отдел кадров где-то принимаемому на работу сотруднику присваивает прежний табельный номер). А после объясните фискальщикам, почему НДФЛ нарастающим итогом по одному и тому же человеку некорректно рассчитался... ASUН-да... А как же быть с предметной областью? В ней уже дан смысл каждой сущности, в противном случае, этих сущностей просто бы не существовало. С таким подходом к проектированию, придется и предметную область свою придумывать и ее... пользователей. Ну есть сущность "организация". Вне зависимости от существования или НЕ существования ИНН, КПП, кодов ВЭД, ОКПО, ОКОНХ и многих других. Если наши законодатели придумают новый 20-значный или 200-значный код, в котором объединят все эти коды, то что изменится в предметной области, кроме того, что для данной сущности появился новый атрибут, которого раньше не было? Какие кардинальные изменения произошли в отношениях между сущностями? ASUКоординаты в терминах долготы и широты образуют уникальное значение для любого предмета на поверхности Земли. Если предметная область требует еще и вертикальной координаты, то ее надо ввести на этапе проектирования. А не могли бы Вы указать конкретные координаты долготы и широты объекта "Москва"? Интересно, сколько времени Вы будете искать ответ на этот вопрос. И еще интереснее, что любые координаты - это положение ТОЧКИ. А Москва - это далеко не точка (это я и пытался объяснить). Из одного конца в другой можно ехать аж полдня. И если два юзера укажут координаты двух РАЗНЫХ точек, которые хоть и находятся в пределах Москвы, но образуют РАЗНЫЕ значения первичного ключа. ASUВы что-то знаете о нормализации? Сомневаюсь. Нормализация не имеет отношения к вопросу выбора ключа по той простой причине, что нормализация проводится после того, как ключ выбран (определены функциональные зависимости, найдены детерминанты и выбран ключи из потенциальных ключей). Вообще-то, если в первичный ключ включить вообще все поля вообще всех таблиц, то можно считать, что они уже автоматом нормализованы. Теоретически это так, и спорить я тут не стану. Вопрос только в том, кому нужна такая нормализация. Нормализируют таблицы обычно с определенными целями, которых в данном случае я не наблюдаю. ASUВ задачи ключа не входит экономить место, его задача однозначно идентифицировать кортеж. Тогда почему бы в качестве ключа не использовать содержимое всех полей записи? Кроме теории есть еще практика... авторЧего? Простите, но что такое “допустимость операций”? Если мы, например, не хотим допустить появления в БД двух городов с одинаковым именем, то для этого совсем не обязательно имя города превращать в первичный ключ. Это можно сделать множеством иных способов. ASUПростите, но я говорил не о множестве городов с одним именем, а о том, что один и тот же город заводят в БД много раз. Разницу понимаете? Понимаю. И на это я уже ответил: GaryaЕК сам по себе не спасает от дублирования информации (знаю это по богатому опыту). Пользователь, привыкший к реакции системы на повторяющиеся имена, обязательно введет десяток вариаций одного и того же имени со всеми видами опечаток. Разные пользователи название "ЗАО НПП СКБ "Прогресс" введут с разным количеством кавычек, пробелов, с подбробными или сокращенными расшифровками аббревиатур, с переставленными и опущенными частями имени. Так что ЕК от этой проблемы как таковой не спасает. Эта проблема - совсем другая проблема. И ее решение требует отдельного рассмотрения. ASUЕсли я использую в качестве ключа набор атрибутов не обеспечивающий уникальности, то мне придется признать, что я напрасно ем хлеб проектировщика БД. Но за всю мою жизнь, ни разу такого не случалось (проектированием БД я занимаюсь порядка 20 лет). Неужели ваши пользователи никогда не делают опечаток? ASUОн так же не спасает ни от лени, ни от глупости, ни от головной боли. А разве должен? Нет не должен. Потому я и подчеркнул, причины появления дублирующихся записей - это тема другого разговора. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 17:02 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
SeVa Mazzyно... уж очень дорого иметь в системе суррогатные ключи... слишком много join'ов приходится делать вместо простого select'а... Чувствуется подход из Axapta & 1С. Неплохая статья на эту тему http://emanual.ru/download2/3602.html В общем то да. А где еще такая проблема возникает? Где еще, кроме 1С, широко используются суррогатные ключи? Garya, у вас теоретический подход или вы знаете реализацию кроме 1С? (Извините, тот длинный топик я распечатал, но еще не прочитал) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 17:11 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
mazzy SeVa[quot Mazzy]но... уж очень дорого иметь в системе суррогатные ключи... слишком много join'ов приходится делать вместо простого select'а... Garya, у вас теоретический подход или вы знаете реализацию кроме 1С? (Извините, тот длинный топик я распечатал, но еще не прочитал) На самом деле СК - "единственно верное учение" :) Реализаций-то масса, а что толку, если структура и ядро системы уже заточены на естественные ключи ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 17:27 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
MazzyGarya, у вас теоретический подход или вы знаете реализацию кроме 1С? Не уверен, что понял вопрос. Я участвовал в работе над проектом, в котором был реализован подход полной модифицируемости любых атрибутов объектов, а также добавления атрибутов "на ходу" без внесения изменений проектировщиком в схему данных. Без звукового сопровождения несколько мудрено понять, но, в общем-то, эта концепция описана в презентации, на которую я сослался выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 17:39 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
2 mazzy. На собрании клуба RSUG Евгений Нечепоренко (Вжик) делал доклад "Методология Data Vault в проектировании хранилищ данных". Эта технология имеет много общего с той, которую использовали мы в работе. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 17:51 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
ок. спасибо. буду читать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 17:54 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
И охота Вам копья ломать ? С прошлого века видел на различных форумах и сайтах многотомные топики СК vs ЕК, время идет, а в спорах и по сей день участвуют абсолютно одинаковые аргументы (разве что развитие СУБД позволяет легче реализовывать ньюансы ЕК, по сравнению к старым версиям). Может ну его ? Кто как умеет, тот так и проектирует, у каждого свои наработки и свои особенности СУБД, плюс в одной задаче и ЕК будут глядеться неплохо, в другой без СК ничего не выйдет. Какой смысл заново начинать давно известный флуд ? От себя могу сказать, что всю жизнь пользуюсь только СК и ничего страшного не произошло. В пользу СК можно сказать, что в случае ошибки проектирования БД (ошибка постановки, ошибка архитектора и т.д.) с ним можно выкрутиться меньшими потерями, чем ЕК. Это мое мнение, вполне возможно специалисты, знающие как "готовить" ЕК могут сказать наоборот, но доказывать друг другу по моему бесполезно, как сравнивать бокс и футбол, разные принципы, разные подходы, разные методологии, куча литературы и выложенных решений для обоих моделей. P.S. Ну а Россия я думаю упомянута не зря - например, у меня из сложившегося опыта первый принцип проектирования БД "ТЗ доверяй, но в меру перестраховывайся". С ЕК такой принцип для меня не подходит, так как у меня например, есть изменяющиеся во времени справочники, где измениться может абсолютно любое поле, история изменений должна храниться полностью, так как по этой информации идут расчеты задними числами и печать отчетов. И как на такую информацию сослаться в других таблицах по ЕК лично я даже представления не имею. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 19:09 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
> И охота Вам копья ломать ? Честно говоря, неохота. Я же говорил, что поднявший такую тему достоин участи Джордано Бруно... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 19:34 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
не буду больше. читаю... мдя... уж... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 20:18 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
GaryaПо моим подсчетам форма счета-фактуры изменялась на протяжении одного года 5 раз. И это было в РоссииРанее, я уже провел мысль о том, что «все – есть перемены». Вы эту мысль старательно подтвердили. Зачем? Или Вы считаете, что перемены происходят только в России? GaryaИмеется движение, связанное с этими записями. И это движение ссылается на разные записиЧто ж, давайте по порядку. По всей видимости, рассматривается «движение» по банковским счетам. Для начала должен заметить, что любая организация может иметь произвольно много счетов в одном или разных банках. Сами процедуры открытия или закрытия счетов не являются чем-то из ряда вон выходящим. Следовательно, вести параллельно несколько счетов в финансовой системе должно быть обычным делом, в не зависимости от того, является ли какой-то счет «старым», а какой-то «новым». Добавив новое поле, можно установить логическую связь между «старым» и новым «счетом». При этом сумма со «старого» счета переводится на «новый» счет, и старый счет помечается, как неиспользуемый с такой-то даты. Аналогичная ситуация возможна во многих других ситуациях, например, при инвентаризации. Какое же отношение к этой ситуации имеет тип ключа? GaryaА я не знал А теперь увольте этого сотрудника и через пару месяцев снова примите обратно на работу под новым табельным номером (только не говорите, что отдел кадров где-то принимаемому на работу сотруднику присваивает прежний табельный номер)Хм... Скажите, а Ваши инспектора отдела кадров хорошо знакомы с правилами приема на работу? Смею думать, что нет. Дело в том, что информация о каждом сотруднике должна хранится на предприятии 75 лет. Следовательно, сотрудник должен однозначно идентифицироваться в течение всего этого времени. Именно для этого ему присваивается табельный номер. И при повторном приеме на работу инспектор отдела кадров обязан повторно присвоить сотруднику старый табельный номер. GaryaА после объясните фискальщикам, почему НДФЛ нарастающим итогом по одному и тому же человеку некорректно рассчитался...[ /quot]Вот пусть несколько раз взыщут НДФЛ с нерадивого инспектора ОК, и все встанет на свои места. Видите, как полезны ЕК... [qout=Garya]Ну есть сущность "организация". Вне зависимости от существования или НЕ существования ИНН, КПП, кодов ВЭД, ОКПО, ОКОНХ и многих других. Если наши законодатели придумают новый 20-значный или 200-значный код, в котором объединят все эти коды, то что изменится в предметной области, кроме того, что для данной сущности появился новый атрибут, которого раньше не было? Какие кардинальные изменения произошли в отношениях между сущностями?И что же из этого следует? Только то, что не все сущности предметной области имеют естественный ключ? Да, конечно. Но почему надо применять суррогатный ключ, там, где есть естественный. Или может быть из-за отсутствия ЕК в одной сущности, не следует исследовать остальные (а, значит, и не исследовать предметную область)? GaryaА не могли бы Вы указать конкретные координаты долготы и широты объекта "Москва"? Интересно, сколько времени Вы будете искать ответ на этот вопрос. И еще интереснее, что любые координаты - это положение ТОЧКИ. А Москва - это далеко не точка (это я и пытался объяснить). Из одного конца в другой можно ехать аж полдня. И если два юзера укажут координаты двух РАЗНЫХ точек, которые хоть и находятся в пределах Москвы, но образуют РАЗНЫЕ значения первичного ключаДля начала, давайте научимся не сваливать все в одну кучу. Подобный подход – «смертный» приговор для проектировщика или... для его пользователей. Итак, первое. Вы, как я понял, не отрицаете, что широта и долгота однозначно идентифицируют положение любого предмета на поверхности Земли. Второе, в каждом городе есть общепринятая точка, относительно которой считаются все относительные расстояния. Как правило, это точка возле центрального почтамта или прямо в нем. Поэтому выдумывать эту точку тоже не надо, достаточно ее знать. И, наконец, третье. Если понятия широты и долготы не входят в предметную область, то, скорее всего, что для них есть адекватная замена, например, административные или почтовые коды, принятые аббревиатуры и пр. GaryaВообще-то, если в первичный ключ включить вообще все поля вообще всех таблиц, то можно считать, что они уже автоматом нормализованыНу, вот... очередные «откровения», то ЕК нормализацию нарушает, то предлагают в ЕК все атрибуты включить... Хотелось бы заметить, что проектировщик БД не создает предметную область, но моделирует ее. И чем адекватнее модель своему оригиналу, тем она качественнее. Ферштейн? Исходя из сказанного, замечу, что вопрос о том включать или не включать атрибуты в ключ не может быть решен произвольным образом (дорого платить придется за подобное «решение»). Необходимо исследовать атрибуты каждой сущности и зависимости между сущностями, прежде чем принимать решение о том, каким будет ключ. GaryaТеоретически это так, и спорить я тут не стану. Вопрос только в том, кому нужна такая нормализация. Нормализируют таблицы обычно с определенными целями, которых в данном случае я не наблюдаюНормализация всегда выполняется с одной единственной целью: избежать аномалий. Что значит «такая» и «не такая» нормализации для меня осталось загадкой... GaryaКроме теории есть еще практика...Если теория противоречит практике, то возможно одно из трех: 1. Неверна теория; 2. Неверно истолкована практика (ошибка в измерениях, например); 3. Практик просто не знает теории. Выбирайте то, что Вам ближе. GaryaЕсли мы, например, не хотим допустить появления в БД двух городов с одинаковым именем, то для этого совсем не обязательно имя города превращать в первичный ключ. Это можно сделать множеством иных способов. Совершенно верно. Сказанное означает только то, что название города должно быть признано ключем-кандидатом. GaryaНеужели ваши пользователи никогда не делают опечаток?Почему же, наверное, делают. Но из этого никоим образом не следует то, что я использую в качестве ключа набор атрибутов не обеспечивающий уникальности. Уважаемый Garya, постарайтесь понять меня правильно. Ваши реплики свидетельствуют о том, что Вы - недостаточно хорошо знаете теорию баз данных; - поверхностно изучаете предметную область и, как следствие, делаете поспешные выводы о сущностях предметной области и их атрибутике; - недостаточно глубоко просчитываете результаты своих решений. Думаю, что обсуждать проблему выбора ключей дальше, не имеет смысла, поскольку мы говорим не о ключах, а о «белых пятнах» в Вашем сознании. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 20:26 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
ASUне отрицаете, что широта и долгота однозначно идентифицируют положение любого предмета на поверхности Земли Нет, они могут меняться, хотя бы вследствие движения литосферных плит. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 20:42 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
ASUЧто ж, давайте по порядку. По всей видимости, рассматривается «движение» по банковским счетам. Для начала должен заметить, что любая организация может иметь произвольно много счетов в одном или разных банках. Сами процедуры открытия или закрытия счетов не являются чем-то из ряда вон выходящим. Да, этот пример немного не из той оперы. Под него подходят ЕК. Я же имел в виду немного другую ситуацию. Реально наш банк сменил наименование (а еще он менял корсчет и БИК, но это было позже). Или другой случай. Под оборотами подразумевается движение дебиторской/кредиторской задолженности, а под сменившимися атрибутами - наименование одного из контрагентов (или ИНН, поскольку ДРУГАЯ организация стала правопреемником старой, но с точки зрения взаиморасчетов для нас это одна и та же организация). Необходимо, чтобы система "помнила" и старое наименование, и новое. И чтобы обороты, связанные с организациями с РАЗНЫМИ наименованиями воспринимала как взаиморасчеты с одним и тем же контрагентом, а не с разными. А в документах распечатывалось то наименование, которое было действительно на момент выписки документа. В 1С такие реквизиты называются "периодическими". И там, в принципе, эта задача решается, если проектировщик заведомо догадался все реквизиты, которые могут измениться, сделать периодическими. В той разработке, над которой работал я, периодическим были вообще все атрибуты вообще всех сущностей. Поэтому не нужно было напрягаться и соображать, что делать периодчиеским, а что не делать. ASUДумаю, что обсуждать проблему выбора ключей дальше, не имеет смысла, поскольку мы говорим не о ключах, а о «белых пятнах» в Вашем сознании. Возможно :). Я тоже думаю, что обсуждать дальше эту тему нет смысла... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 22:30 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
ASUХм... Скажите, а Ваши инспектора отдела кадров хорошо знакомы с правилами приема на работу? Смею думать, что нет. Дело в том, что информация о каждом сотруднике должна хранится на предприятии 75 лет. Следовательно, сотрудник должен однозначно идентифицироваться в течение всего этого времени. Именно для этого ему присваивается табельный номер. И при повторном приеме на работу инспектор отдела кадров обязан повторно присвоить сотруднику старый табельный номер. Гм, как должно быть и как есть - это абсолютно разные вещи. Вы высказываетесь как должно быть, но пишем то мы программы по тому, что есть. И например, цитированная фраза противоречит тому, что есть в России. Я, как разработчик зп могу очень много страниц исписать того, что написано в ТК и НК РФ и как на самом деле работает у клиентов. И никто не вправе им навязать делать так, как "завещало" государство, они клиенты и это их личное дело, любой тиражный продукт должен поддерживать обе модели работы "Как должно быть" и "Как есть". Если он не будет соотвествовать этому условию, то он просто не будет востребован. Насчет табельных номеров у меня вопрос решен просто - в течении года табельный номер забронирован за сотрудником и в случае его увольнения он остается висеть до конца года. Если сотрудник обратно принят на работу, то ему разрешается "вернуть" его старый номер, но разрешается и сделать новый. В моей системе сотрудники вынесены в отдельную таблицу от лицевых счетов и связаны через СК, поэтому особой разницы нет, у кого какие аттрибуты были изменены во времени, сколько на сотрудника открыто лицевых счетов и нет проблем с обьединением начислений по множеству лицевых счетов сотрудника. И то - бронь табельного номера в течении года - это дань уважения ТК и обеспечение непротиворечивости годовых отчетов. Если найдется клиент, которому это не понравится, мне недолго будет это вынести в конфигурационную настройку и включать/отключать обеспечение его уникальности (опять же благодаря СК схема БД не нарушится). P.S. Напоследок в эту тему хочу сказать, что лично я и множество коллег, которые еще много лет назад участвовали в подобных спорах, пришли к компромиссному выводу: в качестве первичного ключа использовать СК, в кач-ве уникального ЕК. Тогда первичный ключ однозначно идентифицирует запись и ни от чего не зависит, а уникальный обеспечивает целостность данных на уровне бизнес-логики и может иметь различные виды уникальности. Например в вышеприведенном мною примере уникальность табельного номера обеспечивается в течении года, однако при необходимости я всегда могу изменить ее условия на полную уникальность в пределах таблицы, в течении полгода и т.д. Все это прекрасно реализуется через UNIQUE CONSTRAINTS или же обычные триггера. По моему прекрасный выход, без лишних напрягов СУБД и риска нарваться на неприятные ситуации с ЕК. Еще P.S. Кстати в предыдущих "баталиях" основным аргументом использования ЕК была репликация. Сейчас смотрю этот аргумент в связи с прогрессом механизмов репликаций у всех СУБД не упомянается как главный. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 22:46 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Сергей Васкецов ASUне отрицаете, что широта и долгота однозначно идентифицируют положение любого предмета на поверхности Земли Нет, они могут меняться, хотя бы вследствие движения литосферных плит.Читаем еще раз и внимательно. Широта и долгота однозначно идентифицируют положение любого предмета на поверхности Земли. Широта и долгота не меняются при сдвигах земной коры. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 06:53 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Garya ASUЧто ж, давайте по порядку. По всей видимости, рассматривается «движение» по банковским счетам. Для начала должен заметить, что любая организация может иметь произвольно много счетов в одном или разных банках. Сами процедуры открытия или закрытия счетов не являются чем-то из ряда вон выходящим. Да, этот пример немного не из той оперы. Под него подходят ЕК. Я же имел в виду немного другую ситуацию. Реально наш банк сменил наименование (а еще он менял корсчет и БИК, но это было позже). Или другой случай. Под оборотами подразумевается движение дебиторской/кредиторской задолженности, а под сменившимися атрибутами - наименование одного из контрагентов (или ИНН, поскольку ДРУГАЯ организация стала правопреемником старой, но с точки зрения взаиморасчетов для нас это одна и та же организация). Необходимо, чтобы система "помнила" и старое наименование, и новое. И чтобы обороты, связанные с организациями с РАЗНЫМИ наименованиями воспринимала как взаиморасчеты с одним и тем же контрагентом, а не с разными. А в документах распечатывалось то наименование, которое было действительно на момент выписки документа. В 1С такие реквизиты называются "периодическими"Дело не в 1С. Задача, о которой Вы говорите, является достаточно распространенной и один из вариантов решения я уже приводил (прочитайте еще раз про ALTER TABLE... в моих предыдущих сообщениях). Должен заметить, что при тщательном разборе любой ситуации с СК можно показать, что они в лучшем случае неуместны, в худшем случае вредны. Разобранный нами пример просто подтверждение этого положения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 07:02 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
ASCRUS ASUХм... Скажите, а Ваши инспектора отдела кадров хорошо знакомы с правилами приема на работу? Смею думать, что нет. Дело в том, что информация о каждом сотруднике должна хранится на предприятии 75 лет. Следовательно, сотрудник должен однозначно идентифицироваться в течение всего этого времени. Именно для этого ему присваивается табельный номер. И при повторном приеме на работу инспектор отдела кадров обязан повторно присвоить сотруднику старый табельный номер. Гм, как должно быть и как есть - это абсолютно разные вещи. Вы высказываетесь как должно быть, но пишем то мы программы по тому, что есть. И например, цитированная фраза противоречит тому, что есть в России. Я, как разработчик зп могу очень много страниц исписать того, что написано в ТК и НК РФ и как на самом деле работает у клиентов. И никто не вправе им навязать делать так, как "завещало" государство, они клиенты и это их личное дело, любой тиражный продукт должен поддерживать обе модели работы "Как должно быть" и "Как есть". Если он не будет соотвествовать этому условию, то он просто не будет востребованМне бы не хотелось повторять расхожих фраз об автоматизации бардака. Если Вам нравится делать и переделывать, если у Вас фактически не выбора (либо получить заказ, либо умереть с голода), если Вам безразлично то, что Вы делаете, то... я не вижу темы для обсуждения. Но, если Вы хотите получить красивое и надежное решение, то... перестаньте анализировать требования заказчика и начните осмысливать задачу вне различных точек зрения на нее, то есть, объективно. Даже если Вам удастся собрать воедино точки зрения всех потенциальных пользователей, всех работающих на предприятии, Вы не получите адекватной модели. Сумма частностей не равна целому. ASCRUSНасчет табельных номеров у меня вопрос решен просто - в течении года табельный номер забронирован за сотрудником и в случае его увольнения он остается висеть до конца года. Если сотрудник обратно принят на работу, то ему разрешается "вернуть" его старый номер, но разрешается и сделать новый. В моей системе сотрудники вынесены в отдельную таблицу от лицевых счетов и связаны через СК, поэтому особой разницы нет, у кого какие аттрибуты были изменены во времени, сколько на сотрудника открыто лицевых счетов и нет проблем с обьединением начислений по множеству лицевых счетов сотрудника. И то - бронь табельного номера в течении года - это дань уважения ТК и обеспечение непротиворечивости годовых отчетов. Если найдется клиент, которому это не понравится, мне недолго будет это вынести в конфигурационную настройку и включать/отключать обеспечение его уникальности (опять же благодаря СК схема БД не нарушится)Это паллиативное решение, так как Ваша схема не дает пользователям возможности однозначно идентифицировать сотрудника. ASCRUSP.S. Напоследок в эту тему хочу сказать, что лично я и множество коллег, которые еще много лет назад участвовали в подобных спорах, пришли к компромиссному выводу: в качестве первичного ключа использовать СК, в кач-ве уникального ЕК. Тогда первичный ключ однозначно идентифицирует запись и ни от чего не зависит, а уникальный обеспечивает целостность данных на уровне бизнес-логики и может иметь различные виды уникальностиУникальность не имеет “различных видов”. Использование СК в качестве первичного ключа может привести к недостоверности информации в БД. Посмотрите для примера статью "Ключ или отмычка" ASCRUSНапример в вышеприведенном мною примере уникальность табельного номера обеспечивается в течении года, однако при необходимости я всегда могу изменить ее условия на полную уникальность в пределах таблицы, в течении полгода и т.д. Все это прекрасно реализуется через UNIQUE CONSTRAINTS или же обычные триггера. По моему прекрасный выход, без лишних напрягов СУБД и риска нарваться на неприятные ситуации с ЕКПроблема в том, что Вы пытаетесь избежать неприятностей, а не следовать логике предметной области. “Тот, кто ищет пути отступления до начала битвы, не достоин быть победителем” (Марк Аврелий). Если Вы добьетесь того, чтобы “табельный номер” был уникален сам по себе, Вы не только упростите свое решение, но убедитесь, насколько проще решаются задачи пользователей. Пользователи не обязаны быть системными аналитиками, но разработчик – обязан. ASCRUSЕще P.S. Кстати в предыдущих "баталиях" основным аргументом использования ЕК была репликация. Сейчас смотрю этот аргумент в связи с прогрессом механизмов репликаций у всех СУБД не упомянается как главныйНаверное, надо исходить из смыслового содержания ЕК. В любой ситуации, когда ключ используется во вне БД важен его смысл. Репликация – это частный случай использования ключа вне конкретной БД. А разговоры о “прогрессе механизмов репликации” в данном контексте не имеют смысла. СК функционален только в внутри одной БД. При переносе информации в другую БД, СК становится вреден, поскольку а) утрачивается идентификация; б) обрываются связи на основе внешних ключей; ЕК в отличие от СК имеет смысл не в БД, а в предметной области. Поэтому в любом количестве БД одна и та же сущность будет иметь один и тот же идентификатор. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 07:55 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
согласен с ASU, что СК происходят от недостаточного анализа предметной области. для Garya, если внимательно задуматься над жизненными примерами, пользователи уже давно используют что-то типа команды ALTER TABLE, приведенную в качестве примера ASU: наполняется папка с документами "Входящие", так они ставят даты и пишут "продолжение в папке входящие с датой такой-то", а на продолжении пишут "начало в папке такой-то и тоже дату указывают". ASU "И что же из этого следует? Только то, что не все сущности предметной области имеют естественный ключ? Да, конечно." а вот здесь я не совсем согласен с Вашим утверждением. может лучше было сказать так: "на данном этапе развития наших знаний и мощности вычислительной технике не для всех сущностей предметной области возможно использование естественных ключей"? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 08:44 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
авторМне бы не хотелось повторять расхожих фраз об автоматизации бардака. Если Вам нравится делать и переделывать, если у Вас фактически не выбора (либо получить заказ, либо умереть с голода), если Вам безразлично то, что Вы делаете, то... я не вижу темы для обсуждения. Но, если Вы хотите получить красивое и надежное решение, то... перестаньте анализировать требования заказчика и начните осмысливать задачу вне различных точек зрения на нее, то есть, объективно. Даже если Вам удастся собрать воедино точки зрения всех потенциальных пользователей, всех работающих на предприятии, Вы не получите адекватной модели. Сумма частностей не равна целому. На Ваше высказывание возникает закономерный вопрос - Вы вообще занимались разработкой тиражного ПО ? Наверное ездите по всем клиентам и проникновенно рассказываете о красивом и надежном решении (правда противоречащим их правилам работы) ? Давайте все таки говорить о практике, а не теории и без высоких слов. авторЭто паллиативное решение, так как Ваша схема не дает пользователям возможности однозначно идентифицировать сотрудника. В моей схеме сотрудник и без табельного номера однозначно идентифицирован на любой момент времени своими родными аттрибутами (ФИО, пол, паспортные данные, ИНН, пенсионное страховое удостоверение, место жительства и т.д.). Табельный номер ему никто в паспорт не вписывает и даже если он опять будет принят на работу через много лет на тоже самое предприятие, то будет распознан и без требования к кадровой службе поднять его старый табельный номер. авторПроблема в том, что Вы пытаетесь избежать неприятностей, а не следовать логике предметной области. “Тот, кто ищет пути отступления до начала битвы, не достоин быть победителем” (Марк Аврелий). Если Вы добьетесь того, чтобы “табельный номер” был уникален сам по себе, Вы не только упростите свое решение, но убедитесь, насколько проще решаются задачи пользователей. Пользователи не обязаны быть системными аналитиками, но разработчик – обязан. Если бы я всю БД завязал на табельные номера, то наверное действительно я бы очень сильно "постарался" обеспечить их уникальность и заставил бы пользователей следовать этой модели. В моей же модели табельный номер обычный аттрибут, даже если завтра в ТК решат убрать табельные номера, моя БД будет продолжать спокойно работать и без него, причем без переделок в коде (если не считать заремаривания в триггере кода проверки на уникальность в течении года табельного номера). Из этого следует мораль: проектируйте правильно БД и тогда не будет лишних рассуждений о том, как облегчить жизнь программисту и пользователю. И не стоит в БД пытаться реализовать физическую модель полностью соотвествующую логической, ничего хорошего не выйдет, кроме ляпов в проектировании и тормозов. Физическая модель БД должна удовлетворять условиям логической модели, но включать в себя все правила релляционной модели и ньюансы архитектуры используемой СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 08:58 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
AlTk ASU И что же из этого следует? Только то, что не все сущности предметной области имеют естественный ключ? Да, конечно а вот здесь я не совсем согласен с Вашим утверждением. может лучше было сказать так: "на данном этапе развития наших знаний и мощности вычислительной технике не для всех сущностей предметной области возможно использование естественных ключей"?Дело не в мощностях и не в уровне наших знаний. Когда мы говорим о предметной области, то понимаем, что это модель некоторой части окружающего нас мира. И как любой другой модели, предметной области свойственны ограничения. Безусловно, существует масса признаков, по совкупности которых можно однозначно идентифицировать любой болт из нескольких миллионов. Но в предметной области эти признаки отсутствуют (остаются за "кадром") и болты не отличаются друг от друга. Аналогично и с другими сущностями. Безусловно, два человека (даже близнеца) имеют индивидуальные признаки. Но при приеме на работу и при выполнении работы они не важны, важны другие признаки: имя, фамилия, отчество, квалификация, образование, возраст, пол и пр. Но они не образуют уникальных комбинаций. Расширять предметную область (модель) не всегда правильно (зачем исследовать болты или радужную оболочку глаза?). Но вот если бы мы проектировали мир... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 09:03 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
ASCRUS авторМне бы не хотелось повторять расхожих фраз об автоматизации бардака. Если Вам нравится делать и переделывать, если у Вас фактически не выбора (либо получить заказ, либо умереть с голода), если Вам безразлично то, что Вы делаете, то... я не вижу темы для обсуждения. Но, если Вы хотите получить красивое и надежное решение, то... перестаньте анализировать требования заказчика и начните осмысливать задачу вне различных точек зрения на нее, то есть, объективно. Даже если Вам удастся собрать воедино точки зрения всех потенциальных пользователей, всех работающих на предприятии, Вы не получите адекватной модели. Сумма частностей не равна целому. На Ваше высказывание возникает закономерный вопрос - Вы вообще занимались разработкой тиражного ПО ? Наверное ездите по всем клиентам и проникновенно рассказываете о красивом и надежном решении (правда противоречащим их правилам работы) ? Давайте все таки говорить о практике, а не теории и без высоких словА я и говорю о практике. Моя практика не противоречит теории, по всей видимости, в отличие от Вашей. Мы действительно в начале работы с любым предприятием проводим семинар, где рассматриваем "системы управления предприятием". Делается это строго последовательно. Сначала мы рассказываем о том, что такое "система", потом - что такое "управление", далее рассказываем о предприятии. Для нас важно донести до руководства смысл каждого слова. Если смысл слов воспринят, то мы продолжаем говорить о "системе управления", о "предприятии, как системе", и, наконец, об управлении предприятием. Если есть понимание этих терминов, то только тогда мы определяем, что такое "система управления предприятием". Мы не расспрашиваем клиентов о том, как они делают то или иное, но мы позволяем клиентам увидеть истоки их проблем и понять пути их решения. И поверьте, еще не было случая, когда бы клиенты выразили сомнения или неудовлетворение от общения с нами. И не было случая, когда бы теория не подтвердилась практикой. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 09:25 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
2ASCRUS и ASU Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
1.Какие номера должниы присваиваться практикантам, сдельщикам, повременщикам. И должны-ли присваивваться вообще? 2. Организация насчитывает общую численность свыше 300 тыс человек, текучесть все-ж кой-какая есть, сколько символов должен содержать табельный номер, и в чем его отличие от сурогатного ключа, длиной 10 символов если рассматривать законадательный срок хранения информации в 75 лет? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 09:42 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
НепонятливыйМожно есче добавить про табельные номера: 1.Какие номера должниы присваиваться практикантам, сдельщикам, повременщикам. И должны-ли присваивваться вообще?Да, табельные номера должны присваиваться любому сотруднику, внезависимости от условий контракта (договора), продолжительности работы на предприятии и пр. Непонятливый2. Организация насчитывает общую численность свыше 300 тыс человек, текучесть все-ж кой-какая есть, сколько символов должен содержать табельный номер, и в чем его отличие от сурогатного ключа, длиной 10 символов если рассматривать законадательный срок хранения информации в 75 лет?Табельный номер не является суррогатым ключом (по определению). Тип этого атрибута, как правило целочисленный (32-х разрядное [беззнакое] число). Этого размера хватит для того, чтобы хранить информацию о 4 294 967 296 сотрудниках (половина населения земного шара). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 10:23 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
2ASU Код: plaintext 1.
Это, насколько я понял, цитата из ТК? Интересно было-бы посмотреть, как кадровики набивают "0000004", к примеру. Дело в том, что сотрудники кадровых служб, да и пользователи вообще, с большим восторгом воспринимают стринговые значения одинаковой длины, а не непонятный им набор цифр. Хотя Вы правы, теории мне не хватает, нигде в ТК не читал о разрядности табельного номера ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 10:38 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Ребята, а какое это всё имеет отношение к ERP системам? как правило, промышленные системы предпочитают НЕсуррогатные ключи. Причины я вижу в 1 системы работают с разными СУБД. Где-то есть автоинкремент, а где-то и нет 2 как правило, заполнение ключевого поля - это отдельный шаг в бизнес-процессе. Имеется в виду, что в системе есть возможность выбрать из - автоматического заполнения по определенному правилу (непрерывно в течение года и хозяйствующего субъекта) - подпрограмма назначения - пишется самим пользователем - то бишь внедренцем таким образом, выбор способа заполнения ключа - это задача бизнес-технолога и не системщика. Хотя конечно согласование необходимо, например любят технологи нарушать 1 нормальную форму :), пытаясь закодировать в поле массу "ценной" информации ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 11:19 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
2AnS1 Код: plaintext 1. 2.
Это какие именно? Западные, может, российские по моему, всеж строяться с использованием суррогатных ключей, в том-или ином виде, будь то номер записи, иль некоторое сгенеренное символьное значение. В случае, когда СУБД не поддреживает автоинкремент, используеться генерация на уровне бизнес-логики, с использованием ХЭШ-таблиц и т.д. Да, интересный момент, это кто-ж вот так легко Код: plaintext
пускает бизнес технолога к редактированию первичного ключа? Никогда не приходилось поднимать цепочку действий пользователей по кортежу документов, выполненных в прошлом году? И без условия запрета на любую модификацию первичного ключа тут не обойтись. А при использовании в качестве первичного ключа комбинации редактируемых пользователем полей такие запреты выполнить не удастся. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 12:37 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Немного OFF: Господа! Давайте спорить не ради "фаллометрии", а для обмена опытом! Garya выступает аргументировано, тогда как ASU мало того что "гость", все его аргументы звучат как - "вы дурак, а вот я все знаю". Цель дискуссий - поделиться своим видением вопроса, а не доказать кто больше знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 13:11 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
> Господа! Давайте спорить не ради "фаллометрии", а для обмена опытом! Я вообще предлагаю закрыть тему. Она много раз обсуждалась на форуме по MS SQL Server и обмусолена уже до такой степени, что аж косточки блестят. Врядли мы тут скажем что-либо новое. И хотя к теме ERP она имеет отношение, но все-таки недостаточно прямое. Обычно в конретной ERP-системе уже определенным образом задана концепция выбора ключей, и приходится исходить из нее. > как правило, промышленные системы предпочитают НЕсуррогатные ключи. Насколько мне известно, в Навижн используются целочисленные суррогатные ключи с автоприращением. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 13:17 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
>>Насколько мне известно, в Навижн используются целочисленные суррогатные ключи с автоприращением. навижн заточен по sql server \ oracle. О других СУБД он и не знает. Я говорю про любимый R/3 ^), baan и oa но действительно, топик становится весьма oфф ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 13:27 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
и все же отвечу >>Никогда не приходилось поднимать цепочку действий пользователей по кортежу документов, выполненных в прошлом году? нормальная erp система имеет средства анализа исторических данных, которые не завязаны на архитектуру БД >>И без условия запрета на любую модификацию первичного ключа тут не обойтись. А при использовании в качестве первичного ключа комбинации редактируемых пользователем полей такие запреты выполнить не удастся. кто Вам сказал, что модификация ключа разрешена? Создали документ, присвоили номер - и опаньки. если бизнес-логика позволяет изменять содержимое - пожалуйста, только ключ не трогать! Если необходим документ с другими значениями в ключе - это новый документ! Пример - бух документ, имеет в ключе № и фин. год. Хотим сменить год - значит должны сторнировать созданный и провести новый документ уже в новом году ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 13:36 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
[quot AnS1]Ребята, а какое это всё имеет отношение к ERP системам? как правило, промышленные системы предпочитают НЕсуррогатные ключи. В OEBS в основном суррогатные ключи ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 14:01 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
>>как правило, промышленные системы предпочитают НЕсуррогатные ключи. В OEBS в основном суррогатные ключи ок, действительно, не совсем "как правило" получается :). Интересуюсь, а как с нумерацией документов, например финансовых, в OEBS? Если номер суррогат, то должно быть поле "внешний номер", который в документах показывается и по которому поиск в системе ведется.Получается, что по этому полю необходим индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 14:25 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
va_kochnevВ OEBS в основном суррогатные ключи 1. Ну, кое-где в OEBS можно настраивать, какими они будут - суррогатными или естественными. 2. И суррогатные, и естественные ключи могут порождать проблемы во время эксплуатации. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 14:31 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
ASUШирота и долгота не меняются при сдвигах земной коры. Военные над Вами посмеются. Наверное, картографы тоже. Потом к ним добавятся те, кто занимается спортивным ориентированием на местности. Потом все остальные. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 16:20 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
широта и долгота действительно не меняются. меняются координаты объекта. кстати в Спитаке сдвиг был всего около 40 см. ПС. если же вместо катаклизма произошло выборочный селевой сдвиг конкретных объектов :-), то опять же в документах пишется объект такой-то стал иметь такие-то и такие координаты, а в другой строчке пишется, а этот имел раньше такие координаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 17:27 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
AlTkширота и долгота действительно не меняются. меняются координаты объекта заданные широтой и долготой. но при этом они [Ш и Д] у объекта не меняются. что за бред? Можно вычислить расстояние (не по поверхности, а по прямой) между 2-мя объектами зная их Ш и Д? Можно, это функция. А если расстояние меняется (например, расстояние от Белого дома до ракетной шахты за год уменьшилось на 8 см), как могут остаться неизменными обе пары координат объектов? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 20:16 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
AnS1>> Интересуюсь, а как с нумерацией документов, например финансовых, в OEBS? Если номер суррогат, то должно быть поле "внешний номер", который в документах показывается и по которому поиск в системе ведется.Получается, что по этому полю необходим индекс. Например таблица счетов-фактур поставщиков имеет суррогатный ключ по полю invoice_id (в формах и отчетах пользователь его не видит) и уникальный индекс по полям invoice_num (номер СФ) vendor_id (идентификатор поставщика) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2004, 04:44 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Прочитал дискуссию (действительно, одну из многих читанных дискуссий по этому вопросу). Не буду влазить, но вот что отметил "со стороны". Господин ASU откровенно хамит и зачастую вместо аргументов пытается "помериться фаллосами". Я-де 20 лет проектирую БД, мы-де проводим научные семинары перед руководством (как мы круты!) и т.п. Замечу, что в конкретном споре это не аргументы, так как можно, например 20 лет делать мелкие дурацкие поделки, а с крупной задачей ни разу не столкнуться. Можно и великие семинары устроить: один раз перед президентом пивного ларька, второй - перед генеральным секретарем столовой №22. Это к вопросу, что "мудрость приходит с годами, но бывает, что годы приходят и одни". Надо отбросить фаллосометрию и оперировать только аргументами. А так - покосячили и Garya, и ASU. Garya немного лажанулся на теории нормализации, а ASU сел в лужу с координатами. Желаю дальнейших успехов и здоровья! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2004, 08:33 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
Кстати, по поводу статьи "Ключ или отмычка" . Ссылки на нее иногда встречаются на подобных дискуссиях. Если кратко - бред. Основная "наукообразная" часть, якобы формально доказывающая "проблемы" СК, основана просто напросто на некорректном примере. Поэтому горячим сторонникам ЕК лучше на это статью не ссылаться, так как ее автор сделал им медвежью услугу. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2004, 08:47 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
"заданные широтой и долготой. но при этом они [Ш и Д] у объекта не меняются. что за бред?" угу, совсем заработался. хотел сказать, что ШиД сами по себе не меняются при сдвигах земной коры, а если мы привяжем к величинам ШиД какой либо точечный объект, то действительно, при сдвиге земной коры мы получим, что у объекта новые широта и долгота. только я хочу все-таки заметить, что говорить про новую широту и долготу мы можем только с определенной степенью точности. так что при тех сдвигах земной коры, когда наблюдаемый объект остается целым/наблюдаемым, мы скорее всего получим те же самые широту и долготу и Ваши 8 см просто никто не заметит, так как их "не будет". другое дело, если мы начинаем рассматривать протяженный во времени процесс плавного перемещения литосферных плит, изменяющий суперконтиненты. но даже и в этом случае мы имеем некоторую точность, определяемую частотой проведения координатных замеров и "положением планет". например, до сих пор действует система координат 1942 года (Пулковская), хотя раньше действовала 1963 года и существует 1995 года. ПС. и вообще, по-моему маркшейдерия вообще дело достаточно темное. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2004, 10:01 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
mirКстати, по поводу статьи "Ключ или отмычка" . Ссылки на нее иногда встречаются на подобных дискуссиях. Если кратко - бред. Основная "наукообразная" часть, якобы формально доказывающая "проблемы" СК, основана просто напросто на некорректном примере. Поэтому горячим сторонникам ЕК лучше на это статью не ссылаться, так как ее автор сделал им медвежью услугу.Можете пояснить в чем состоит некорректность примера? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2004, 11:50 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
altairМожете пояснить в чем состоит некорректность примера? Смотрим на рис.3. Автор говорит, что «более подробно данная предметная область описана в приложении», но никакого приложения нет , поэтому приходится интерпретировать его модель не основе своей логики и скудных разъяснений. Так вот, если кратко, то это не позиция заказа должна быть связана с моделью, а комплект (ведь по условию в комплект входят изделия одной и той же модели). Более того, это в общем случае позволит включать в позицию заказа комплекты разных моделей. А если потребуется наложить правило «одна позиция-одна модель», то это следует сделать с помощью специальных бизнес-правил — ограничений целостности. То есть автор попытался реализовать бизнес-правило «одна позиция-одна модель» не явно, а с помощью хитрого кольца первичных ключей, включающих части друг друга. Это есть ни что иное, как трюк. А использование трюков вместо явных решений порицает как теория, так и практика. Вообще автор не очень дружит с теорией, чему вот пример. Цитата: «решение, основанное на введении суррогатного ключа, порождает транзитивную зависимость: суррогатный ключ =>интеллектуальный ключ =>неключевые атрибуты (здесь знак => обозначает термин «определяет») Наличие транзитивной зависимости нарушает третью нормальную форму (3НФ). Таким образом, бездумное использование суррогатных ключей, приводит к нарушению нормализации, а, следовательно, и к аномалиям.» Ну что здесь скажешь? Автор, видимо, не знаком с концепцией множественности потенциальных ключей (ПтК). Ведь при наличии нескольких ПтК (даже вполне естественных) можно рисовать такие зависимости аж до посинения: ПтК1 => ПтК2 =>ПтК3 => неключевые атрибуты ПтК2 => ПтК1 =>ПтК3 => неключевые атрибуты ПтК1 => ПтК3 =>ПтК2 => неключевые атрибуты и т.д. А ведь в этом случае наличие нескольких ПтК автоматом «нарушает 3НФ» вне зависимости от их природы (суррогатный или натуральный). Но теория давно решила этот вопрос (см. НФ Бойса-Кодда, специально введенную для случая нескольких ПтК). То есть неприязнь к суррогатным ключам у автора есть, а знание теории – не вполне. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2004, 08:39 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
А не кажется ли уважаемым модераторам, что ветка уже немного не соответствует тематике форума? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2004, 11:05 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
mirКстати, по поводу статьи "Ключ или отмычка" . Ссылки на нее иногда встречаются на подобных дискуссиях. Если кратко - бред. Основная "наукообразная" часть, якобы формально доказывающая "проблемы" СК, основана просто напросто на некорректном примере. Поэтому горячим сторонникам ЕК лучше на это статью не ссылаться, так как ее автор сделал им медвежью услугу. По ссылке не читал, но вот пример навскидку: (В скобках указаны СК) _таблица Люди(ID) _таблица Документы(ID,ЛюдиID references Люди(ID)...) по одному человеку может быть несколько документов, но документы есть не у всех Людей :)) Документы уникальны _таблица Группа (ID) _таблица Люди_вГруппе(ID, ЛюдиID references Люди(ID), ГруппаID references Группа(ID) ); человек может в нескольких группах быть _таблица T ( например, получение чего-нибудь в группе человеком по опред. документу(по предъявлению док-та) или без него(ДокументID null) ) ( Люди_вГруппеID, ДокументID, дата, дополнительные реквизиты ), Возникает проблема поддержания целостности и непротиворечивости данных в таблице T: возможно занесение в таблицу Т значений [Люди_вГруппеID, документID], которые будут ссылаться на РАЗНЫХ людей - Люди_вГруппеID->[ЛюдиID1], а документID->[ЛюдиID2]. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2004, 11:15 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
V. GoncharenkoА не кажется ли уважаемым модераторам, что ветка уже немного не соответствует тематике форума? :) Согласен. Уважаемые. Если вы хотите продолжать обсуждение теоретических вопросов СК и ЕК переходите в эту ветку ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2004, 13:48 |
|
Суррогатные или естественные ключи в ERP-системах
|
|||
---|---|---|---|
#18+
mir ...Это есть ни что иное, как трюк. А использование трюков вместо явных решений порицает как теория, так и практика... Насколько понимаю, здесь ветка закрывается. To mir, altair, ASU, etc предлагаю продолжить обсуждение (про трюки и возможные проблемы ) в предложенном месте. Пример я туда уже переместил. На мой взгляд, в пылу борьбы EK vs СК на некоторые возможные проблемные моменты не обращают внимания, смешиваются в кучу концептуальные модели и физическое их воплощение. Если будет интерес, могу подкинуть простой примерчик про НФ (про трюки, нормализацию, и CK), на котором многие спотыкаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2004, 11:51 |
|
|
start [/forum/topic.php?all=1&fid=29&tid=1528736]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
265ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 643ms |
0 / 0 |