Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [MySql] Normalizzazione tabelle database

    Ciao Ragazzi avrei bisogno di capire se sto normalizzando bene il mio database o meno prima che comincio con la programmazione e riempio tutto di ridondanze e casini...

    ho una tabella articoli in cui gli utenti possono scrivere i loro contenuti e poi metterne dei link,degli embed e dei tag associati ad esso...

    Ho quindi pensato di creare questo tipo di tabelle

    Tabella "articoli"
    ID_Articoli
    ID_User
    Titolo
    Contenuto
    Data_Creazione

    Tabella "embed_link" (dove loro inseriranno la stringa del link o del contenuto da embeddare)
    ID_Link_Embed
    Articoli_ID
    Link_Embed
    Link_Type (booleano per distinguere se è un link o embed)
    Descrizione_Link (Testo che possono mettere al posto di visualizzare tutto il link)

    Tabella "Tag"
    ID_Tag
    Descrizione_Tag

    Tabella "Articoli_Tag"
    ID_Art_Tag
    Articoli_ID
    Tag_ID


    Praticamente ho pensato di creare un record per ogni tag che mi va nella tabella "Tag" e poi nella cartella "articoli_tag" volevo associare il tag a quell'articolo..Perchè ho pensato che magari uno stesso tag tipo "auto" potrebbero avercelo più articoli e comunque per fare una ricerca nel caso volessi cercare per tag...

    Che ne pensate? E poi i link per gli embed devono avere qualcosa di particolare?

    Grazie!!

  2. #2
    In teoria i dati in un campo dovrebbero essere omogenei, quindi se devi usare un flag per distinguere due tipi, allora potresti anche fare due tabelle separate per link e embed, pensa ad esempio al caso in cui tu voglia aggiungere altri metadati agli embed (tipo per dire durata di un filmato, formato o roba simile) che non avrebbero significato per i semplici link. Per il resto mi sembra ok.

  3. #3
    Ok,in effetti inizialmente avevo creato due tabelle differenti per link ed embed però sembrando avere quasi gli stessi campi mi sono detto che avrei semplicemente potuto metterli insieme..Però effettivamente come dici tu se poi volessi aggiungere parecchi campi converrebbe avere due tabelle diverse...

    Per i tag va bene questa soluzione? Perchè ho visto che molti fanno direttamente 1 sola tabella dove ci inseriscono nel campo tutta la linea delle parole scritte dall'utente separate da virgola nel senso:

    tabella "tag_articoli"
    ID_Tag_Art
    Tag (casa,appartamento,loft,affitto,vendita,chiavi,mob ili)
    ID_Articolo

    Però effettivamente mi sembra meno performante nel caso di una ricerca per singolo tag...Che dite?

  4. #4
    No, la tua soluzione e' quella corretta, inserire i tag in un campo solo separati da virgola e' proprio contrario all'idea di normalizzazione, ed e' molto piu' inefficiente e scomodo (pensa a update o delete di tag, col tuo sistema e' immediato, nell'altro caso devi estrarre i dati, lavorarli e aggiornarli).

  5. #5
    Ok allora grazie mille per l'aiuto!! Per l'altro problema allora creo direttamente due tabelle cosi mi evito scocciature in seguito!!
    Ciao!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.