powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Идея метки составного PK в представлении структуры таблицы.
28 сообщений из 28, показаны все 2 страниц
Идея метки составного PK в представлении структуры таблицы.
    #38891825
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
 Наименование         Key 
Поле1                PK
Поле2
Поле3                FK
Поле4                FK

Вот так в спецификации представления таблицы обозначаются внешние и первичные ключи, но вот есть составоной первичный ключ. Как его обозначить? Два раза проставлять PK - странно, будет поле с несколькими PK (
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38891839
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
George-IIIДва раза проставлять PK - странно, будет поле с несколькими PK ничего странного
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38891942
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если ещё учесть, что для строкового поля в индекс может быть включено не всё поле, а префикс установленной длины...
Не забивай себе голову ОТОБРАЖЕНИЕМ на экране того, что происходит на самом деле. SHOW CREATE TABLE гораздо информативнее - хотя бы потому, что не оставляет пространства для разночтений.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38893601
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George-III, куда интереснее, как Вы собираетесь обозначать составной FK в таблице, где есть другие FK.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38893654
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George-III
Код: plaintext
1.
2.
3.
4.
 Наименование         Key 
Поле1                PK
Поле2
Поле3                FK
Поле4                FK

Вот так в спецификации представления таблицы обозначаются внешние и первичные ключи, но вот есть составоной первичный ключ. Как его обозначить? Два раза проставлять PK - странно, будет поле с несколькими PK (

Поставь два раза PK.
Поскольку PK несколько не бывает в принципе ( либо один, либо 0), то все поймут, что это не второй PK, а второе, третье и т.д.
поле первого PK.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38894701
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivвсе поймут, что это не второй PK, а второе, третье и т.д.
поле первого PK.
Им останется сущая мелочь: угадать правильный порядок полей в ключе.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38895513
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Dimitry SibiryakovMasterZivвсе поймут, что это не второй PK, а второе, третье и т.д.
поле первого PK.
Им останется сущая мелочь: угадать правильный порядок полей в ключе. зачем?
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38895574
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNoseзачем?Дабы оценить (бес)полезность ключа для конкретного запроса.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903233
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaeNoseзачем?Дабы оценить (бес)полезность ключа для конкретного запроса.Это ничего, что ключи к запросам не имеют вообще никакого отношения?
Ключ имеет отношение сугубо к структуре данных, а именно - для идентификации записи в таблице. Собственно, и все.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903306
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
sphinx_mvЭто ничего, что ключи к запросам не имеют вообще никакого отношения?
... where (t1.f1, t1.f2) = (t2.f1, t2.f2) ...


Для праймари кей так нагляднее. Хотя без разницы, конечно, в каком порядке перечислять.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903321
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvЭто ничего, что ключи к запросам не имеют вообще никакого отношения?
Ключ имеет отношение сугубо к структуре данных, а именно - для идентификации записи в таблице. Собственно, и все.
Ух ты, а мужики-то не знают! и мучаются, подбирают комбинации индексов такие, чтобы при минимальном их количестве/объёме получить максимальное ускорение работы запросов... да, любой запрос работает и без ключей, но порою настолько медленно и печально, что наличие индекса является просто жизненной необходимостью.

Ключ, когда он первичный - это индекс, обладающий парой дополнительных особенностей. Он гарантированно UNIQUE, и емнип гарантированно NOT NULL. На некоторых СУБД/engine он ещё и обязательно кластерный, но вот это уже не абсолют. На некоторых СУБД подсистема контроля целостности требует, чтобы индекс на стороне "один" внешней связи был первичным - но тоже не абсолют.
А когда НЕ первичный, то понятия "ключ" и "индекс" - синонимы.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903370
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinasphinx_mvЭто ничего, что ключи к запросам не имеют вообще никакого отношения?
Ключ имеет отношение сугубо к структуре данных, а именно - для идентификации записи в таблице. Собственно, и все.
Ух ты, а мужики-то не знают! и мучаются, подбирают комбинации индексов такие, чтобы при минимальном их количестве/объёме получить максимальное ускорение работы запросов... да, любой запрос работает и без ключей, но порою настолько медленно и печально, что наличие индекса является просто жизненной необходимостью.

Ключ, когда он первичный - это индекс, обладающий парой дополнительных особенностей. Он гарантированно UNIQUE, и емнип гарантированно NOT NULL. На некоторых СУБД/engine он ещё и обязательно кластерный, но вот это уже не абсолют. На некоторых СУБД подсистема контроля целостности требует, чтобы индекс на стороне "один" внешней связи был первичным - но тоже не абсолют.
А когда НЕ первичный, то понятия "ключ" и "индекс" - синонимы.
Не надо в кучу мешать теорию и реализацию. Ключи это элемент теории реляционной БД. Индексов вообще нет в теории - это способ реализации этой теории. Если теория требует что значения ключа должны быть уникальны, то как это технически реализовать без использования уникального индекса? Наверно можно, но будет жутко тормозить.
Весь гимор с комбинированием индексов только потому что ничего лучше не придумали для реализации теории.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903378
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Dima TЕсли теория требует что значения ключа должны быть уникальны, то как это технически реализовать без использования уникального индекса? селект каунт.
если ноль - то делать вставку, иначе ошибка.

можно в триггере.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903412
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNoseDima TЕсли теория требует что значения ключа должны быть уникальны, то как это технически реализовать без использования уникального индекса? селект каунт.
если ноль - то делать вставку, иначе ошибка.

можно в триггере.
Можно и так. Это эмуляция уникального индекса неуникальным. Можно совсем без индекса, только тормозить будет. Я к тому что уникальный индекс - самый быстрый и удобный способ реализации.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903539
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMasterZivвсе поймут, что это не второй PK, а второе, третье и т.д.
поле первого PK.
Им останется сущая мелочь: угадать правильный порядок полей в ключе.

для шапочного знакомства с таблицей это не нужно.

впрочем, можно писать PK(1), PK(2) и так далее.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903641
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Dima T]AkinaЕсли теория требует что значения ключа должны быть уникальны, то как это технически реализовать без использования уникального индекса? Наверно можно, но будет жутко тормозить.
Так же, как это реализовано на практике. Вернее, почти так же. NewKey = 1 + MAX(Keys).
А если при этом будет тормозить, то не потому, что алгоритм такой, а потому, что максимум будет искаться либо сканированием данных, либо, при наличии индекса, по нему, в то время как для первичного ключа новое значение будет браться из служебной статистики для данной таблицы (именно поэтому при генерации первичный ключ-автоинкремент запросто продуцирует "дыры" в последовательности значений). То есть замедление - организационное, а не алгоритмическое.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903695
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
AkinaeNoseзачем?Дабы оценить (бес)полезность ключа для конкретного запроса. если ограничения накладываются на все поля составного ключа - то ключ полезен.
иначе нет.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903703
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
AkinaТак же, как это реализовано на практике. Вернее, почти так же. NewKey = 1 + MAX(Keys).
А если при этом будет тормозить, то не потому, что алгоритм такой, а потому, что максимум будет искаться либо сканированием данных, либо, при наличии индекса, по нему у вас по ораклу аж 8 постов!
задумайтесь почему секвенсы не зависят от транзакций.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903754
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaпри этом будет тормозить, то не потому, что алгоритм такой, а потому, что максимум будет искаться либо сканированием данных
Я это и имел ввиду что без индекса будут тормоза из-за скана.

Akinaв то время как для первичного ключа новое значение будет браться из служебной статистики для данной таблицы (именно поэтому при генерации первичный ключ-автоинкремент запросто продуцирует "дыры" в последовательности значений). То есть замедление - организационное, а не алгоритмическое.
Тут без проверки уникальности все равно никуда: значение счетчика принудительно можно сдвинуть, и пойдет он те же значения выдавать. Или просто разрядность маленькая, круг пройдет и снова с 1 начнет.
На автоинкременте жизнь не заканчивается. Есть ГУИДы. Ключ не обязательно должен быть абстрактным, например серия-номер паспорта.

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

О чем вообще спорим? Я просто указал на кашу из понятий. Просто не надо делать утверждений что теплое всегда мягкое.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903797
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot eNoseесли ограничения накладываются на все поля составного ключа - то ключ полезен.
иначе нет.[/quot]Здрасьте, приехали... а если только на префикс? а если индекс - покрывающий?

Dima TТут без проверки уникальности все равно никуда: значение счетчика принудительно можно сдвинуть, и пойдет он те же значения выдавать. Или просто разрядность маленькая, круг пройдет и снова с 1 начнет.Одни серверы проверяют и при необходимости перегенерят. Наверное. Другие обнаружат дублирование и со спокойной совестью выдадут ошибку - а вот это не раз видел.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903800
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКлюч не обязательно должен быть абстрактным, например серия-номер паспорта.В этом случае натуральный ключ МОЖЕТ быть первичным. Но делать его первичным более чем неразумно - особенно если он потребуется использовать его для связи таблиц. Синтетический предпочтительнее в подавляющем большинстве случаев.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903851
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaDima TКлюч не обязательно должен быть абстрактным, например серия-номер паспорта.В этом случае натуральный ключ МОЖЕТ быть первичным. Но делать его первичным более чем неразумно - особенно если он потребуется использовать его для связи таблиц. Синтетический предпочтительнее в подавляющем большинстве случаев.
Не спорю. С натуральными на практике много казусов бывает. Я просто для примера написал.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903893
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
AkinaeNoseесли ограничения накладываются на все поля составного ключа - то ключ полезен.
иначе нет.Здрасьте, приехали... а если только на префикс? а если индекс - покрывающий? а если только на префикс - то зачем тогда такой уникальный составной пк?
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903895
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
AkinaСинтетический предпочтительнее в подавляющем большинстве случаев. +1

и с ним удобнее
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38903910
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot eNose]Akinaесли только на префикс - то зачем тогда такой уникальный составной пк?Ну так на каждый запрос индексов не нагенеришь... если префикс уникального составного ключа является оптимальным индексом для конкретного запроса - почему не использовать его? да, чуть медленнее выборка - зато выигрыш в пространстве и скорости работы вставок/удалений. Совсем неплохо, когда префикс оптимален для отбора/связывания/сортировки, а весь индекс - покрывающий, так и в данные лезть не нужно.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38905015
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinasphinx_mvЭто ничего, что ключи к запросам не имеют вообще никакого отношения?
Ключ имеет отношение сугубо к структуре данных, а именно - для идентификации записи в таблице. Собственно, и все.
Ух ты, а мужики-то не знают!
Мужики прекрасно знают, что ключ != индекс. Каждая СУБД по своему интерпретирует это дело. MS SQL на ключ создает индекс автоматом. У Oracle, кажется, есть всяческие заморочки. Не пробовал сам, но вроде бы можно ключ оставить, а индекс грохнуть.
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38905067
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждая СУБД по своему интерпретирует это дело. MS SQL на ключ создает индекс автоматом. У Oracle, кажется, есть всяческие заморочки.




нет заморочек.



Не пробовал сам, но вроде бы можно ключ оставить, а индекс грохнуть.



можно, но потом его надо обратно создвать .
...
Рейтинг: 0 / 0
Идея метки составного PK в представлении структуры таблицы.
    #38905081
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКаждая СУБД по своему интерпретирует это дело. MS SQL на ключ создает индекс автоматом. У Oracle, кажется, есть всяческие заморочки.




нет заморочек.



Не пробовал сам, но вроде бы можно ключ оставить, а индекс грохнуть.



можно, но потом его надо обратно создвать .

по моему это и есть заморочки :-)
А еще вполне можно создавать индексы, но не иметь ключей на таблице
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Идея метки составного PK в представлении структуры таблицы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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