У меня есть стол event
и стол place
. Некоторые events
принадлежат некоторым places
, а другие нет. Поэтому я решил создать другую таблицу: placed_event
= events
которая принадлежит place
. Мой вопрос: должен ли я хранить его таким образом или иметь только таблицу placed_event
и удалить таблицу events
, так что некоторые placed_events
будут иметь внешний ключ null
- т. Е. Не принадлежали ни одному месту?рельсы модели: может быть иностранный ключ null?
ответ
Ответ: «Это зависит».
Если события могут быть в 0 или 1 месте, то таблица событий с внешним ключом в таблице мест будет работать нормально; как сказал Мохаммад в своем комментарии, если place_id null, событие просто не имеет места.
Если события могут быть распространены на более чем одном месте, например, на концерте со многими этапами, это имеет смысл иметь таблицу соединений.
Надеюсь, что помогает.
да, но я хочу убедиться, что, если я сделаю реляционную таблицу, и события будут иметь много мест по категориям (и наоборот), все равно ОК, если какое-то событие не будет иметь место –
, или я могу сделать это через много через, и это нормально, если событие будет иметь много мест только через одну категорию? –
Не зная подробностей, любой из них, возможно, сработает. Вы ищете, чтобы ваше моделирование данных было настолько сложным, насколько вам нужно, но не более того, или просто, как вы можете сделать это, но все еще приспосабливать ваши потребности; и что ваш код достаточно защищен, чтобы обрабатывать такие вещи, как нулевые места для события и т. д. Имеет ли это смысл? – Matt
Если место has_many
события и события belongs_to
место, вы всегда можете оставить place_id
пустым (nil
). Это не обязательно для всех (или любых) ассоциаций (если вы явно не проверяете). Вы должны, конечно, проверить это в своем коде, чтобы вы не пытались получить доступ к данным из ассоциации, которая не существует (т. Е. Вызывает @event.place.name
, когда place
- nil
).
- 1. Рельсы has_many: через ассоциацию: получить иностранный атрибут через внешний ключ
- 2. MySQL Может быть внешний ключ Null
- 3. Иностранный ключ без ограничений?
- 4. Иностранный ключ (новичок)
- 5. Удалить иностранный ключ
- 6. Иностранный ключ не добавляется
- 7. NHibernate карта иностранный ключ
- 8. Иностранный ключ и регистрационная форма
- 9. Иностранный ключ в спящем режиме
- 10. Иностранный ключ на двух столбцах
- 11. Иностранный ключ без уродливого blablaId
- 12. Ключи MySQL: ПЕРВИЧНЫЙ КЛЮЧ, ИНОСТРАННЫЙ КЛЮЧ, КЛЮЧ - что такое «КЛЮЧ»?
- 13. Django RadioButton как иностранный ключ
- 14. OneToOne иностранный ключ экономия проблема
- 15. Доктрина: Symfony 2 иностранный ключ null перед флешем
- 16. Джанго - фильтрация связанного подмножества (иностранный ключ) - Ошибка
- 17. django модель иностранный ключ созданный индекс
- 18. Иностранный ключ в веб-формах
- 19. Иностранный ключ в ошибке MVC
- 20. Джанго ссылки экземпляр модели не спасает иностранный ключ
- 21. Иностранный ключ для разных лиц
- 22. Существует иностранный ключ-синтаксис ошибка
- 23. Рельсы, запрашивающие секретный ключ для создания модели
- 24. learning_record_recorddinningroom.room_id не может быть NULL
- 25. Rails has_many иностранный ключ, производящий пустой массив
- 26. Иностранный ключ в Django - второй Форма
- 27. Ссылка не может быть NULL или она может быть NULL?
- 28. Иностранный ключ против того же стола?
- 29. Map иностранный ключ для скалярного имущества
- 30. Иностранный ключ, не заполняемый основными значениями ключа
Почему они разделяют две модели, они оба являются событиями, и если событие имеет значение 'nil' в' place_id', тогда это имеет смысл, потому что оно действительно не принадлежит месту. –