Использую Yii2.
Есть модель Article (статья) и Category (категория).
Как лучше организовывать связь между ними?
Варианты:
1. В модели Article добавляем поле category_id, куда заносим ID категории.
2. Добавляем промежуточную таблицу articles_categories (category_id, article_id).
Плюс первого варианта: простота работы с категориями и связанными с ними статьями.
Плюсы второго варианта: гибкость, не нужно модифицировать Article при добавлении подобных связей (теги, авторы и т.д.), можно добавлять несколько категорий к одной статье.
Склоняюсь ко второму варианту, но хочу услышать Ваше мнение.
Как раз зависит. Вы правильно сказали, что с One-Many будет проще, если может быть только одна категория - тогда это единственный правильный вариант, потому что Many-Many будет избыточным и лишним усложнением.
Если есть не 0-я вероятность множеств категорий ассоциированных с одной статьей - единственно верный Many-Many, потому что One-Many не выполняет изначальных требований.
Окей, если планируешь many-many, делай сразу с промежуточной таблицей. Если не планируешь - делай fk в Article. Тут тебе трудно помочь, все зависит от требований.