для начала, говорим только об настройках плагинов - т.е. древовидная структара с values любого типа.
значит, вот что я смог сделать для описания таблиц (по общей идеи zg):
Code: Select all
pragma foreign_keys = ON;
create table if not exists plugin_keys(id INTEGER PRIMARY KEY ASC, parent_id INTEGER, name TEXT NOT NULL, FOREIGN KEY(parent_id) REFERENCES plugin_keys(id) ON UPDATE CASCADE ON DELETE CASCADE);
create unique index if not exists plugin_keys_i1 on plugin_keys(parent_id,name);
create table if not exists plugin_values(id INTEGER PRIMARY KEY ASC, key_id INTEGER, name TEXT NOT NULL, type INTEGER NOT NULL, value BLOB, FOREIGN KEY(key_id) REFERENCES plugin_keys(id) ON UPDATE CASCADE ON DELETE CASCADE);
create unique index if not exists plugin_values_i1 on plugin_values(key_id,name);
для plugin_values, type это скажем 0-int64, 1-string, 2-binary
тут типа всё нормально, не? нужен ли вообще id для plugin_values?
теперь надо понять как правильно делать insert, delete и т.п., кто тут у нас sql (sqlite) спец?
например, как правильно "обновлять" существующий value? если у values всё таки есть id, должен ли он изменятся при replace или нет?
Примечание модератора
Смежная тема: FAR 3: (со)хранение конфигурации (настроек, истории, сеанса)