Struttura dei dati annidati

-1

Ho un problema con la strutturazione di dati som. L'idea è di avere una sorta di scheda menu, in cui puoi creare il tuo menu. I diversi prodotti sono suddivisi in gruppi e in alcuni dei gruppi è possibile scegliere tra es. tre diversi "sottomenu" predefiniti - quindi avresti i menu annidati. Come è ora, vengono semplicemente memorizzati come alberi nidificati nel database. Il problema è che abbiamo molti punti di vista diversi, in cui questa struttura è in qualche modo irrilevante (ad esempio (complicate) visualizzazioni di lista con prodotti scelti). Questo è abbastanza poco pratico per iterare su tutte queste sottostrutture e renderle in una lista, e non è corretto archiviare i dati in questo modo, solo per rendere la vista.

Il mio suggerimento è semplicemente di avere i prodotti in una lista, con un attributo che indica a quale menu appartengono. Il mio problema è che non conosco alcun modo intelligente per archiviare la struttura dei menu che appartengono all'attributo e che consente comunque di ricostruire il menu come sembrava quando lo hanno creato (cioè con tutti i sottomenu che hanno fatto non scegliere) - anche se il menu modello è cambiato. Tieni presente che la struttura non può essere codificata in alcun modo, dal momento che il modello è costruito dinamicamente da "designer di menu".

    
posta Anders 06.10.2017 - 19:08
fonte

1 risposta

0

Una potenziale soluzione, crea una relazione genitore / figlio nella tabella.

Tabella Menu Costruito, l'Id Menu è la voce di menu originale se esiste un elenco di voci di menu predefinite.

  • Id, ParentId, nome, ID menu
  • 1, null, menu di root, 9
  • 2, 1, sottomenu 1, 15
  • 3, 1, sottomenu 2, 25
  • 4, 3, voce di menu nel sottomenu 2, 45

.. E così via. La maggior parte dei database supporta un tipo annidato di query. Ad esempio, SQL Server utilizza le espressioni di tabella comuni (CTE).

Quindi puoi creare qualsiasi tipo di struttura di menu da un elenco di voci di menu standard.

    
risposta data 06.10.2017 - 20:01
fonte

Leggi altre domande sui tag