Предположим, у меня есть таблица входа в систему, содержащую id
, username
, password
, type
и linked_id
SQL Рекомендации: использование столбца для хранения двух разных типов данных?
Столбец type
определяет, принадлежит ли этот Войти сотруднику или клиенту.
Если они являются сотрудником, linked_id
- их идентификатор в таблице сотрудника.
Если это клиент, linked_id
- их идентификатор в таблице клиента.
Интуитивно это кажется плохой идеей, но, кроме того, что я имею дело с ограничениями внешнего ключа, я не могу думать или повод не делать этого.
Это также вызывает другой вопрос: важно ли всегда иметь ограничения FK в таких ситуациях?
Мысли?
Я бы использовал несколько столбцов. Если выглядит беспорядочно (поскольку у вас есть пучок нулей), но есть лучшая целостность базы данных, а нулевые значения занимают очень мало места на диске. –
Да, всегда хорошо иметь ограничения FK в этом типе связанных данных. В противном случае легко удалить учетные записи и оставить осиротевших клиентов или сотрудников; или в вашем случае проектирования, удалите записи сотрудника или клиента и оставьте сиротские записи входа. – randyh22