Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

ID field

09.11.17 13:27
Re: ID field
 
MrSanders старожил
в ответ moose 09.11.17 12:38
воспользуюсь моим примером. допустим, машины имеют уникальный номерной знак, который мы можем определить ключом в таблице машин.

Предположим мы хотим связать водителя с одной машиной. К одной машине могут быть приписано несколько водителей, водитель всегда только к одной машине. Как мы такое в БД представим? В таблице ВОДИТЕЛЬ будет колонка МАШИНА_ID в которой стоит уникальный ID машины. МАШИНА_ID определена в БД как foreign key ссылающийся на MAШИНА.ID с правилом каскадирования "если на ID есть ссылка, запретить удаление записи из МАШИНА" (DELETE RESTRICT). Позволяет нам на уровне БД добиться целостности данных - не полусится удалить машину оставив водителя, который на ней работать должен.

Представим себе что нам надо поменять номерной знак машины. Перерегистрировали мы ее. Что делать будем?

1. ID машины = номерной знак. Просто UPDATE в том же DB2 не пройдет - иззя менять ключи, на которые ссылается запись. Меняем все записи в ВОДИТЕЛЬ, которые на нее ссылаются, меняем номер, опять меняем все записи теперь с новым номером.
2. ID машины - технический. int. Просто UPDATE с новым номером. Всё.

 

Перейти на