|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.05.2012, 23:10 | #1 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,206
|
О первичных и внешных ключах
Добрый вечер! СУБД - Firebird. Прошу пояснить мне принцип работы первичных и внешних ключей. Мне немного непонятен сам принцип использования внешних ключей. Правильно ли я понимаю их: есть главная таблица и подчиненная. Подчиненная связана с полем ID в главной таблице через некое поле ID_FK. Обе таблицы изначально пусты и не содержат записей. Каскадное удаление и обновление выставлено на поле ID_FK. Нужно ли при вставке записей в главную таблицу в поле ID_FK заносить ID из главной таблицы? Или это реализуется на каком-то другом уровне, который я немного не понимаю? Или достаточно заполнять записями только главную таблицу? Прошу разъяснить эти вопросы мне. Буду премного благодарен.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
26.05.2012, 08:19 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
26.05.2012, 09:23 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Загадочная фраза При вставке в дочернюю таблицу нужно самому позаботиться о значении поля ID_FK. При вставке в главную это поле в дочерней таблице не при делах, просто нет в этот момент дочерних записей. Если в ттриггере на вставку в главную создается запись и в дочерней (почему бы и нет), то триггер должен обеспечить передачу значения ключа главной таблицы в дочернюю
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 26.05.2012 в 09:28. |
26.05.2012, 18:04 | #4 | |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,206
|
Цитата:
ID Firts_Name 1 Иван 2 Петр 3 Сидор то надо ли значения из колонки ID таблицы выше, заносить в колонку ID_FK в дочернюю таблицу, чтобы потом дочерняя таблица выглядела так: ID ID_FK Last_Name 1 1 Иванов 2 2 Петров 3 3 Сидоров То будет ли тогда при удалении записи из главной таблицы, удалена запись из дочерней таблицы, где ID_FK дочерней таблицы=ID главной таблице? или достаточно просто оставить дочернюю таблицу такой: ID ID_FK Last_Name 1 null Иванов 2 null Петров 3 null Сидоров
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
|
26.05.2012, 18:14 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Посмотрите для Firebird http://firebirdsql.su/doku.php?id=constraint
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание первичных индексов в db файле paradox7 | Nikolay88_x | C/C++ Базы данных | 2 | 10.01.2012 20:59 |