Вопрос про первичный ключ SQL.

программирование базы данных sql

Я сделала одну лабораторку по sql и не поняла почему первичный ключ делают по id. Я, когда наполняла таблицу, где этот первичный ключ ссылался на внешний, то мне было вообще неудобно. - Я сначала засовывала морду в первую таблицу и смотрела там допустимые значения, а потом уже шла в ту таблицу, где надо наполнять и вбивала во внешний ключ значение первичного ключа из первой таблицы. - У меня вопрос - а можно ли как-то эту процедуру упростить? Просто цифры запоминаются ваще плохо. Но и первичный ключ по имени тоже, конечно, не сделаешь - повторы неминуемы. Как-нибудь можно это решить? И можно ли сделать так, чтобы id сам генерировался?

Примечание:
Oracle. В лабораторке было сказано - дескать, заходите в SQL Plus. Но я все перерыла, а этого SQL Plus'a не было. Я пользовалась web-интерефейсом (он убогий).
Ответы:
1) А зачем смотреть сначала в одну таблицу, а потом в другую, когда можно запросом:
Insert into Table2 (ID2, ID3)
Select 123, ID1 from table1
where Name='qwerty'
2) " Но и первичный ключ по имени тоже, конечно, не сделаешь - повторы неминуемы. "
Это означает, что ты не понимаешь ничего в архитектуре БД и эта БД работать не будет.
ID - это суррогатный ключ, который используется как псевдоним для естественного ключа, для уменьшения избыточности и упрощения связей между таблицами. Ты же ВЫКИНУЛА ЕСТЕСТВЕННЫЙ КЛЮЧ и сделала главным суррогатный.
На самом деле необходимо сначала спроектировать БД с ЕСТЕСТВЕННЫМИ КЛЮЧАМИ, а потом к каждому естественному ключу добавить суррогатный (ID) и на них строить связи. При этом естественные ключи остаются и контролируют уникальность данных
3) Никто никогда ID не заполняет вручную. Для этого существуют триггеры и последовательности. Примерно так:
CREATE SEQUENCE sSections;
ALTER SEQUENCE sSections RESTART WITH 0;


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.