powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / связка PK + UK
25 сообщений из 140, страница 1 из 6
связка PK + UK
    #38222696
Павел Евгеньевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здравствуй, уважаемое сообщество. Проектирую первую свою базу данных, читаю много разных книжек вдоль и поперек, но они не дают ответы на практические вопросы, а может я их не вижу). В каждой таблице я использую суррогатный PK и уникальный UK, например PK - это ID записи в таблице, этот столбец участвует в в ссылочной целостности, а UK - это уникальный номер документа (в ссылочной целостности не участвует). И так в каждой таблице, ну пока что кроме развязок M:M. Правильно ли я поступаю, применяя везде связку PK+UK, или у меня паранойя?
...
Рейтинг: 0 / 0
связка PK + UK
    #38222706
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Евгеньевич,

PK вам в руки для связей, Unique (Index | Constraint) - для поддержания уникальности
...
Рейтинг: 0 / 0
связка PK + UK
    #38222707
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЕвгеньевичUK - это уникальный номер документаКак уже много раз показывалось, естественные ключи только кажутся уникальными. Рано или поздно придется отказаться от этого UK.
...
Рейтинг: 0 / 0
связка PK + UK
    #38222713
Павел Евгеньевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spПавел Евгеньевич,

PK вам в руки для связей, Unique (Index | Constraint) - для поддержания уникальности
Спасибо, а что лучше Unique index или unique constraint? (при каких условиях)
...
Рейтинг: 0 / 0
связка PK + UK
    #38222714
Павел Евгеньевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftКак уже много раз показывалось, естественные ключи только кажутся уникальными. Рано или поздно придется отказаться от этого UK. Да, это я понимаю. Тогда стоит ли вводить в таблицу развязок суррогатный PK?
...
Рейтинг: 0 / 0
связка PK + UK
    #38222763
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЕвгеньевичmiksoftКак уже много раз показывалось, естественные ключи только кажутся уникальными. Рано или поздно придется отказаться от этого UK. Да, это я понимаю. Тогда стоит ли вводить в таблицу развязок суррогатный PK?В таблицах-связях я обычно делаю PK на оба поля сразу. Насколько это применимо к вашим таблицам - зависит от предметной области, иногда бывает нужно хранить несколько одинаковых связей.
...
Рейтинг: 0 / 0
связка PK + UK
    #38222766
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Евгеньевич Спасибо, а что лучше Unique index или unique constraint? (при каких условиях)Почти без разницы. Разница только концептуальная: unique constraint это логическое ограничение на таблицу, реализуемое физическим Unique index. Когда в будущем будут другие средства реализации логического ограничения unique constraint, разница появится.
Павел Евгеньевич Тогда стоит ли вводить в таблицу развязок суррогатный PK? Не обязательно, можно обойтись составным РК. Но если на нее будут ссылки, тогда одностолбцовый РК эффективнее.
...
Рейтинг: 0 / 0
связка PK + UK
    #38222903
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftКак уже много раз показывалось, естественные ключи только кажутся уникальными.
Ключ не может быть не уникальным по своему определению. Не важно какой. Если не уникальный - значит вообще не ключ. Потому показать ключ можно было что кто-то что-то не так проанализировал в предметной области, но никак не то что "естественные ключи только кажутся уникальными". Такая теорема, вроде, до сих пор не известна.
...
Рейтинг: 0 / 0
связка PK + UK
    #38222971
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoКлюч не может быть не уникальным по своему определению.Процитируйте, пожалуйста, это определение или дайте на него ссылку.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223050
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Евгеньевич. В каждой таблице я использую суррогатный PK и уникальный UK, например PK - это ID записи в таблице, этот столбец участвует в в ссылочной целостности, а UK - это уникальный номер документа (в ссылочной целостности не участвует). И так в каждой таблице, ну пока что кроме развязок M:M. Правильно ли я поступаю, применяя везде связку PK+UK,


Очень правильно. Мог бы расписать, почему, но пишу с мобильного, писать тяжко.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223057
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЕвгеньевичspПавел Евгеньевич,

PK вам в руки для связей, Unique (Index | Constraint) - для поддержания уникальности
Спасибо, а что лучше Unique index или unique constraint? (при каких условиях)

Одно и то же, всё равно.
Разные только цели, так что уж если ты хочешь обеспечить уникальность, делай constraint.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223066
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftvadiminfoКлюч не может быть не уникальным по своему определению.Процитируйте, пожалуйста, это определение или дайте на него ссылку.

Я бы тоже так думал, но только масса людей использует термин "ключь" как синоним термина "индекс".
...
Рейтинг: 0 / 0
связка PK + UK
    #38223132
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftПавел ЕвгеньевичUK - это уникальный номер документаКак уже много раз показывалось, естественные ключи только кажутся уникальными. Рано или поздно придется отказаться от этого UK.

Но тут видимо как раз всё правильно, потому что видимо это внутренний номер документа, генерируемый в этом приложении/БД.
В констрейнт на внешний номер документа нужно включать как минимум ещё и источник документа.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223138
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЕвгеньевичmiksoftКак уже много раз показывалось, естественные ключи только кажутся уникальными. Рано или поздно придется отказаться от этого UK. Да, это я понимаю. Тогда стоит ли вводить в таблицу развязок суррогатный PK?

Это стоит делать только если
связь является самостоятельнос сущностью

на связь будут ссылки из других таблиц.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223147
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНо тут видимо как раз всё правильно, потому что видимо это внутренний номер документа, генерируемый в этом приложении/БД.Опять же до поры-до времени. Если удаление документа производится/будет производиться изменением его статуса, то требование уникальности будет относится только к "живым" документам. А это уже простым UK не делается.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223385
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftvadiminfoКлюч не может быть не уникальным по своему определению.Процитируйте, пожалуйста, это определение или дайте на него ссылку.
ключ — в реляционной модели данных — подмножество атрибутов отношения, удовлетворяющее требованиям уникальности и минимальности (несократимости).

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

Ну вообще у Мейера в теории реляционных БД можете посмотреть про ключи. Имеет значение что все атрибут находятся в ФЗ от ключа благодаря исключительно из-за уникальности. Потэтому его объявление и позволяет навязывать ФЗ. Поэтому он и имеет значение.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223511
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

Хорошо, для более полного соответствия теории перефразирую так:

Как уже много раз показывалось, естественные ключи только кажутся ключами. Рано или поздно придется отказаться от этого ключа.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223524
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кроме сферической рм в вакууме бывают отношения например:

договор с юрлицом и датой -> контакт юрлица, с периодом, включающим дату договора
...
Рейтинг: 0 / 0
связка PK + UK
    #38223526
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivмасса людей использует термин "ключь" как синоним термина "индекс".В синтаксисе MySQL это даже документированная фича.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223530
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftvadiminfo,

Хорошо, для более полного соответствия теории перефразирую так:

Как уже много раз показывалось, естественные ключи только кажутся ключами. Рано или поздно придется отказаться от этого ключа.
Существующий UC позволяет легко обнаружить тот самый момент когда придется менять архитектуру. И это хорошо.
Гораздо хуже когда никаких констрейнтов нету, а пользователи и програмисты живут в уверенности что там все уникально.
И вот в тот прекрасный момент когда вдруг обнаруживается что это не так - последствия бывают гораздо хуже чем если бы мы просто своевременно узнали о проблеме.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223570
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftvadiminfo,

Хорошо, для более полного соответствия теории перефразирую так:

Как уже много раз показывалось, естественные ключи только кажутся ключами. Рано или поздно придется отказаться от этого ключа.
Лучше. Но чтобы более полно соотвествовать терории еще нужно, скорее всего, уточнить кому собственно что-то там казалось. Не всеже столь беспечны, чтобы полагаться довольствоваться только кажущимся.
Возможно, и не все рано или поздно отказываются. А тут звучит как некоторое всеобщее утверждение. Типа закона некоего.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223603
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoВозможно, и не все рано или поздно отказываются.Не отказываются сейчас - отказываются позже. Просто это "позже" может наступить не скоро :)
Это, конечно, не закон. Это просто другая формулировка фразы "жизнь богаче, чем нам кажется" или "жизнь богаче воображения".

Масса обсуждений было на тему "естественные первичные ключи против искусственных". Насколько я помню, гарантированно уникального естественного ключа так и не нашлось. Т.е. его нарушение - это только вопрос времени.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223636
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э-э-э насчет естественного и суррогатного ключа.
Есть такое понятие табельный номер.
В рамках предприятия (Отдел Кадров) он уникальный.
А вот в по истории один и тот же табельный номер может быть у разных людей и наоборот у одного и того же человека в разные периоды времени могут быть разные табельные номера.

Вот тут и помогает суррогатный ключ. :-)
...
Рейтинг: 0 / 0
связка PK + UK
    #38223706
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftПросто это "позже" может наступить не скоро :).
А "не скоро" может стремиться к бесконечности или снятию системы с эксплуатации.
А может оказаться, что в дальнейшем ("позже") в пользу выбора естественных первичных ключей будет больше оснований: внедряется все больше и больше идентификатров для электронных сущностей, комп технологии могут изменяться, что может снизить.
Так что что там позже настпит еще не известно.
...
Рейтинг: 0 / 0
связка PK + UK
    #38223725
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftMasterZivмасса людей использует термин "ключь" как синоним термина "индекс".В синтаксисе MySQL это даже документированная фича.

Я на неё в частности и намекал.
...
Рейтинг: 0 / 0
25 сообщений из 140, страница 1 из 6
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / связка PK + UK
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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