Ho una struttura dati abbastanza semplice come questa:
create table project (id int auto increment primary key, name text);
create table item (id int auto increment primary key, name text,
project_id int not null,
project_sort_index int not null,
sort_index int not null,
foreign key fk_project(project_id) references project(id));
Un project
può avere molti item
s. Gli articoli hanno due campi diversi per mantenere l'ordinamento, project_sort_index
e sort_index
.
Questi campi di ordinamento si applicano nel modo seguente. Quando visualizzo tutti gli elementi appartenenti a un progetto, ho bisogno di un ordinamento specifico per ogni progetto per gli articoli. Quando visualizzo globalmente tutti elementi, ho bisogno di un ordinamento per loro a livello globale.
Ho un paio di domande sul modo migliore per mantenere e modificare l'ordinamento per questi articoli. Diciamo che ho spostato un oggetto dall'indice 4 all'indice 2. Come posso propagare tale modifica al mio database in modo efficiente?
Ad esempio, come faccio ora ad aggiornare tutti i numeri indice > = 2 per spostare tutto verso il basso, e tuttavia a chiudere lo spazio vuoto al posto 4? C'è un modo migliore di ordinare gli elenchi in SQL?