Я пытаюсь создать базу данных, содержащую список оборудования. Все оборудование будет иметь определенные общие атрибуты (например, производитель, модель #, серийный номер и т.д.), Тогда есть другие атрибуты, характерные для определенного оборудования (т.е. Модем будет иметь доступ #, тогда как солнечная панель будет иметь выходную мощность). Я не уверен, как представить эти изменяющиеся атрибуты с хорошими принципами проектирования баз данных, я пробовал искать в Интернете, но я не совсем уверен, что искать.
Я придумал следующие возможные решения и свои первые мысли о них:
-
У вас есть одна большая таблица со всеми возможными атрибутами и просто поставьте null там, где она неприменима. Очевидно, это имеет некоторые недостатки.
-
У вас есть отдельная таблица для каждого типа оборудования. Кажется, это может быть кошмар для использования, если я хочу распечатать список всего оборудования, как узнать, какие таблицы искать?
-
У вас есть таблица с общими атрибутами и другие таблицы для каждого типа оборудования, доступ к которому осуществляется с помощью внешнего ключа для хранения дополнительных атрибутов. Возможно, я мог бы сделать эту работу, но это было бы громоздким и просто не было бы очень хорошим решением.
-
Модель типа объекта-атрибута. Просто не похоже на то, что я хочу сделать.
У меня нет большого опыта работы с базами данных, поэтому я изучаю, поскольку я здесь, любые ссылки, связанные с этой проблемой, или "должны читать" статьи по дизайну базы данных, будут оценены. Спасибо!
EDIT: Во-первых, я узнал, что мне нужно Google "Наследование наследования", что может помочь кому-либо, у кого есть аналогичный вопрос. Чтобы решить эту проблему, я решил использовать гибрид №2 и №3. Это было довольно просто, хорошо работает и решает проблему добавления дополнительных типов оборудования без сложности EAV. Спасибо за все комментарии и предложения!