как обрабатывать таблицы базы данных с похожими полями

0

У меня есть таблицы базы данных Заявители, Батареи, Инверторы и Солнечные панели. поля таблицы на батареях, инверторах и солнечных панелях одинаковы,

Общее число Вместимость вольтаж и они относятся к таблице Заявителей. Поэтому мои вопросы состоят в том, чтобы я разделял Батареи, Инверторы и Солнечные панели на отдельные таблицы или использовал одну таблицу и добавлял поле для их дифференциации Тип (аккумулятор, инвертор, панель солнечных батарей) Общее число Вместимость вольтаж

<!DOCTYPE html>
<html>

<head>
  <style>
    table,
    th,
    td {
      border: 1px solid black;
      border-collapse: collapse;
    }
    
    th,
    td {
      padding: 5px;
      text-align: left;
    }
  </style>
</head>

<body>


  <table style="width:100%">
    <caption>Separate Databse Table</caption>
    <tr>
      <th>Battery</th>
      <th>Inverter</th>
      <th>Solar Panel</th>
    </tr>
    <tr>
      <td>Total Number</td>
      <td>Total Number</td>
      <td>Total Number</td>
    </tr>
    <tr>
      <td>Capacity</td>
      <td>Capacity</td>
      <td>Capacity</td>
    </tr>
    <tr>
      <td>Voltage</td>
      <td>Voltage</td>
      <td>Voltage</td>
    </tr>
  </table>
  <hr>

  <table style="width:100%">
    <caption>Single Databse table</caption>
    <tr>
      <th>Type</th>
      <th>Total Number</th>
      <th>Capacity</th>
      <th>Voltage</th>
    </tr>

  </table>

</body>

</html>
  • 2
    Как правило, если атрибуты вещей идентичны, ожидается, что они останутся идентичными, и нет других веских причин для их разделения, тогда вам, вероятно, лучше иметь их в одной таблице. .... хотя это идет линия на том, чтобы быть "основанным на мнении".
Теги:
database
database-design

2 ответа

2

Да, вы должны использовать одну таблицу, чтобы различать поля, как вы упомянули.

Тип (батарея, инвертор, панель солнечных батарей) Общее количество Емкость

  • Тип (аккумулятор, инвертор, панель солнечных батарей)
  • Общее число
  • Вместимость
  • вольтаж

Вы можете добавить в него внешний ключ таблицы претендентов для их отношения как.

  • applicationants_foregn_key/претендент_id
  • Тип (аккумулятор, инвертор, панель солнечных батарей)
  • Общее число
  • Вместимость
  • вольтаж
  • 0
    Я бы не рекомендовал беспокоиться о типе перечисления MySQL; это означает, что для добавления нового типа требуется таблица ALTER (и, следовательно, полная перестройка таблицы); вместо этого отдельная таблица component_types для фактических имен типов и component_type_id в главной таблице «компонентов», которая ссылается на нее, сводит к минимуму сравнения строк и повторений, сохраняя при этом гибкость.
1

Это мнение основано, но есть вещи, которые могут помочь вам решить,

  • Какой язык вашей клиентской программы? Это язык OO?
  • Можете ли вы рассмотреть тип объекта, обобщающий все эти объекты (Батареи, Инверторы и Солнечные панели)? Если это так, то обобщение.

Если ваш ответ на эти вопросы положительный, нужно создать родительский объект для своих объектов и сопоставить его с одной таблицей. Если это обобщение существует, можно предсказать, что между новыми объектами и всеми тремя будет больше связей, поэтому одно табличное решение облегчит понимание базы данных и понимание базы данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню