powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как выбрать Первичный ключ в общем случае
25 сообщений из 47, страница 1 из 2
Как выбрать Первичный ключ в общем случае
    #34992467
Собственно юзал бигинт автоинкремент(я как бы не сторонник номер паспорта в качестве ПК юзать, поэтому никогда не выделяю потенциальные ключи.), но увидел как народ генерит Гуид (нетовский) и вставляет в БД (но он ведь длиннее).

Если есть опыт скажите как вы это делаете.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992496
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GUID имеет хорошее преимущество перед int. Потому что int ключ можно случайно использовать в неправильной связи (сослаться не на ту таблицу или не из той таблицы). GUID - использовать ошибочно нереально (оченьмаловероятно).
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992500
RENaissance
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacy
GUID имеет хорошее преимущество перед int. Потому что int ключ можно случайно использовать в неправильной связи (сослаться не на
ту таблицу или не из той таблицы)

Однозначно, в мемориз.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992546
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RENaissance wrote:
> Однозначно, в мемориз.
Шо имеем против?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992554
RENaissance
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
Шо имеем против?

Улыбает фраза "случайное использование ключа в неправильной связи". Складывается ощущение, что люди в бреду разрабатывают.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992655
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дак если не в бреду - зачем все эти CONSTARINT.
Все всегда делайте правильно и никаких INEGRITY не нужно.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992695
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первичный ключно увидел как народ генерит Гуид (нетовский) и вставляет в БД (но он ведь длиннее).
Не удивляйтесь. Я надеюсь дожить до времени, когда в качестве ПК начнут использовать XML :)

lockyШо имеем против?
Ничего. Канабису тоже нужны почитатели.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992708
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RENaissance wrote:
> Улыбает фраза "случайное использование ключа в неправильной связи".
> Складывается ощущение, что люди в бреду разрабатывают.
продемонстрировать наглядный пример?
Написано не в бреду, работает "правильно" - все констрайнты отрабатывают
на ура. В базе - жопа.
?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992726
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> увидел как народ генерит Гуид (нетовский) и вставляет в БД

Всем дебилам объяснять, что они дебилы - жизни не хватит. Не парьтесь, делайте, как делали. Необходимость в абсолютно уникальных суррогатных идентификаторах исчезающе мала.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992733
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
softwarerЯ надеюсь дожить до времени, когда в качестве ПК начнут использовать XML :) с точки зрения удобства и отмены суррогатных ключей: +1

но получится как всегда: с новой версией по будет расти в размере в 2 раза (при той же самой функциональности)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34992734
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
guest_20040621Необходимость в абсолютно уникальных суррогатных идентификаторах исчезающе мала. кто не писал вручную селекты, тот этого не поймёт никогда (каково оно, набирать гуид)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34993599
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первичный ключно увидел как народ генерит Гуид (нетовский) и вставляет в БД (но он ведь длиннее).
Так может это был не ПК а rowguid ? Такая схема, дополнительный столбец rowguid представляется мокрософтами стандартной в случае наличия репликации, тогда этот столбец удобно использовать также и для вставки с клиента.

При отсутствии репликации, использование гуида в качестве ПК (или доп.столбцом для удобства вставки и проч.целей) - предмет непрекращающихся священных войн (разумеется, без победителей)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34994000
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacyGUID имеет хорошее преимущество перед int. Потому что int ключ можно случайно использовать в неправильной связи (сослаться не на ту таблицу или не из той таблицы). GUID - использовать ошибочно нереально (оченьмаловероятно).
Можно и правое ухо левой пяткой чесать, имхо %)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995316
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte apapacyGUID имеет хорошее преимущество перед int. Потому что int ключ можно случайно использовать в неправильной связи (сослаться не на ту таблицу или не из той таблицы). GUID - использовать ошибочно нереально (оченьмаловероятно).
Можно и правое ухо левой пяткой чесать, имхо %)

Расскажите это Оракл. :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SQL> create type t_strange as object
   2   (n number, m number);
   3   /

Тип создан.

SQL> create table strange of t_strange;

Таблица создана.

SQL> insert into strange values(t_strange( 1 ,  2 ));

 1  строка создана.

SQL> commit;

Фиксация обновлений завершена.

SQL> select t.object_id, value(t) s from strange t;

OBJECT_ID
--------------------------------
S(N, M)
---------------------------------------------------
E6F4B13BD9B74270B2F5C943E83646A9
T_STRANGE( 1 ,  2 )


SQL> 

Короче, если СУБД поддерживает GUID ключи, то почему бы ими не пользоваться. Лабать PK на GUID руками, как то не очень весело, проще в целях тестирования каждому PK выделить свой диапазон из множества INT.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995387
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. Все автоинкриментчикам - мой ответ.

Использовал автоинкоемент под MySQL. Сбой чего-то. В поле вручную засылается MAXINT. Далее таблица пытается нарастить автоинкримент и некуда идти...
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995401
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, допустим, использовать GUID вера не позволяет. А кто как строит распределенные системы без глобальных идентификаторов, принцип в двух словах можно?
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995409
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть в комбинации пустой головы и кривых рук виноват автоинкремент, я все правильно понял?
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995414
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть Вы из тех прораммистов, которые признают существовании безошибочных программ и даже их пишет...
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995417
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmну, допустим, использовать GUID вера не позволяет. А кто как строит распределенные системы без глобальных идентификаторов, принцип в двух словах можно?

Не путай нас. Глобальный идентификатор можно построить и детерминированным способом, например в системе из двух узлов, на узле А в качестве идентификаторов генерим только нечётные числа, на узле Б, только чётные числа.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995418
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А кто как строит распределенные системы

Каждая первая проектируемая система - исключительно распределенная с парой миллионов узлов? ;)

> без глобальных идентификаторов

Валера, ничего нового никто не придумал. Альтернатива глобальным идентификаторам - диапазоны в том или ином виде. Тут фишка еще вот в чем: UUID для распределенных систем есть смысл использовать только в полной уверенности, что они для всех узлов имеют одинаковое правило формирования. Скажем, полностью соответствуют RFC 4122. Если такой уверенности нет, тогда присутствуют ограничения в виде требований к хосту, СУБД, фреймворку или еще чему-то, которые сводят на нет все потенциальные преимущества универсальных идентификаторов, не говоря уже про жуткий оверхед.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995427
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacyТо есть Вы из тех прораммистов, которые признают существовании безошибочных программ и даже их пишет...

А никто не говорит, про правильность программ. Если по какой либо причине БД разрушена, то надо уметь восстановить её без последствий, а не говорить, что БД это зло достойное только смерти.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995428
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab iscrafmну, допустим, использовать GUID вера не позволяет. А кто как строит распределенные системы без глобальных идентификаторов, принцип в двух словах можно?

Не путай нас. Глобальный идентификатор можно построить и детерминированным способом, например в системе из двух узлов, на узле А в качестве идентификаторов генерим только нечётные числа, на узле Б, только чётные числа.
не путаю, просто спрашиваю. Вот к примеру возьмем не самый сложный случай, 5 БД, СУБД разные, бизнес-процесс "проходит" через эти БД, взаимодействие в режиме он-лайн и т.п. Я про такие примеры и спрашиваю. Вы mcureenab, например, каким обазом в подобных ситуациях обходитесь детерминированными ключами? Задачка простая, выписанный в одной системе документ, допустим, должен без лишних телодвижений автоматом "влиться" в другую систему, связаться с окружением, как будто он здесь и родился. Это не к запутыванию,повторюсь, просто интересно как и какими силами.
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995431
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> А кто как строит распределенные системы

Каждая первая проектируемая система - исключительно распределенная с парой миллионов узлов? ;)


ХМ. Ну разве, что игрушка "Шарики". Сейчас даже в Word'е есть поддержка распределённых вычислений...
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995433
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621 Тут фишка еще вот в чем: UUID для распределенных систем есть смысл использовать только в полной уверенности, что они для всех узлов имеют одинаковое правило формирования.
это тяжело опровергнуть :)
...
Рейтинг: 0 / 0
Как выбрать Первичный ключ в общем случае
    #34995438
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> это тяжело опровергнуть

Вот и получается, что для гетерогенных систем - либо собственный генератор, либо диапазоны. Гадать, что в очередной раз озарило Билли и каких граблей ждать в каждом конкретном случае... а нафига? Стрессов и без того достаточно.
...
Рейтинг: 0 / 0
25 сообщений из 47, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как выбрать Первичный ключ в общем случае
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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