Mysql таблица комментариев по отношению к нескольким таблицам - PullRequest
0 голосов
/ 09 сентября 2018

Поскольку могут быть комментарии по существу чего-либо, я не уверен, как передать отношение в мою схему проектирования базы данных.

    CREATE TABLE comments (
    id INT(11) NOT NULL PRIMARY KEY,
    content TEXT NOT NULL,
    authorId INT(11) NOT NULL,
    FOREIGN KEY(authorId) REFERENCES users(id)
    );

Как видите, комментарии также имеют отношение к таблице пользователей, сохраняя идентификатор автора в наборе данных. Тем не менее, сам комментарий может быть либо пост, либо видео, которые представляют собой две отдельные таблицы. Вот мой вопрос: я должен создать соединительную таблицу для обоих отношений (video_comments и post_comments), или я должен сделать это любым другим способом. Кроме того, должно быть ограничение ON DELETE CASCADE, которое должно вызывать удаление удаляемого видео, а также удалять связанные с ним комментарии.

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Вот еще один способ, который вы можете рассмотреть:

  1. добавить столбец с именем 'itme_id' или что-то подобное для хранения video_id или post_id
  2. Lcreate for/after delete triggersи для таблиц видео, и для записей делайте удаление в таблице комментариев внутри триггера, используя информацию из волшебной таблицы.

Таким образом, вам не нужно создавать новую таблицу или придерживатьсякаскадная вещь.Это только мое предположение, пожалуйста, дайте мне знать, если это имеет смысл для вас.

0 голосов
/ 09 сентября 2018

Я думаю, вы могли бы создать commentable_id и commentable_type, чтобы сообщить, что этот идентификатор принадлежит к какой таблице что касается этой части

Кроме того, должно быть ограничение ON DELETE CASCADE, которое должно приводить к удалению видео, а также удалять связанные с ним комментарии

Я не знаю, как это сделать, я думаю, что если бы я был на вашем месте, я обработаю его с помощью кода, прежде чем удалять видео, я проверю, есть ли какие-либо комментарии и удаляю его.

...