Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: [Mysql] struttura db

  1. #1
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255

    [Mysql] struttura db

    Devo strutturare un db che dovrà contenere un certo numero di articoli. Ogni articolo è associato a un paese, una tematica, una lingua e ad una tipologia. Dato che i paesi, le tematiche, le lingue e le tipologie sono composte da un numero finito di elementi voi come strutturereste il db?
    Mi spiego meglio: meglio fare un campo paese e dargli direttamente come valore Polonia e così via o dargli invece un valore numerico corrispondente alla Polonia? E nel secondo caso deve elenco le corrispondeze fra valore numerico e paese, in una tabella? In un array?

    Grazie anticipatamente
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  2. #2
    da come hai esposto dovresti fare una tabella per ogni soggetto

    tab paesi - campi id_paese, altri campi descr_1, descr_nn

    tematiche - id_tematiche , altri campi descr_1, descr_nn

    lingue - id lingue, descr_1, altri campi descr_nn

    tipologie - id_tipologie , altri campi etc.

    tabella articoli
    campi:
    id_articoli,
    id_paesi,
    id_tematiche,
    id_lingue,
    id_tipologie,
    altri campi

    Ovviamente dico questo senza conoscere il progetto e quindi assolutamente in linea di massima.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Scusa se non sono stato chiaro, il mio dubbio è il seguente: nel caso di una struttura come quella che hai descritto tu, per ottenere tutte le informazioni su un articolo devo eseguire 5 query (una per l'articolo e quattro sulle altre tabelle). Esiste un metodo migliore?
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  4. #4
    Originariamente inviato da moskitoita
    Scusa se non sono stato chiaro, il mio dubbio è il seguente: nel caso di una struttura come quella che hai descritto tu, per ottenere tutte le informazioni su un articolo devo eseguire 5 query (una per l'articolo e quattro sulle altre tabelle). Esiste un metodo migliore?
    usare la select .... from .... join.

    codice:
    select *
    from articoli
    inner join paese using (id_paese)
    inner join tematiche using (id_tematiche)
    inner join lingue using (id_lingue)
    inner join tipologie using (id_tipologie)
    where .... quello che vuoi cercare

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Originariamente inviato da piero.mac
    usare la select .... from .... join.

    codice:
    select *
    from articoli
    inner join paese using (id_paese)
    inner join tematiche using (id_tematiche)
    inner join lingue using (id_lingue)
    inner join tipologie using (id_tipologie)
    where .... quello che vuoi cercare
    Perfetto, grazie mille
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  6. #6
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Ho usato la struttura che mi hai consigliato e mi trovo molto bene.
    Se io ora volessi fare una ricerca fulltext sul database come devo fare?
    Vorrei ad esempio poter cercare "bulgaria" sia in articoli.contenuto sia nel paesi.id_paesi corrispondente a quell'articolo. E' possibile?
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  7. #7
    bisogna creare un indice full-text per il campo interessato e poi lo aggiungerai nel where. Ma per trovare una parola non credo sia indispensabile usare il full-text che ha pure un mucchio di restrizioni. (cfr. man. http://dev.mysql.com/doc/refman/5.0/...xt-search.html )

    Se invece intendi solo trovare la parola "bulgaria" :

    ......
    where (paesi.nome = 'Bulgaria' OR articoli.contenuto LIKE '%Bulgaria%')

    = trova la sola corrispondenza esatta a Bulgaria,
    LIKE % se contiene tra le altre cose la parola 'Bulgaria'

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Ho fatto l'esempio con una sola parola, ma l'idea è quella di creare un piccolo motore di ricerca.
    Il mio dubbio è come creare un indice fulltext con campi di tabelle diverse, ho provato
    Codice PHP:
    ALTER TABLE `articoli`, `paeseADD FULLTEXT(articoli.contenuto,paesi.name); 
    Ho anche provato a creare due indici divisi e poi usare una query come questa
    Codice PHP:
    SELECT FROM `articoli`, `paese`
    INNER JOIN `paeseON paese.id articoli.id_paese

     WHERE MATCH
    (articoli.contenutopaese.nameAGAINST('Bulgaria'
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  9. #9
    un indice e' sempre relativo ad una tabella. Altrimenti che indice tabellare sarebbe?

    Prova con una UNION dove nella prima select esplori una tabella e nella seconda l'altra ... oppure con una subquery che tiri fuori l'id del record che ti interessa.

    Ma paese.name non mi pare meriti un full-text ne' da solo ne' accompagnato.

    C'e' pure una pillola sui motori di ricerca.....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    volevo usare la fulltext per la possibilità che da di associare un punteggio ai risultati
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

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