#mysql
Есть поле типа int которое может иметь а может не иметь значение. Какое значение по умолчанию будет правильнее использовать в данной ситуации? NULL нельзя,а если 0 то это может быть primary key в другой таблице.
Ответы
Ответ 1
Раз у вас таблица (T1) хранит некое значение, которое в другой таблице (T2) является primary key, то установка некого специального значения отличного от NULL и не находящегося в T2 это странное решение. Оно конечно имеет право на жизнь, но используется в очень экзотических случаях. В базах данных, при связи двух таблиц, значение NULL как раз используется для отражения факта отсутствия какого либо значения и, следовательно, необходимости такой связи у записи. В реляционных базах данных рекомендуется делать внешние ключи (foreign key) для отражения связи двух таблиц. Наличие такого foreign призвано для обеспечения ссылочной целостности БД. Он не позволяет существовать в подчиненной таблице значениям, не существующим в основной таблице. При этом внешний ключ позволяет существовать NULL значению - как раз для отражения факта отсутствия связи. Рекомендуемая структура таблиц (Отделы и сотрудники): create table DEPT ( DEPT_ID INT not null auto_increment, DEPT_NAME VARCHAR(100), primary key (DEPT_ID) ) engine = InnoDB; create table PERSON ( PERSON_ID INT not null auto_increment, NAME VARCHAR(100) not null, DEPT_ID INT, primary key (ID), FOREIGN KEY (DEPT_ID) REFERENCES DEPT(DEPT_ID) ) engine = InnoDB; При отсутствии у сотрудника отдела к которому он относится DEPT_ID должен быть NULLОтвет 2
Используйте -1 так как в auto_increment его не будет
Комментариев нет:
Отправить комментарий