Я создал 2 отдельные таблицы для администраторов и пользователей в моей базе данных. Я хочу сохранить данные входа пользователя и администратора (ip-адрес, user_agent, время соединения и т. Д.) В одну таблицу. Является единственным решением для создания двух полей для идентификаторов администратора и других идентификаторов пользователей в этой таблице (например, ниже)?Как сохранить данные регистрации разных пользователей в одной таблице
CREATE TABLE login_detail (
id int NOT NULL AUTO_INCREMENT,
admin_id int,
user_id int,
ip_address ...
...
PRIMARY KEY (id),
FOREIGN KEY (admin_id) REFERENCES admin(id) ON DELETE RESTRICT ON UPDATE RESTRICT,
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE RESTRICT ON UPDATE RESTRICT
)
Если администратор входит в систему, его идентификатор будет храниться в admin_id
и user_id
будет пустым. Если пользователь входит в систему, его идентификатор будет сохранен в user_id
, а admin_id
будет пустым. Что вы предлагаете (вообще)?
Почему бы не указать один столбец для идентификатора пользователя/администратора, а затем поле бит, указывающее, были ли пользователи администратором или пользователем? – ermagana
Мне нужен внешний ключ, чтобы сохранить действительные идентификаторы, или я думаю, что полезно использовать FK в этой ситуации. Поскольку в поле может быть только один FK, мне нужно отдельное поле для каждого FK. – Mehmed
Аа, ты имеешь в виду таблицу пользователя и администратора ... Я отделяю их, чтобы не было путаницы. Кто-то, кто хочет добавить код, может забыть, что проверка уровня и пользователь могут выполнять операции администратора. – Mehmed