Рассмотрите, пожалуйста, эту настройку для приложения, поддерживаемого базой данных.
(в моем случае БД - это MySQL, а приложение - в Ruby (Rails 3), но я не думаю, что это имеет значение для этого вопроса)
Допустим, у меня есть приложение для склада.
У меня есть несколько предметов, которые будут иметь категории и статусы.
Например, таблица, состоящая из частей, будет иметь несколько статусов, таких как: на складе, снятых с производства, отстающих и нескольких категорий, таких как: аппаратные, автомобильные, медицинские и т. Д.
Также у меня есть другие таблицы, которым нужны статусы и категории, такие как
Поставщик: утвержден, не работает, новый
Заказ: открыт, обрабатывается, отправляется, отменяется.
1011 * Etc. *
Вот вопрос:
Я думаю, что если бы я хотел правильно нормализовать свою базу данных - у меня была бы таблица с категориями, category_types, statuses, statuses_types.
Тогда я буду хранить все категории в этой таблице, и любая категория определенного типа, например все категории деталей, будет иметь внешний ключ для category_type - parts и т. Д. То же самое для типов.
Это нормализованный способ.
Однако я часто вижу, что люди создают отдельные таблицы для определенных категорий, например,
будет таблица с именем part_categories, vendor_categories, order_statuses, part_status. Это менее нормализованная база данных, но я думаю, когда вы имеете дело с большим количеством таблиц, это может быть яснее.
Какой из этих подходов лучше? Каковы минусы и плюсы в вашем опыте?
Я обычно иду с первой настройкой, но я вижу второй так часто, что начинаю сомневаться в своем подходе.
Спасибо.