Форум сайта python.su
Приветствую всех.
В различных СУБД есть возможность обеспечить вставку уникальных значений в определённые столбцы таблиц. СУБД своими средствами проверит и обеспечит что ни одно значение в столбце таблицы не повторится дважды. Это банально и широко известно. А вот, что, если надо обеспечить уникальность данных, но не во всей таблице, а только в пределах определённой части или “секции” таблицы? К примеру, у нас в таблице собраны номера домов. Пока у нас в таблице дома с одной улицы - их номера уникальны. А если у нас больше одной улицы - номера домов на разных улицах могут повторятся. Итак, вопрос…
Кто нибудь знает, если существует способ средствами СУБД “разбить” таблицу на “секции” (по улицам, как в приведённом примере) и обеспечить уникальность данных в пределах секции? Может быть, с помощью составного ключа? Такое возможно в SQLight или какой-то другой СУБД? Или, в такой ситуации, для контроля за “секционной” уникальностью данных нет вариантов что-то использовать кроме прикладной программы, которая обеспечивает пользователю доступ в БД?
Отредактировано Alex.Pro. (Дек. 15, 2024 21:22:40)
Офлайн
> Может быть с помощью составного ключа?
Совершенно верно. Создаёшь составной уникальный индекс и всё будет правильно работать.
Офлайн
RodegastСпасибо, что укрепили мои надежды. С ходу нагуглить инструкции не смог. Буду продолжать копать и экспериментировать в этом направлении.
Создаёшь составной уникальный индекс и всё будет правильно работать.
Отредактировано Alex.Pro. (Дек. 15, 2024 21:22:17)
Офлайн
CREATE UNIQUE INDEX имя_индекса ON таблица ("Дом", "Улица");
Отредактировано Rodegast (Дек. 15, 2024 22:30:30)
Офлайн
RodegastНеожиданная формула, неожиданный подход. У меня в голове сложился стереотип: в качестве индекса надо использовать отдельный столбец, в котором тупо нумеруются записи. А у Вас… Слом моих стереотипов. А в самом деле, если у нас есть уникальные данные, почему бы в качестве индекса не использовать эти данные?
CREATE UNIQUE INDEX имя_индекса ON таблица (Дом, Улица);
Ещё есть частичные индексы.Тоже интересный вариант. Но в моём случае не подходит.
Отредактировано Alex.Pro. (Дек. 15, 2024 22:50:19)
Офлайн
Alex.Pro.А что тебе мешает сделать составной первичный ключ?
Может быть, с помощью составного ключа?
Alex.Pro.Да СУБД все разные в плане возможностей. Не меняется только одно - теория баз данных, которая для всех СУБД одинакова. Вот именно ей и надо следовать.
Такое возможно в SQLight или какой-то другой СУБД?
Отредактировано py.user.next (Дек. 16, 2024 17:24:16)
Офлайн
py.user.nextБольше всего мне мешает недостаток знаний и опыта.
что мешает просто сделать составной первичный ключ?
Офлайн
Alex.Pro.Этого у тебя хватает. Если думаешь, что базы данных простая тема, то немножко заблуждаешься. Да, они не требуют ничего умного там прямо, высокой математики, но там много нюансов и много всяких приёмов и правил, выработанных со временем. Если ты этого всего не знаешь, то это твои грабли. Ты просто будешь попадать в ловушки.
недостаток знаний
Офлайн
py.user.nextНу да, согласен. Недостатков у меня хватает с избытком.
Этого у тебя хватает.
Офлайн
Alex.Pro.Реляционная база данных - это база данных, состоящая из отношений. Relation - отношение. Отношение - это множество кортежей. Так как множество - не упорядоченная структура, то в нём нет первого кортежа или последнего кортежа. Все кортежи в нём и первые, и последние одновременно.
Да, я думаю что БД - это просто.
Отредактировано py.user.next (Дек. 18, 2024 20:30:47)
Офлайн