Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Вниз

Первичный ключ   Найти похожие ветки 

 
Anatoly Podgoretsky ©   (2006-04-17 16:05) [160]

Суслик ©   (17.04.06 12:49) [96]
Не будет завтра ИНН. И что?

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


 
Суслик ©   (2006-04-17 16:13) [161]


> просто ИНН превратится логически в UID

1. вот и придумывай алгоритм придумывания новых ИНН если оный "умрет".
2. вот и храни 10(+длина строки) знаков вместо 4 (int).
а надо оно?


 
Jeer ©   (2006-04-17 16:17) [162]

Игорь Шевченко ©   (17.04.06 15:42) [156]

1. PK - это способ идентификации записи в пределах таблицы, не более того.
С этой точки зрения, что СК, что EK - неважно, т.к. не стоит задача идентификации с внешним миром.
1а - РК на основе СК и связки таблиц  на основе СК - "естественнее" для СУБД.
2. ЕК, тем более составной ЕК, привязанный к изменчивому внешнему миру и есть основной источник головной боли.
3. Систематизации и на ее основе разумная унификация ничего, кроме лучших понимания и управляемости системы принести не может.
"Или не тот корм был в коня" (С)
4. В принципе, СК и ЕК - это разные уровни абстракции одного и того же - прикладных данных, но, как правило, с использованием СК система работает быстрее, проектирование ведется единообразнее (тот самый универсализм).


 
Jeer ©   (2006-04-17 16:19) [163]

Anatoly Podgoretsky ©   (17.04.06 16:05) [160]

Переехал чел из Воркуты в Москву - смотришь и новый ИНН достался.
А чел. один и тот же.
Где уж тут уникальность.


 
Игорь Шевченко ©   (2006-04-17 16:27) [164]

Jeer ©   (17.04.06 16:19) [163]

Раз он переехал, то какой смысл его учитывать ?

Jeer ©   (17.04.06 16:17) [162]


> 1а - РК на основе СК и связки таблиц  на основе СК - "естественнее"
> для СУБД.


Что значит - естественнее ? С точки зрения СУБД абсолютно безразлично, какой первичный ключ - всего лишь поле или набор полей в таблице.


> 2. ЕК, тем более составной ЕК, привязанный к изменчивому
> внешнему миру и есть основной источник головной боли.


У СУБД голова не болит, как ты понимаешь. Составной просто неудобен, не более того, потому что каждая связанная таблица вынуждена хранить копии значений. Насчет изменчивости внешнего мира - а всякая ли изменчивость должна поддаваться учету в рамках конкретных задач ?


> 3. Систематизации и на ее основе разумная унификация ничего,
>  кроме лучших понимания и управляемости системы принести
> не может.


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


 
Sergey13 ©   (2006-04-17 16:30) [165]

2[164] Игорь Шевченко ©   (17.04.06 16:27)
Ты часто упоминаешь "рамках конкретных задач", " неизменным в рамках задачи сущностям". Но эти "рамки" - одно из самых непостоянных условий во внешнем мире, которые касаются программистов. 8-)


 
Игорь Шевченко ©   (2006-04-17 16:35) [166]

Sergey13 ©   (17.04.06 16:30) [165]

Ну не знаю. Если предметная область устойчивая, то откуда возьмется непостоянность ?


 
Jeer ©   (2006-04-17 16:38) [167]

Игорь Шевченко ©   (17.04.06 16:27) [164]


> Раз он переехал, то какой смысл его учитывать ?


Имеет, т.к. он мог переехать в пределах одной учетной базы и формально будет два налогоплательщика, но один чел.


> С точки зрения СУБД абсолютно безразлично,


Еще как различно:)
СУБД - она к машинке ближе, а там integer в почете.


> У СУБД голова не болит, как ты понимаешь.

Зато болит у разработчика при смене реалий по два раза на день.


> Составной просто неудобен,


Не просто, а очень, т.к. балшой и СУБД его на быстро скушает.

> а всякая ли изменчивость должна поддаваться учету в рамках
> конкретных задач ?


Если это о том, что на каждый чих органов должны выделяться деньги на его вытирание  -это утопия.
Сказано сменить план счетов ?
Сделано.
Всем ли оплачено - некоторым.


> или потерей производительности.


справочники, как правило невелики по объему, ссылки же по связкам-integer эффективнее для СУБД, т.е быстрее.

Все это - как правило.
Исключения мизерны, а потому - ничтожны.


 
Sergey13 ©   (2006-04-17 16:41) [168]

2[166] Игорь Шевченко ©   (17.04.06 16:35)
>Ну не знаю. Если предметная область устойчивая, то откуда возьмется непостоянность ?

Так вот например, было как

[163] Jeer ©   (17.04.06 16:19)
Переехал чел из Воркуты в Москву - смотришь и новый ИНН достался.

[164] Игорь Шевченко ©   (17.04.06 16:27)
Раз он переехал, то какой смысл его учитывать ?

А потом решили распространить Воркутинский опыт и потребовалось все слить "в мировом масштабе".

Да мало ли. ПисАли "складик для себя", а потом получилось почти "ERP на продажу".


 
Игорь Шевченко ©   (2006-04-17 16:47) [169]

Jeer ©   (17.04.06 16:38) [167]


> Имеет, т.к. он мог переехать в пределах одной учетной базы
> и формально будет два налогоплательщика, но один чел.


Тогда все зависит от того, как его, переехавшего надо учитывать. Пока ты не ответишь на этот вопрос, дальнейшая дискуссия нецелесообразна.


> Еще как различно:)
> СУБД - она к машинке ближе, а там integer в почете.


Точно ? А вот в MSSQL, по публикациям, GUID рекомендуют. А он и вовсе не Integer. Да и ROWID у Oracle тоже не Integer. Поэтому что там куда ближе - это еще бабушка надвое сказала.


> Если это о том, что на каждый чих органов должны выделяться
> деньги на его вытирание  -это утопия.
> Сказано сменить план счетов ?
> Сделано.


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


> Зато болит у разработчика при смене реалий по два раза на
> день.


Зачем их менять, два раза в день, реалии-то ? :) Ну в упор не понимаю.


> ссылки же по связкам-integer эффективнее для СУБД, т.е быстрее.


Эта...Ходят слухи, что СУБД внутре себя integer"ы не используют для идентификации записей в таблицах...


 
Jeer ©   (2006-04-17 16:48) [170]

В общем, хотелось бы завершить данную полемику тем, что выбор СК vs ЕК - вопрос практический или философский, но не теоретический, т.е. формальных методов обоснования предпочтения пока не видно.


 
Игорь Шевченко ©   (2006-04-17 16:52) [171]

Jeer ©   (17.04.06 16:48) [170]

Вот с этим я безусловно соглашусь :)


 
Jeer ©   (2006-04-17 16:54) [172]


> Точно ? А вот в MSSQL, по публикациям, GUID рекомендуют.
>  А он и вовсе не Integer.


> Ходят слухи, что СУБД внутре себя integer"ы не используют
> для идентификации записей в таблицах...
>


Реализации они разные бывают, да и что Микрософту лишние гигабайты.

А проверить легко - тестик:
Таблицы:
ФАМИЛИИ (char 32)
ИМЕНА (32)
ОТЧЕСТВА (32)
ПЕРСОНАЛ(Ф,И,О, ИНН)

Один вариант на СК, другой на ЕК
записей по 100 на справочники и 500 тыс на ПЕРСОНАЛ

Вот и проверка будет:)


 
Игорь Шевченко ©   (2006-04-17 16:57) [173]

Jeer ©   (17.04.06 16:54) [172]


> Таблицы:
> ФАМИЛИИ (char 32)
> ИМЕНА (32)
> ОТЧЕСТВА (32)
> ПЕРСОНАЛ(Ф,И,О, ИНН)
>
> Один вариант на СК, другой на ЕК
> записей по 100 на справочники и 500 тыс на ПЕРСОНАЛ


Если честно - не понял. Ты предлагаешь Фамилии хранить в отдельной таблице, Имена в отдельной таблице ? А зачем ? :)


 
Jeer ©   (2006-04-17 17:09) [174]

Это пример работы со справочниками, как соответствующий реальности.


 
VictorT ©   (2006-04-17 17:15) [175]


> Точно не помню, но алгоритм ведет к тому, что можно
> расшифровать дату рождения и пол и исключены
> совпадения.

Теоретически - да, а практически - то ли алгоритму не всегда следуют, то ли фиг знает какие причины, но неоднократно видел совпадения (неднократно - это десятки раз).


 
Игорь Шевченко ©   (2006-04-17 17:19) [176]

Jeer ©   (17.04.06 17:09) [174]

Объем данных - это одна половина вопроса. Вторая половина - это характер запросов к этим данным. Я не уверен, что заранее, не зная задачи, склонюсь к использованию естественных или искусственных ключей.


 
Jeer ©   (2006-04-17 17:22) [177]

Выборки по:
- фамилии
- фам + имени
- ф + и + о


 
Игорь Шевченко ©   (2006-04-17 17:37) [178]

Jeer ©   (17.04.06 17:22) [177]

В таком случае я, скорее всего, выберу естественные ключи.


 
euru ©   (2006-04-17 17:42) [179]

Странный спор.

Я знаю одну большую систему, работающую не только в нашей стране. Так там успешно применяются оба типа РК. И, вроде бы, никаких проблем эта система не испытывает.

Об чём же тогда спор?


 
Внук ©   (2006-04-17 19:15) [180]

>>Игорь Шевченко ©   (17.04.06 11:05) [80]
 А спорить не надо, просто приведи хоть одну причину делать естественный первичный ключ, кроме непонятной любви к мазохизму.
 Первичный ключ, допускающий редактирование пользователем - страшный сон. Но любителям приключений, в отличие от пуристов - удачи.


 
Внук ©   (2006-04-17 19:20) [181]

>>Игорь Шевченко ©   (17.04.06 12:48) [93]
>>Любые разумные доводы обычно принимаются, а с религией спорить - нуегонафиг.
 Есть и еще доводы, кроме уже приведенных (которых и так выше крыши). Но я опять подозреваю тебя в споре ради спора :)


 
Внук ©   (2006-04-17 19:29) [182]

Sergey13 ©   (17.04.06 13:26) [118]
 В точку.


 
euru ©   (2006-04-17 20:31) [183]


> Внук ©   (17.04.06 19:15) [180]
>
> >>Игорь Шевченко ©   (17.04.06 11:05) [80]
>  А спорить не надо, просто приведи хоть одну причину делать
> естественный первичный ключ, кроме непонятной любви к мазохизму.
>
Номер документа + Дата проводки
Позволяет сократить количество операторов JOIN, которые неминуемо бы появились, будь у каждого документа суррогатный автоинкрементный код.


 
Lamer@fools.ua ©   (2006-04-17 20:42) [184]

>Номер документа + Дата проводки
Позволяет сократить количество операторов JOIN, которые неминуемо бы появились, будь у каждого документа суррогатный автоинкрементный код.


Можно пояснить это на примере? Я что-то не вижу причин для уменьшения количества JOIN"ов.
К тому же, судя по слову "проводка" речь идёт о бухгалтерской системе? Если да, то ещё вопрос: а если документ ещё не проведен, а только пока что сохранён?


 
Внук ©   (2006-04-17 20:42) [185]

Каким образом вид ключа влияет на количество операторов JOIN? Правда, не понимаю. Суррогатный ключ, состоящий из одного поля, наоборот упрощает связи. А вот связывать таблицы по информационным полям... Брр.


 
Внук ©   (2006-04-17 20:52) [186]

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


 
xayam ©   (2006-04-17 23:59) [187]


> euru ©   (17.04.06 17:42) [179]
> Странный спор.
>
> Я знаю одну большую систему...И, вроде
> бы, никаких проблем эта система не испытывает.
>
> Об чём же тогда спор?

Вопрос был не в том испытывает она проблемы по жизни или нет, вопрос в способности системы (базы данных) к адаптации к изменениям в реальной жизни (ИНН, ISO... ... ...). Если Вы используете Естеств.Ключ могу Вас поздравить - гемороя не оберетесь (еще раз повторю [30]: а оно Вам надо?), при наличии же Сур.Ключа эти изменения сведены к минимуму.

> Игорь Шевченко ©

[90] -1
[98] -1
[111] -1
[115] -1
[121] -1
[131] -1
[134] -1
...дальше не читал...итого < -7


 
Суслик ©   (2006-04-18 00:39) [188]


> xayam ©   (17.04.06 23:59) [187]

поддерживаю.

---------------

повторю, что для меня единственное место ествественного ключа (как я понимаю, это когда в PK включается не уникальный суррогат, а значение) это junction table - таблица связи в отношении многие ко многим.


 
xayam ©   (2006-04-18 00:58) [189]


> Суслик ©   (18.04.06 00:39) [188]
> это когда в PK включается не уникальный
> суррогат, а значение

PK по определению уникальный каким бы он ни был, ЕК или СК


 
Игорь Шевченко ©   (2006-04-18 10:14) [190]

Внук ©   (17.04.06 20:52) [186]


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


А зачем вы пишете такие программы ? Я бы не стал тратить время.

Внук ©   (17.04.06 19:15) [180]


>  А спорить не надо, просто приведи хоть одну причину делать
> естественный первичный ключ


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

xayam ©   (17.04.06 23:59) [187]


> Вопрос был не в том испытывает она проблемы по жизни или
> нет, вопрос в способности системы (базы данных) к адаптации
> к изменениям в реальной жизни


Примеры адаптации в студию. Без примеров твои слова пустой звон.


> ...дальше не читал...итого < -7


Вот и хорошо, арифметику усвоил.


 
Anatoly Podgoretsky ©   (2006-04-18 10:19) [191]

Игорь Шевченко ©   (18.04.06 10:14) [190]
Или вопрос настолько заумный, что я его не понимаю.

Религиозный.


 
Внук ©   (2006-04-18 10:24) [192]

>>Игорь Шевченко ©   (18.04.06 10:14) [190]
>>А зачем вы пишете такие программы ?
 Вот в этом, скорее всего, и корень спора. Видишь ли, если писать и продавать коробочный продукт, то можно следовать заветам всяких Бекусов и братьев их Науэров. Подходит продукт заказчику - берет, не подходит - ну и ладно. Мы же пишем всегда под конкретного заказчика, поэтому система обречена на развитие, сопровождение, ввод новых версий, подгонку под капризы и т.д. В данном случае естественные ключи даже на очевидных справочниках - куча проблем. Можно спорить, но я больше верю собсвтенному опыту, чем абстрактным рассуждениям.


 
Игорь Шевченко ©   (2006-04-18 10:32) [193]

Внук ©   (18.04.06 10:24) [192]

Да кто бы спорил - заказчики, они такие. Но какое отношение поведение заказчиков имеет к сабжу, я честно не понимаю.


 
Игорь Шевченко ©   (2006-04-18 10:37) [194]

Внук ©   (17.04.06 20:52) [186]


> естественные ключи чреваты - как из-за нестабильности законодательства


Дорогой Саша, на свете, кроме бухгалтерии, существует еще масса не менее увлекательных предметных областей.
"Их тоже следует убивать" (с) Страж-птица.


> Выделять те редкие случаи, когда естественный ключ допустим
> - играть в рулетку - не порекомендовал бы даже профессионалам,
>  не говоря о новичках, с вопроса которого все и началось.
>
>  


Я бы не сказал, что они такие уж редкие. Почему, интересно, авторы книжек по СУБД не рекомендуют, все как один, использовать исключительно синтетические ключи ? Они в другом мире живут ?


 
Внук ©   (2006-04-18 10:38) [195]

>>Игорь Шевченко ©   (18.04.06 10:32) [193]
 А я не понимаю, какое отношении имеет частный случай, когда ЕК не несет проблем, к преимуществам и недостаткам обсуждаемых методик.


 
Игорь Шевченко ©   (2006-04-18 10:54) [196]

Внук ©   (18.04.06 10:38) [195]

А я еще раз могу повторить про овощи. Про преимущества и недостатки уже 195 постов обсуждаем. У естественных ключей преимущество в первую очередь в простоте программирования, а как ты сам понимаешь, чем проще программировать, тем меньше ошибок и тем легче сопровождать систему.


 
Sergey13 ©   (2006-04-18 11:00) [197]

2[196] Игорь Шевченко ©   (18.04.06 10:54)
> У естественных ключей преимущество в первую очередь в простоте программирования
А чем проще то? Или в чем сложность СК?


 
Игорь Шевченко ©   (2006-04-18 11:05) [198]

Sergey13 ©   (18.04.06 11:00) [197]


> А чем проще то?


Запросы проще писать, полей меньше.


 
vuk ©   (2006-04-18 11:07) [199]

to Игорь Шевченко ©   (18.04.06 10:54) [196]:
>У естественных ключей преимущество в первую очередь в простоте
>программирования
Если естественный ключ составной, то программирование не упрощается, а только усложняется.


 
Lamer@fools.ua ©   (2006-04-18 11:07) [200]

>У естественных ключей преимущество в первую очередь в простоте программирования, а как ты сам понимаешь, чем проще программировать, тем меньше ошибок и тем легче сопровождать систему.

IMHO, очень спорное утверждение. Почему, когда я пишу JOIN в запросе, я должен вспоминать, по какому полю (или, упаси Аллах, полям) мне нужно соединять таблицы в ON?



Страницы: 1 2 3 4 5 6 7 8 9 
10 11 вся ветка

Форум: "Прочее";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.84 MB
Время: 0.056 c
3-1143974013
Alex Romanskiy
2006-04-02 14:33
2006.05.21
Out парметры в ХП MySQL


3-1143795254
гога
2006-03-31 12:54
2006.05.21
Сортировка в TDBGridEh


3-1143785981
yk
2006-03-31 10:19
2006.05.21
Сортировка в ADODataSet


15-1146050329
Rouse_
2006-04-26 15:18
2006.05.21
Хех, всем Модерам бояться :)


2-1146430700
Colonel
2006-05-01 00:58
2006.05.21
Работа с MSSQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский