Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Значения по умолчанию для полей в БД

#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 его не будет

Комментариев нет:

Отправить комментарий