У меня ситуация:Отношения между двумя сущностями
- У меня есть пользователя (создателя), который создает события (каждое событие принадлежит одному пользователю)
- Каждое событие может пригласить других пользователей (участников) (каждый пользователь принадлежит к одному событию)
В принципе, существуют два объекта (Пользователи и события), но отношения не просты. Я имею в виду, что пользователь, создающий событие, может быть не тем, кто его посещает. Пользователь может быть только участником, но не создателем.
Ситуация похожа на this.
Я понял, что эти отношения не просто многие-ко-многим.
Например, я могу создать две таблицы с двумя отношениями (круговые отношения). Чтобы разбить этот круг, мне нужно разрешить создание пользователя (участника) без события, временно назначив ему NULL или создав еще один столбец (Boolean), который указывает, является ли этот пользователь также создателем или нет.
Но я решил, создав третью таблицу:
В третьей таблице хранятся события и их участники.
Я также нашел другой способ решить эту проблему. Она включает 4 таблицы:
Пользователя (Пользователь может быть либо автором или участником)
Creator (Создатель пользователь, который создает событие)
события (каждое событие принадлежит одному создатель)
Участник (Участник несет пользователь, который принимает участие в мероприятии, одно событие имеет много участников)
Эти отношения будут выглядеть следующим образом:
Какое решение лучше?
Мне понравился один с двумя столами, но мне просто нужно было копать глубже и найти подходящее.
Что касается правила 2: «Каждый пользователь принадлежит к одному событию» - это дословный перевод был бы, что пользователь не может существовать в базах данных, если они связаны только с одним событием, никогда не могут ассоциироваться с более чем одним событием, и когда они отключаются от этого события, пользователь перестает существовать в базе данных. Это правильная интерпретация? – onedaywhen
Сначала вы говорите: «пользователь создает события», но позже говорит: «Пользователь может быть просто участником, но не создателем». Я думаю, вам нужно разобраться в своих правилах! – onedaywhen
Да, вы правы. Это мой английский, извините. Пользователь не обязательно должен принадлежать к событию. И пользователь может быть участником, создателем или обоими. – Alisher