Я создаю блог CMS с MVC и хочу, чтобы пользователи оставляли комментарии к сообщениям.
Существует два типа пользователей: пользователи с учетными записями и гостевые пользователи, которые не зарегистрированы.
Я выкладываю таблицу комментариев, которая выглядит следующим образом:
CREATE TABLE IF NOT EXISTS `mydb`.`comment` (
`id` INT NOT NULL AUTO_INCREMENT ,
`post_id` INT NOT NULL ,
`user_id` INT NULL ,
`username` VARCHAR(100) NOT NULL ,
`email` VARCHAR(255) NOT NULL ,
`content` TEXT NOT NULL ,
`createtime` DATETIME NOT NULL ,
`approved` TINYINT NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`) ,
INDEX `FK_comment_user` (`user_id` ASC) ,
INDEX `FK_comment_post` (`post_id` ASC) ,
CONSTRAINT `FK_comment_user`
FOREIGN KEY (`user_id` )
REFERENCES `mydb`.`user` (`id` )
ON DELETE NO ACTION
ON UPDATE CASCADE,
CONSTRAINT `FK_comment_post`
FOREIGN KEY (`post_id` )
REFERENCES `mydb`.`post` (`id` )
ON DELETE NO ACTION
ON UPDATE CASCADE)
ENGINE = InnoDB;
Вы можете видеть, что user_id FK не требуется, потому что это может быть гость, перед сохранением / проверкой я могу проверить, есть лиМодель имеет идентификатор_пользователя, если так, я могу получить необходимые данные: имя пользователя, адрес электронной почты из таблицы пользователей и вставить в эту модель комментариев для проверки модели.
Мой вопрос таков: имя пользователя и адрес электронной почты будут избыточнымиданные, если пользователь зарегистрирован.Кроме того, если они обновят свою электронную почту, мне придется написать собственный код для каскадного изменения этого поля в комментарии.Следовательно, было бы лучше не требовать (отбрасывать NOT NULL) имя пользователя и адрес электронной почты?