Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481

    [MySQL] progettazione tabella province vicine

    Ho una tabella con la lista delle province italiane. Ho la necessità di sapere, per ogni provincia, quali sono le sue province confinanti.
    Come creereste le tabelle per una relazione di questo tipo??
    La tabella province è così

    PROVINCE
    id
    nome
    sigla

    ho pensato di creare una nuova tabella di questo genere:
    PROVINCE_CONFINANTI
    id
    id_provincia
    id_provincia_confinante


    Faccio un esempio, la provincia
    id: 1
    nome: Ancona
    sigla: AN

    nella tabella province confinanti potrei inserire delle istanze del tipo:
    id:1
    id_provincia: 1
    id_pronvicia_confinante: 4

    id:2
    id_provincia: 1
    id_pronvicia_confinante: 15

    Dove le province 4 e 15 sono Macerata e Pesaro Urbino. Ma questa non mi sembra una gran cosa, perchè andrei a scrivere un sacco di volte le stesse cose, perchè organizzando le cose in questo modo, per la provincia Macerata, andrei a riscrivere una nuova istanza per collegarla ad Ancona, e lo stesso dicasi di Pesaro Urbino....come organizzereste il db per una cosa del genere??

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    codice:
    TABELLA
    id
    id_provincia
    array_provincie_confinanti
    Usi serialize(), registri l'array contenente gli ID delle provincie confinanti e poi lo prelevi quando vuoi con unserialize() e li hai sempre tutti a disposizione.

  3. #3
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Hai pensato di aggiungere semplicemente un campo in cui inserire i vari ID delle province confinanti?

    es la Provincia 1 (Roma) confina con le province: 2,3,4

    nella tabella avrai:

    provincia_id (1)
    provincia_nome ("Roma")
    province_confinanti(2,3,4)

    Ciao.

  4. #4
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    con questi metodi "duplicao" le relazioni, però queste soluzioni non si attengono al modello entità relazione, e non rispettano neanche la normalità. In questi modi scriverò nella provincia Roma, gli id delle regioni confinanti, ed a sua volta inserirò la provincia stessa di roma in tutte le province che gli sono vicino, non è un modello normalizzato, no?!

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    La tua idea originaria è PERFETTA per quanto riguarda le regole di normalizzazione dei db.
    Effettivamente hai il problema che scrivere ancona-macerata e macerata-ancona è ridondante. Le soluzioni possibili sono due:

    1) eviti di duplicare le righe, controllando ad esempio prima di inserire 1-4 che non esista già 4-1. Però quando poi vai a cercare le province confinanti di ciascuna devi fare la ricerca sia sulla prima colonna che sulla seconda

    2) ti rassegni ad avere le righe doppie e semplifichi l'accesso

  6. #6
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da luca200
    La tua idea originaria è PERFETTA per quanto riguarda le regole di normalizzazione dei db.
    Effettivamente hai il problema che scrivere ancona-macerata e macerata-ancona è ridondante. Le soluzioni possibili sono due:

    1) eviti di duplicare le righe, controllando ad esempio prima di inserire 1-4 che non esista già 4-1. Però quando poi vai a cercare le province confinanti di ciascuna devi fare la ricerca sia sulla prima colonna che sulla seconda

    2) ti rassegni ad avere le righe doppie e semplifichi l'accesso
    ....mi sa che opto per la seconda....per questa volta cedo alla ridondanza....

    Grazie del supporto ragazzi

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.