View Full Version : Consiglio stuttura database
fedelover
22-04-2006, 12:27
Devo realizzare un databae mysql dove inserire delle leggi.
Queste saranno poi richiamate in pagine divise per area tematica.
Sono indeciso sulla struttura da adottare:
a) una tabella unica per tutte le materie con un campo dove indio la materia per ciascuna legge da utilizzare come filtro.
b) tante tabelle quante sono le materie e quindi nella query richiamare direttamente la specifica tabella.
quale soluzione mi consigliate tenendo conto anche del fatto che il testo delle leggi spesso è lungo quindi in prospettiva il database acquisterà disrete dimensioni?
Ciao,
personalmente farei una tabella unica contenente tutte le leggi e un'altra tabella contenente le materie ovviamente relazionate enne a uno.
Una cosa del genere:
tabLeggi tabMaterie
┌▬▬▬▬▬▬▬┬▬▬▬▬▬▬▬▬▬┬▬▬▬▬▬▬▬▬▬┬▬▬▬┬▬▬▬┐ ┌▬▬▬▬▬▬▬▬▬┬▬▬▬▬▬▬▬▬▬▬▬┬▬▬▬┬▬▬▬┐
│idLegge│nomeLegge│idMateria│etc│etc│ │idMateria│nomeMateria│etc│etc│
└▬▬▬▬▬▬▬┴▬▬▬▬▬▬▬▬▬┴▬▬▬▬┬▬▬▬▬┴▬▬▬┴▬▬▬┘ └▬▬▬▬┬▬▬▬▬┴▬▬▬▬▬▬▬▬▬▬▬┴▬▬▬┴▬▬▬┘
N└▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬┘1
'iao
Devo realizzare un databae mysql dove inserire delle leggi.
Queste saranno poi richiamate in pagine divise per area tematica.
Sono indeciso sulla struttura da adottare:
a) una tabella unica per tutte le materie con un campo dove indio la materia per ciascuna legge da utilizzare come filtro.
b) tante tabelle quante sono le materie e quindi nella query richiamare direttamente la specifica tabella.
quale soluzione mi consigliate tenendo conto anche del fatto che il testo delle leggi spesso è lungo quindi in prospettiva il database acquisterà disrete dimensioni?
premetto che sono abbastanza acerbo in fatto di modelli relazionali ma...
senza dubbio la prima soluzione...altrimenti la seconda soluzione sarebbe piu comodo sviluppare un documento html con i link alle varie pagine
da considerare che mettendo tutte le leggi nella stessa tabella puoi fare ricerche piu "comode",penso che metterai campi come "data di entrata in vigore" "riferimenti ad altra legge" e cose simili...oltre ovviamente al "tema" di cui parli te
poi una tabella separata in cui metti la lista dei temi e colleghi la chiave primaria di quest'ultima al campo "tema" della prima
cosi è piu facile operare...sia scegliere una legge specifica,scegliere per tema...per data...per colore e sesso la legge ^^
Ciao,
personalmente farei una tabella unica contenente tutte le leggi e un'altra tabella contenente le materie ovviamente relazionate enne a uno.
Una cosa del genere:
tabLeggi tabMaterie
┌▬▬▬▬▬▬▬┬▬▬▬▬▬▬▬▬▬┬▬▬▬▬▬▬▬▬▬┬▬▬▬┬▬▬▬┐ ┌▬▬▬▬▬▬▬▬▬┬▬▬▬▬▬▬▬▬▬▬▬┬▬▬▬┬▬▬▬┐
│idLegge│nomeLegge│idMateria│etc│etc│ │idMateria│nomeMateria│etc│etc│
└▬▬▬▬▬▬▬┴▬▬▬▬▬▬▬▬▬┴▬▬▬▬┬▬▬▬▬┴▬▬▬┴▬▬▬┘ └▬▬▬▬┬▬▬▬▬┴▬▬▬▬▬▬▬▬▬▬▬┴▬▬▬┴▬▬▬┘
N└▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬┘1
'iao
ecco mi hai preceduto ^^ hehe
fedelover
26-04-2006, 12:34
Vi ringrazio tutti, anche se non ho capito il vantaggio delle due tabelle. In quella delle materie avrei solo il campo "id" e il campo "nome materia".
Misterius
26-04-2006, 12:54
Beh, se un giorno dovessi aggiungere una nuova materia, ti limiteresti a modificare solo la seconda tabella aggiungendo un record.
Nel caso di un'unica tabella, devi modificare la tabella aggiungendo eventuali nuovi campi.
fabianoda
26-04-2006, 13:01
I vantaggi sono numerosi..
primo fra tutti, probabilmente ti servirà avere una lista di tutte le materie a video. Se non hai la tabella con le materie dei fare una SELECT DISTINCT sulla tabella leggi..
inoltre considera che è importantissima una struttura logica chiara del database...
Vi ringrazio tutti, anche se non ho capito il vantaggio delle due tabelle. In quella delle materie avrei solo il campo "id" e il campo "nome materia".
mi sa che ti mancano un po' di fondamenti!
nel caso della tabella unica cadresti nel baratro della ridondanza, mentre il caso della singola tabella per ogni materia è semplicemente assurdo :D
studiati la normalizzazione dei database (http://it.wikipedia.org/wiki/Normalizzazione_del_database)(sto cercando qualche altro link interessante, magari con degli esempi, da postarti).
'iao
Questa guida mi sembra veramente ben fatta: DISPENSE DI INFORMATICA - Il database (http://www.studiamo.it/dispense/informatica/database/index.html) e tratta non solamente della normalizzazione.
Insomma...
...ti consiglio di leggertela :p
'iao
fedelover
26-04-2006, 14:36
Effettivamente sto un po' a zero quanto a nozioni. Ma prima di fare danni sto studiando e chiedendo a voi.
faccio l'avocato mica il programmatore...comunque con un po d'impegno penso di venirne fuori.
Grazie a tutti!
fedelover
26-04-2006, 21:25
Ho adottato tre tabelle.
La principale "norme" in cui id_norma è la chiave primaria
Campo Tipo Null Predefinito
id_norma tinyint(5) No
id_area tinyint(2) No 0
id_fonte tinyint(2) No 0
data date No 0000-00-00
numero smallint(6) Si 0
estremi tinytext No
titolo text Si NULL
volgare varchar(60) Si NULL
numero G.U. smallint(6) Si NULL
data G.U. date Si NULL
testo longtext No
flag varchar(20) Si NULL
poi ci sono la tabella "fonte"
1 Legge
2 Decreto Legge
3 Decreto Legislativo
4 Decreto del Presidente della Repubblica
5 Decreto Ministeriale
6 Regio Decreto
7 Regio Decreto Legge
8 Regio Decreto Legislativo
9 Direttiva CE
10 Regolamento CE
e la tabella "area"
1 Ambiente Territorio
2 Amministrativo Costituzionale
3 Banca Borsa
4 Circolazione Stradale
5 Civile
6 Commerciale Fallimento
7 Condominio Locazioni
8 Edilizia Urbanistica
10 Fisco Tasse
11 Lavoro Previdenza
12 Ordine pubblico
9 Famiglia Successioni
13 Penale
Nella tabella principale al fine di evitare ridondanza richiamo le chiavi primarie delle altre due tabelle che sono id_fonte e id_area
fedelover
26-04-2006, 21:27
Non vorrei mettere troppa carne a cuocere ma ho un altro dubbio da super - dummy.
Quando inserisco il testo della legge per avere i vari articoli separati e con i numeri in grassetto devo inserire nel database direttamente il testo in html con i vari tag di formattazione?
Quando inserisco il testo della legge per avere i vari articoli separati
mmm...separati?
puoi spiegare un po' meglio cosa intendi?
e con i numeri in grassetto devo inserire nel database direttamente il testo in html con i vari tag di formattazione?
si, a meno che tu non voglia definire dei tuoi tag e farli interpretare (e quindi sostituire) dalla tua web app (un po' come avviene per i commenti nei forum).
'iao
fedelover
27-04-2006, 07:51
Andiamo per ordine:
a) la struttura del database è giusta adesso?
b) per articoli separati intendo questo effetto:
Articolo 1
Lo Stato garantisce il diritto alla procreazione cosciente e responsabile, riconosce il valore sociale della maternità e tutela la vita umana dal suo inizio.
L'interruzione volontaria della gravidanza, di cui alla presente legge, non è mezzo per il controllo delle nascite.
Lo Stato, le regioni e gli enti locali, nell'ambito delle proprie funzioni e competenze, promuovono e sviluppano i servizi soci-sanitari, nonchè altre iniziative necessarie per evitare che l'aborto sia usato ai fini della limitazione delle nascite.
Articolo 2
I consultori familiari istituiti dalla legge 29 luglio 1975, n. 405, fermo restando quanto stabilito dalla stessa legge, assistono la donna in stato di gravidanza:
a ) informandola sui diritti a lei spettanti in base alla legislazione statale e regionale, e sui servizi sociali, sanitari e assistenziali concretamente offerti dalle strutture operanti nel territorio;
...
Per ottenere quell'effetto devo incollare il testo della legge nel campo "testo" della tabella principale sotto questa forma:
<h2>Art. 1.</h2>
<BR>
Lo Stato garantisce il diritto alla
procreazione cosciente e responsabile, riconosce il valore sociale della
maternità e tutela la vita umana dal suo inizio.<BR>L'interruzione volontaria
della gravidanza, di cui alla presente legge, non è mezzo per il controllo delle
nascite.<BR>
<H2>Articolo 2H2>Art. 2.
<BR>I consultori familiari istituiti
dalla legge 29 luglio 1975, n. 405, fermo restando quanto stabilito dalla stessa
legge, assistono la donna in stato di gravidanza:<BR>a ) informandola sui
diritti a lei spettanti in base alla legislazione statale e regionale, e sui
servizi sociali, sanitari e assistenziali concretamente offerti dalle strutture
operanti nel territorio;
<BR>...
Oppure ci sono altre soluzioni più semplici?
Andiamo per ordine:
a) la struttura del database è giusta adesso?
no, perchè ora che hai fatto questo esempio è saltata fuori un'altra entità per cui hai bisogno di un'altra tabella!
Ovvero la tabellaaaaaaaaaa...[rullo di tamburiiiiiii]...articoli :D
Così riuscirai a prendere anche solo un'articolo alla volta senza dover fare astrusissime operazioni con le stringhe, inoltre riuscirai ad avere gli articoli separati come vuoi tu senza problemi.
Oppure ci sono altre soluzioni più semplici?
Quella che ti ho appena detto :sofico:
'iao
fedelover
27-04-2006, 09:47
sì ok una tabella articoli, ma me ne servirebbe una per ogni legge praticamente, o mi sbaglio?
Alla fine avrei un database con tante tabelle quante leggi.
sì ok una tabella articoli, ma me ne servirebbe una per ogni legge praticamente, o mi sbaglio?
Alla fine avrei un database con tante tabelle quante leggi.
http://img82.imageshack.us/img82/2467/esempio0al.th.png (http://img82.imageshack.us/my.php?image=esempio0al.png)
Ogni norma fa riferimento ad un'area e ad una fonte.
Ogni articolo fa riferimento ad una norma.
Perchè mai dovresti creare una tabella diversa per gli articoli di ogni legge diversa?
Seguendo questo ragionamento dovresti quindi fare anche una tabella norme per ogni combinazione di valori possibile tra le tabelle aree e fonti.
Vale lo stesso discorso che avevamo fatto in precedenza riguardo alle materie.
Poi questa realizzazione non è l'unica possibile, anzi, ad esempio per quanto riguarda la tabella articoli potresti anche togliere il campo numArticolo, oppure potresti togliere il campo idArticolo e creare una chiave primaria composta dai campi idNorma e numArticolo.
'iao
fedelover
27-04-2006, 14:04
Gentilissimo, non so come ringraziarti!
Nella soluzione con gli artticoli separai c'è però un lato negativo: dovrei inserire ogni articolo manualmente mentre io prenderei le leggi (alcune sono lunghissime) e farei un copia incolla veloce.
In pratica siccome il programma dal quale le copierei genera in pratica delle pagine web vado in visualizzazione html e copio la struttura in html con i vari tag <br> <h1> <h2> ecc per avere la formattazione come ho scritto prima, giusto?
Gentilissimo, non so come ringraziarti!
200 eurini dovrebbero bastare...
:D ovviamente sto scherzando :D
Nella soluzione con gli artticoli separai c'è però un lato negativo: dovrei inserire ogni articolo manualmente mentre io prenderei le leggi (alcune sono lunghissime) e farei un copia incolla veloce.
A meno di non voler fare un algoritmo che parsi (dall'inglese "to parse" :D) i testi delle varie leggi, che li separi in articoli e che infine li inserisca nel database, inserire gli articoli uno ad uno mi sembra l'unica soluzione.
In pratica siccome il programma dal quale le copierei genera in pratica delle pagine web vado in visualizzazione html e copio la struttura in html con i vari tag <br> <h1> <h2> ecc per avere la formattazione come ho scritto prima, giusto?
Si, non dovrebbero esserci controindicazioni, sempre che le pagine html generate non si appoggino a dei fogli di stile. Se così fosse dovrai importare i suddetti fogli di stile nelle pagine che andrai a scrivere tu!
Ma qui stiamo parlando di webmastering uscendo un po' dal topic.
'iao
fedelover
27-04-2006, 15:27
In pratica volevo fare il sito dello studio legale, sono partito da html per poi passare a studiare i css e poi php per i form e poi mysql per i database...sto diventando un webmster!...scadente... :D
comunque mi fermo alla soluzione delle tre tablle come prospettato prima e copio il codice hml nel campo del testo della legge.
In pratica volevo fare il sito dello studio legale, sono partito da html per poi passare a studiare i css e poi php per i form e poi mysql per i database...sto diventando un webmster!...scadente... :D
La strada che seguono un po' tutti!
comunque mi fermo alla soluzione delle tre tablle come prospettato prima e copio il codice hml nel campo del testo della legge.
Non mi sono mai piaciute le cose fatte male, e non è solo una questione teorica, quando dovrete fare una ricerca, modificare un articolo o non so che altro, con la soluzione che adotterai, avrete molta meno flessibilità!
Domandina:
<<Ma a cosa vi serve avere tutte le leggi nel sito internet?>>
Per poterle consultare un po' ovunque o cosa?
'iao
fedelover
27-04-2006, 15:57
Ad avere un po di contenuti così la gente cercando una certa legge becca il nostro sito! :D
E' un'idiozia vero?
Ad avere un po di contenuti così la gente cercando una certa legge becca il nostro sito! :D
E' un'idiozia vero?
Proprio non saprei valutare la bontà del metodo, se possa portare più benefici che smadonnamenti e rotture di palle.
Posso dirti però che tempo fa avevo letto che i crawler dei motori di ricerca hanno (o avevano) dei problemi ad indicizzare i contenuti delle pagine generate dinamicamente!
'iao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.