Funktionen mit Werte-Liste

Wir haben immer mehr Features, die unterschiedliche Werte haben können, nicht alle sind auf allen Geräten verfügbar.
Um genauere Informationen über die möglichen Werte eines bestimmten Features liefern zu können, müssen wir diese Werte also kennen und speichern können.

Quelle:

Hier besprechen wir mögliche Lösungen, um dieses Projekt umzusetzen.

Für einen ersten Entwurf,
glaube ich, dass es sinnvoll wäre, eine optionale Liste von Werten managed_values zum Modellobjekt feature hinzuzufügen:

{
 device: {
    ...,
    features: [
      {
        name: '...',
        ...,
        last_value: 2,
        managed_values: [0, 1, 2, 7, 8]
      },
      ....,
    ],
  },
}

Damit kann die Frontend-Anwendung überprüfen, ob die Liste managed_values ausgefüllt ist, und die Anzeige entsprechend den vorhandenen Werten steuern.

Ich erinnere daran, dass wir relationale Datenbanken verwenden, also mehrere Optionen dafür:

  • Die relationale Methode wäre, eine Tabelle device_feature_managed_value zu erstellen, die in einer 1-N-Beziehung zur Tabelle device_feature steht. Das ist strenger, aber auch aufwendiger beim Einfügen/Löschen.
  • Oder die von dir genannte Methode, aber dann muss das Array beim Schreiben/Lesen serialisiert/deserialisiert und als SQLite-String gespeichert werden. Das öffnet auch die Tür zu Chaos, da die Datenkonsistenz in der Anwendungskodierung verwaltet werden muss und mögliche Datenmigrationen in JS und nicht in SQL codiert werden müssen.

Beide Methoden haben ihre Vor- und Nachteile, ehrlich gesagt!