После просмотра часового видеоурока кипит бошка. разбиралась связь многие ко многим. создаются 3 таблицы. бла бла бла. стандартно. но вопрос дибильный, башка не моет понять: зачем идет присваивание ключей?? почему эти инты с автоинкрементом нельзя оставить обыными интами? чтобы они не могли изменяться? есть внешний ключ и главный там.. в чем их различие? вот просто не могу усвоить.
Голова не варит. не судите строго.
SQL
Вопрос по внешнему ключу.
Потому что он должен ссылаться на существующую запись в другой таблице. Если такой записи нет, то и ключа быть не может.
Александр Львов
Там прикол в том был, что я ввожу в промежуточную таблицу через INSERT 2 значения :/ и чет как-то мне пох на ключи..
найди искомую квартиру, не зная её номера? Или зная, но таких номеров в этом доме десяток в произвольных местах? ))
Если в БД используется связь "многие ко многим" - казните разработчика на месте.
Александр Львов
почему?))
Нужно почитать книжку по базам данных, про нормальные формы и индексы. Это не много и легко.
Первичный (или главный) ключ - это поле (или набор полей), однозначно определяющее запись таблицы. Если среди таблицы учеников будет 3 с именем Саша, то как потом определять кому в журнал пятерку ставить?) Значения по первичному ключу в рамках таблицы не должны повторяться по определению.
Автоинкрементные поля - это просто удобные числовые поля под идентификатор записи (для первичного ключа), чтобы разработчику не приходилось самому генерировать ключи. Обычными интами тоже можно и не только интами, но это вопрос целесообразности и удобства.
Внешний ключ - это по сути ссылка на справочник. Например есть работник, есть таблица всех работников и есть отделы, там пот в записи о работнике ставиться код отдела, а поле с кодом отдела имеет внешний ключ на основную таблицу отделов. Это нужно для соблюдения целостности. Иначе, например, пользователь может внести код отдела, которого не существует.
Первичный (или главный) ключ - это поле (или набор полей), однозначно определяющее запись таблицы. Если среди таблицы учеников будет 3 с именем Саша, то как потом определять кому в журнал пятерку ставить?) Значения по первичному ключу в рамках таблицы не должны повторяться по определению.
Автоинкрементные поля - это просто удобные числовые поля под идентификатор записи (для первичного ключа), чтобы разработчику не приходилось самому генерировать ключи. Обычными интами тоже можно и не только интами, но это вопрос целесообразности и удобства.
Внешний ключ - это по сути ссылка на справочник. Например есть работник, есть таблица всех работников и есть отделы, там пот в записи о работнике ставиться код отдела, а поле с кодом отдела имеет внешний ключ на основную таблицу отделов. Это нужно для соблюдения целостности. Иначе, например, пользователь может внести код отдела, которого не существует.
Похожие вопросы
- Обязательно ли делать первичный ключ (id колонку) в таблице mysql, если каждое значение и так будет уникальным?
- Вопросы по проектированию базы данных для небольшого склада.
- Вопрос по SQL - уникальное поле ID для трёх таблиц (нельзя вставить значения в одну, если оно есть в другой таблице).
- Без понятия как задать вопрос одной фразой :)
- Вопрос по БД
- Вопрос тем у кого есть свои сайты с рекламой
- Вопрос к IT-шникам, расскажите про SQL Сколько времени нужно что бы ним овладеть? Для чего он нужен QA-ям ?
- Вопрос по SQL. Помогите понять решение задачи
- Вопросы по СУБД
- Вопрос по SQL + Python