Я пытаюсь выяснить большую часть дизайна и нормализации базы данных, прежде чем делать много для моего текущего проекта.К сожалению, у меня нет большого опыта в проектировании баз данных, поэтому это довольно медленный процесс.Одна из проблем, которую я пытаюсь выяснить, заключается в том, как лучше всего справиться с ситуацией, когда одна таблица может или не может быть связана с другой таблицей.
Небольшой фон поможет прояснить вопрос: Я создаю веб-приложение с использованием Rails 3.2, которое помогает управлять гонками.Люди смогут создавать учетные записи (/ учетные записи пользователей), проводить гонки и управлять различными аспектами.
Одна вещь состоит в том, что участники данной гонки могут или не могут быть пользователями.На самом деле, мы можем предположить, что большинство из них не будут пользователями.Но для тех, кто это сделал, было бы неплохо иметь возможность ссылаться на их профили (и, наоборот, ссылаться на их профили на гонки, в которых они участвовали).
Это похоже насообщения в блоге, где люди могут оставлять анонимные комментарии, но если они решают войти в систему и использовать свою учетную запись, то это связано с публикацией различными способами.
Я искал некоторое время, но на самом деле ненайденные решения.Я полагаю, что способ сделать это состоит в том, чтобы иметь примечание модели участников "has_one UserParticipation", которое обычно равняется нулю.
Это правильное решение?Есть ли лучший способ сделать это?
Вот небольшая диаграмма, которую я составил в Paint, чтобы кратко показать проблему:
Вопрос 2: Это немного менее важно,но я подумал, что задам его в том же вопросе, потому что я уже опубликовал соответствующий вопрос: некоторые вещи будут ссылаться на участников, есть ли причина устанавливать составной суперключ {Race_ID, Participant_Number} вместо того, чтобы всегда ссылаться на него, используя"race.participants"?(Насколько я могу судить, они будут работать очень похоже.)