Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [MySql] Struttura database con albero ridondante

    Buongiorno a tutti,
    ho in testa da un po' di tempo un progetto che prevede una serie di articoli che vanno sotto sezioni di 3°/4° livello.


    In sintesi l'abero sarà il seguente:
    1. Macro-sezione Rosso
    1.a Media-sezione Pippo
    1.a.i Articolo 1
    1.a.ii Articolo 2
    1.b.Media-sezione Pluto
    1.c Media-sezione [...]
    2. Macro-sezione Giallo
    2.a Media-sezione Paperino
    2.a.i Articolo 1
    2.a.ii Articolo 2
    2.a.[...] Articolo [...]
    2.b.Media-sezione Topolino
    2.c Media-sezione [...]
    [... ecc]


    Avendo questa struttura, mi immagino una tabella del seguente tipo:

    id Macrosezione Mediasezione Articolo Testo
    1 Rosso Pippo 1 ciao ...
    2 Rosso Pippo 2 ecc...
    3 Rosso Pippo 3 blabla...




    Esiste un modo per evitare la ridondanza deteminata dal fatto che molti articoli hanno la medesima macrosezione, ecc.
    Insomma, a livello visivo, sarebbe come una cartella che ha al suo interno tante sottocartelle, con all'interno altre sotto-cartelle e così via.

    Non so se mi sono spiegato. Ovviamente sono anche ben accetti link ad articoli

    Grazie mille
    Andre

  2. #2
    se il numero di livelli è fisso non starei a preoccuparmi. cosa intendi poi con "a livello visivo" ? la visualizzazione dei dati può differire notevolmente (e normalmente è così) dalla rappresentazione nelle tabelle db

  3. #3
    Scusami, hai ragione, mi sono spiegato male, per "a livello visivo", intendevo fare un esempio per farvi intendere la struttura dei dati che è paragonabile, per l'appunto, alla presenza di alcuni testi in sotto-cartelle.

    Comunque, su stackoverflow mi hanno consigliato l'uso di parent_id, qualcuno mi potrebbe fare un esempio semplice per capirne il funzionamento nel mio caso?
    Ultima modifica di andrealuigi; 24-11-2020 a 16:13

  4. #4
    Cari, noto un lack di conoscenza e preparazione significativo in tema di mysql partent id e foreign-key. Avete articoli da consigliarmi?

  5. #5
    ah, il famoso "parent_id"... ti aspetti documentazione su un nome di colonna?

    comunque, ripeto, se i livelli NON cambiano (come numero), non hai motivo di ottimizzare

  6. #6
    Sì, hai ragione. Non so. Credo che sia chiaro il mio problema e mi piacerebbe informarmi di più semplicemente sul punto.

    In ogni caso i livelli camabiano di numero. Alcuni articoli saranno nella Media-sezione, altri direttamente nella macro-sezione (oltre ad esserci delle ulteriori segmentazioni).

    Se qualcuno può aiutarmi a capire come muovermi, ne sarei grato.

  7. #7
    devi innanzitutto separare le tabelle delle sezioni e dei contenuti.
    - In quella dei contenuti dirai in quale sezione deve essere pubblicato il contenuto "x".
    - Quella delle sezioni la devi strutturare con i soliti campi (id e descrizione ad esempio) aggiungendo però un campo che indichi se è una sotto-sezione di una sezione superiore (quindi l'id della sezione "padre", il famoso parent_id); ovviamente la primissima sezione NON avrà una sezione-padre

  8. #8

  9. #9
    Grazie optime, ciò che non mi è chiaro è la sruttutura della prima tabella da te suggerita e in particolare il link tra le due tabelle.

    Modificando leggermente l'esempio di sopra:

    1. Macro-sezione Rosso
    1.a Media-sezione Pippo
    1.a.i Low-sezione 1
    1.a.ii Low-sezione 2
    1.b.Media-sezione Pluto
    1.c Media-sezione [...]


    La tabella delle sezioni sarebbe:
    id parent_id titolo
    1 0 macro_sezione1
    2 1 media_sezionePippo
    3 2 Low-sezione1
    4 2 Low-sezione2
    5 1 media-sezionePluto
    6 1 media-sezioneEcc

    Poniamo dunque che io abbia un articolo nella "low-sezione 1" e un articolo nella "low-sezione2".

    Come faccio nella tabella dei contenuti a rappresentarlo? Devo mettere un riferimento all'id della tabella sezioni? suggerimenti su come strutturarla o modifiche a quella precedente?
    Ultima modifica di andrealuigi; 27-11-2020 a 19:29

  10. #10
    tabella articoli
    - id
    - id_sezione
    - title
    - content
    - ....

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.