-
domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 21:18:00.0 alle 2008-06-24 21:18:00.0Trollate totali: 21351(+ teorica che pratica)
in pratica è facile da risolvere, il mio dubbio è piuttosto di natura teorica.
Comunque, supponiamo di avere un insieme di dati ordinati gerarchicamente:
Stato
Regione
Provincia
Località
si crea un insieme di tabelle in cui la relazione gerarchica o di ereditarietà viene espressa esportando nella tabella inferiore l' id del campo superiore, ad esempio:
tabella provincia:
id_provincia
id_regione
nome_provincia
supponiamo poi di avere un dato definito in maniera tale che un suo campo è la località. Fin qui nulla di strano, la tabella del dato avrà un id_localita e con una serie di join sarà possibile ricostruire tutte le relazioni dalla località allo stato.
Supponiamo ora di avere invece un dato poco definito, nel senso che non è in relazione con una località ma con una provincia o addirittura uno stato.
In pratica si potrebbero importare nella tabella di questo dato tutti gli id: id_stato, id_regione, id_provincia etc come campi non obbligatori e pertanto lasciare vuoti quelli non definiti.
Il mio dubbio è il seguente: questo modo di procedere in un databse relazionale come mYSQL non viola le regole per la riduzione alla terza forma normale?
E' un approccio teoricamente legittimo o è applicabile solo nella pratica comune?
The Lich

-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 21:22:00.0 alle 2008-06-24 21:22:00.0
- Scritto da: The Lich
> (+ teorica che pratica)
> in pratica è facile da risolvere, il mio dubbio è
> piuttosto di natura
> teorica.
>
> Comunque, supponiamo di avere un insieme di dati
> ordinati
> gerarchicamente:
>
> Stato
> Regione
> Provincia
> Località
>
> si crea un insieme di tabelle in cui la relazione
> gerarchica o di ereditarietà viene espressa
> esportando nella tabella inferiore l' id del
> campo superiore, ad
> esempio:
>
> tabella provincia:
> id_provincia
> id_regione
> nome_provincia
>
> supponiamo poi di avere un dato definito in
> maniera tale che un suo campo è la località. Fin
> qui nulla di strano, la tabella del dato avrà un
> id_localita e con una serie di join sarà
> possibile ricostruire tutte le relazioni dalla
> località allo
> stato.
>
> Supponiamo ora di avere invece un dato poco
> definito, nel senso che non è in relazione con
> una località ma con una provincia o addirittura
> uno
> stato.
> In pratica si potrebbero importare nella tabella
> di questo dato tutti gli id: id_stato,
> id_regione, id_provincia etc come campi non
> obbligatori e pertanto lasciare vuoti quelli non
> definiti.
>
> Il mio dubbio è il seguente: questo modo di
> procedere in un databse relazionale come mYSQL
> non viola le regole per la riduzione alla terza
> forma normale?
>
> E' un approccio teoricamente legittimo o è
> applicabile solo nella pratica
> comune?
>
> The Lich™
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
la seconda che hai detto-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 21:33:00.0 alle 2008-06-24 21:33:00.0Trollate totali: 21351
- Scritto da:
>
> - Scritto da: The Lich
> > (+ teorica che pratica)
> > in pratica è facile da risolvere, il mio dubbio
> è
> > piuttosto di natura
> > teorica.
> >
> > Comunque, supponiamo di avere un insieme di dati
> > ordinati
> > gerarchicamente:
> >
> > Stato
> > Regione
> > Provincia
> > Località
> >
> > si crea un insieme di tabelle in cui la
> relazione
> > gerarchica o di ereditarietà viene espressa
> > esportando nella tabella inferiore l' id del
> > campo superiore, ad
> > esempio:
> >
> > tabella provincia:
> > id_provincia
> > id_regione
> > nome_provincia
> >
> > supponiamo poi di avere un dato definito in
> > maniera tale che un suo campo è la località. Fin
> > qui nulla di strano, la tabella del dato avrà un
> > id_localita e con una serie di join sarà
> > possibile ricostruire tutte le relazioni dalla
> > località allo
> > stato.
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
> > In pratica si potrebbero importare nella tabella
> > di questo dato tutti gli id: id_stato,
> > id_regione, id_provincia etc come campi non
> > obbligatori e pertanto lasciare vuoti quelli non
> > definiti.
> >
> > Il mio dubbio è il seguente: questo modo di
> > procedere in un databse relazionale come mYSQL
> > non viola le regole per la riduzione alla terza
> > forma normale?
> >
> > E' un approccio teoricamente legittimo o è
> > applicabile solo nella pratica
> > comune?
> >
> la seconda che hai detto
mi piacerebbe che tu espandessi il concetto
The Lich

-
Re: domanda sui database
- Scritto da: The Lich
>
> - Scritto da:
> >
> > - Scritto da: The Lich
> > > (+ teorica che pratica)
> > > in pratica è facile da risolvere, il mio
> dubbio
> > è
> > > piuttosto di natura
> > > teorica.
> > >
> > > Comunque, supponiamo di avere un insieme di
> dati
> > > ordinati
> > > gerarchicamente:
> > >
> > > Stato
> > > Regione
> > > Provincia
> > > Località
> > >
> > > si crea un insieme di tabelle in cui la
> > relazione
> > > gerarchica o di ereditarietà viene espressa
> > > esportando nella tabella inferiore l' id del
> > > campo superiore, ad
> > > esempio:
> > >
> > > tabella provincia:
> > > id_provincia
> > > id_regione
> > > nome_provincia
> > >
> > > supponiamo poi di avere un dato definito in
> > > maniera tale che un suo campo è la località.
> Fin
> > > qui nulla di strano, la tabella del dato avrà
> un
> > > id_localita e con una serie di join sarà
> > > possibile ricostruire tutte le relazioni dalla
> > > località allo
> > > stato.
> > >
> > > Supponiamo ora di avere invece un dato poco
> > > definito, nel senso che non è in relazione con
> > > una località ma con una provincia o
> addirittura
> > > uno
> > > stato.
> > > In pratica si potrebbero importare nella
> tabella
> > > di questo dato tutti gli id: id_stato,
> > > id_regione, id_provincia etc come campi non
> > > obbligatori e pertanto lasciare vuoti quelli
> non
> > > definiti.
> > >
> > > Il mio dubbio è il seguente: questo modo di
> > > procedere in un databse relazionale come mYSQL
> > > non viola le regole per la riduzione alla
> terza
> > > forma normale?
> > >
> > > E' un approccio teoricamente legittimo o è
> > > applicabile solo nella pratica
> > > comune?
> > >
> > la seconda che hai detto
>
> mi piacerebbe che tu espandessi il concetto
>
> The Lich
>
>
come mai vieni a chiedere queste cose al forum ?
aristotele non ne aveva parlato ?-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 22:14:00.0 alle 2008-06-24 22:14:00.0Trollate totali: 21351- Scritto da: shevathas
>
> - Scritto da: The Lich
> >
> > - Scritto da:
> > >
> > > - Scritto da: The Lich
> > > > (+ teorica che pratica)
> > > > in pratica è facile da risolvere, il mio
> > dubbio
> > > è
> > > > piuttosto di natura
> > > > teorica.
> > > >
> > > > Comunque, supponiamo di avere un insieme di
> > dati
> > > > ordinati
> > > > gerarchicamente:
> > > >
> > > > Stato
> > > > Regione
> > > > Provincia
> > > > Località
> > > >
> > > > si crea un insieme di tabelle in cui la
> > > relazione
> > > > gerarchica o di ereditarietà viene espressa
> > > > esportando nella tabella inferiore l' id del
> > > > campo superiore, ad
> > > > esempio:
> > > >
> > > > tabella provincia:
> > > > id_provincia
> > > > id_regione
> > > > nome_provincia
> > > >
> > > > supponiamo poi di avere un dato definito in
> > > > maniera tale che un suo campo è la località.
> > Fin
> > > > qui nulla di strano, la tabella del dato
> avrà
> > un
> > > > id_localita e con una serie di join sarà
> > > > possibile ricostruire tutte le relazioni
> dalla
> > > > località allo
> > > > stato.
> > > >
> > > > Supponiamo ora di avere invece un dato poco
> > > > definito, nel senso che non è in relazione
> con
> > > > una località ma con una provincia o
> > addirittura
> > > > uno
> > > > stato.
> > > > In pratica si potrebbero importare nella
> > tabella
> > > > di questo dato tutti gli id: id_stato,
> > > > id_regione, id_provincia etc come campi non
> > > > obbligatori e pertanto lasciare vuoti quelli
> > non
> > > > definiti.
> > > >
> > > > Il mio dubbio è il seguente: questo modo di
> > > > procedere in un databse relazionale come
> mYSQL
> > > > non viola le regole per la riduzione alla
> > terza
> > > > forma normale?
> > > >
> > > > E' un approccio teoricamente legittimo o è
> > > > applicabile solo nella pratica
> > > > comune?
> > > >
> > > la seconda che hai detto
> >
> > mi piacerebbe che tu espandessi il concetto
> >
> >
> come mai vieni a chiedere queste cose al forum ?
> aristotele non ne aveva parlato ?
se non lo sapete voi cattolici che credete ancora che il sole giri intorno alla terra e che le donne non partecipino attivamente al processo riproduttivo...
The Lich

-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 21:40:00.0 alle 2008-06-24 21:40:00.0
- Scritto da: The Lich
>
> - Scritto da:
> >
> > - Scritto da: The Lich
> > > (+ teorica che pratica)
> > > in pratica è facile da risolvere, il mio
> dubbio
> > è
> > > piuttosto di natura
> > > teorica.
> > >
> > > Comunque, supponiamo di avere un insieme di
> dati
> > > ordinati
> > > gerarchicamente:
> > >
> > > Stato
> > > Regione
> > > Provincia
> > > Località
> > >
> > > si crea un insieme di tabelle in cui la
> > relazione
> > > gerarchica o di ereditarietà viene espressa
> > > esportando nella tabella inferiore l' id del
> > > campo superiore, ad
> > > esempio:
> > >
> > > tabella provincia:
> > > id_provincia
> > > id_regione
> > > nome_provincia
> > >
> > > supponiamo poi di avere un dato definito in
> > > maniera tale che un suo campo è la località.
> Fin
> > > qui nulla di strano, la tabella del dato avrà
> un
> > > id_localita e con una serie di join sarà
> > > possibile ricostruire tutte le relazioni dalla
> > > località allo
> > > stato.
> > >
> > > Supponiamo ora di avere invece un dato poco
> > > definito, nel senso che non è in relazione con
> > > una località ma con una provincia o
> addirittura
> > > uno
> > > stato.
> > > In pratica si potrebbero importare nella
> tabella
> > > di questo dato tutti gli id: id_stato,
> > > id_regione, id_provincia etc come campi non
> > > obbligatori e pertanto lasciare vuoti quelli
> non
> > > definiti.
> > >
> > > Il mio dubbio è il seguente: questo modo di
> > > procedere in un databse relazionale come mYSQL
> > > non viola le regole per la riduzione alla
> terza
> > > forma normale?
> > >
> > > E' un approccio teoricamente legittimo o è
> > > applicabile solo nella pratica
> > > comune?
> > >
> > la seconda che hai detto
>
> mi piacerebbe che tu espandessi il concetto
>
> The Lich
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
sei tu quello intelligente
sti italioti medi
-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 21:25:00.0 alle 2008-06-24 21:25:00.0
- Scritto da: The Lich
> (+ teorica che pratica)
> in pratica è facile da risolvere, il mio dubbio è
> piuttosto di natura
> teorica.
>
> Comunque, supponiamo di avere un insieme di dati
> ordinati
> gerarchicamente:
>
> Stato
> Regione
> Provincia
> Località
>
> si crea un insieme di tabelle in cui la relazione
> gerarchica o di ereditarietà viene espressa
> esportando nella tabella inferiore l' id del
> campo superiore, ad
> esempio:
>
> tabella provincia:
> id_provincia
> id_regione
> nome_provincia
>
> supponiamo poi di avere un dato definito in
> maniera tale che un suo campo è la località. Fin
> qui nulla di strano, la tabella del dato avrà un
> id_localita e con una serie di join sarà
> possibile ricostruire tutte le relazioni dalla
> località allo
> stato.
>
> Supponiamo ora di avere invece un dato poco
> definito, nel senso che non è in relazione con
> una località ma con una provincia o addirittura
> uno
> stato.
> In pratica si potrebbero importare nella tabella
> di questo dato tutti gli id: id_stato,
> id_regione, id_provincia etc come campi non
> obbligatori e pertanto lasciare vuoti quelli non
> definiti.
>
> Il mio dubbio è il seguente: questo modo di
> procedere in un databse relazionale come mYSQL
> non viola le regole per la riduzione alla terza
> forma normale?
>
> E' un approccio teoricamente legittimo o è
> applicabile solo nella pratica
> comune?
>
> The Lich™
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
Ma utilizzare un database serio come Access, invece che quella ciofeca di MySQL?-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 21:32:00.0 alle 2008-06-24 21:32:00.0Trollate totali: 21351
- Scritto da:
>
> - Scritto da: The Lich
> > (+ teorica che pratica)
> > in pratica è facile da risolvere, il mio dubbio
> è
> > piuttosto di natura
> > teorica.
> >
> > Comunque, supponiamo di avere un insieme di dati
> > ordinati
> > gerarchicamente:
> >
> > Stato
> > Regione
> > Provincia
> > Località
> >
> > si crea un insieme di tabelle in cui la
> relazione
> > gerarchica o di ereditarietà viene espressa
> > esportando nella tabella inferiore l' id del
> > campo superiore, ad
> > esempio:
> >
> > tabella provincia:
> > id_provincia
> > id_regione
> > nome_provincia
> >
> > supponiamo poi di avere un dato definito in
> > maniera tale che un suo campo è la località. Fin
> > qui nulla di strano, la tabella del dato avrà un
> > id_localita e con una serie di join sarà
> > possibile ricostruire tutte le relazioni dalla
> > località allo
> > stato.
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
> > In pratica si potrebbero importare nella tabella
> > di questo dato tutti gli id: id_stato,
> > id_regione, id_provincia etc come campi non
> > obbligatori e pertanto lasciare vuoti quelli non
> > definiti.
> >
> > Il mio dubbio è il seguente: questo modo di
> > procedere in un databse relazionale come mYSQL
> > non viola le regole per la riduzione alla terza
> > forma normale?
> >
> > E' un approccio teoricamente legittimo o è
> > applicabile solo nella pratica
> > comune?
> >
>
> Ma utilizzare un database serio come Access,
> invece che quella ciofeca di
> MySQL?
ma sei ubriaco o fumato?
The Lich

-
-
Re: domanda sui database
- Scritto da: The Lich
> (+ teorica che pratica)
> in pratica è facile da risolvere, il mio dubbio è
> piuttosto di natura
> teorica.
>
> Comunque, supponiamo di avere un insieme di dati
> ordinati
> gerarchicamente:
>
> Stato
> Regione
> Provincia
> Località
>
> si crea un insieme di tabelle in cui la relazione
> gerarchica o di ereditarietà viene espressa
> esportando nella tabella inferiore l' id del
> campo superiore, ad
> esempio:
>
> tabella provincia:
> id_provincia
> id_regione
> nome_provincia
>
> supponiamo poi di avere un dato definito in
> maniera tale che un suo campo è la località. Fin
> qui nulla di strano, la tabella del dato avrà un
> id_localita e con una serie di join sarà
> possibile ricostruire tutte le relazioni dalla
> località allo
> stato.
>
> Supponiamo ora di avere invece un dato poco
> definito, nel senso che non è in relazione con
> una località ma con una provincia o addirittura
> uno
> stato.
> In pratica si potrebbero importare nella tabella
> di questo dato tutti gli id: id_stato,
> id_regione, id_provincia etc come campi non
> obbligatori e pertanto lasciare vuoti quelli non
> definiti.
>
> Il mio dubbio è il seguente: questo modo di
> procedere in un databse relazionale come mYSQL
> non viola le regole per la riduzione alla terza
> forma normale?
>
Dipende dalle relazioni tra gli attributi non chiave... in poche parole BUH, potrebbe.
> E' un approccio teoricamente legittimo o è
> applicabile solo nella pratica
> comune?
>
Per esperienza la normalizzazione non è il sacro graal, ci possono essere buoni motivi per avere una base di dati non completamente normalizzata. Anzi, a volte dopo averla normalizzata fai uno step indietro per motivi di performance o perchè in teoria certi dati dovrebbero essere definiti in un certo modo ma questo va a scontrarsi con l'uso che ne fanno gli utenti.-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 22:02:00.0 alle 2008-06-24 22:02:00.0Trollate totali: 21351
- Scritto da: Forum dei troll
>
> - Scritto da: The Lich
> > (+ teorica che pratica)
> > in pratica è facile da risolvere, il mio dubbio
> è
> > piuttosto di natura
> > teorica.
> >
> > Comunque, supponiamo di avere un insieme di dati
> > ordinati
> > gerarchicamente:
> >
> > Stato
> > Regione
> > Provincia
> > Località
> >
> > si crea un insieme di tabelle in cui la
> relazione
> > gerarchica o di ereditarietà viene espressa
> > esportando nella tabella inferiore l' id del
> > campo superiore, ad
> > esempio:
> >
> > tabella provincia:
> > id_provincia
> > id_regione
> > nome_provincia
> >
> > supponiamo poi di avere un dato definito in
> > maniera tale che un suo campo è la località. Fin
> > qui nulla di strano, la tabella del dato avrà un
> > id_localita e con una serie di join sarà
> > possibile ricostruire tutte le relazioni dalla
> > località allo
> > stato.
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
> > In pratica si potrebbero importare nella tabella
> > di questo dato tutti gli id: id_stato,
> > id_regione, id_provincia etc come campi non
> > obbligatori e pertanto lasciare vuoti quelli non
> > definiti.
> >
> > Il mio dubbio è il seguente: questo modo di
> > procedere in un databse relazionale come mYSQL
> > non viola le regole per la riduzione alla terza
> > forma normale?
> >
>
> Dipende dalle relazioni tra gli attributi non
> chiave... in poche parole BUH,
> potrebbe.
>
> > E' un approccio teoricamente legittimo o è
> > applicabile solo nella pratica
> > comune?
> >
>
> Per esperienza la normalizzazione non è il sacro
> graal, ci possono essere buoni motivi per avere
> una base di dati non completamente normalizzata.
> Anzi, a volte dopo averla normalizzata fai uno
> step indietro per motivi di performance o perchè
> in teoria certi dati dovrebbero essere definiti
> in un certo modo ma questo va a scontrarsi con
> l'uso che ne fanno gli
> utenti.
Dorbolò Guidi Guida a SQL pagina 30?
The Lich

-
Re: domanda sui database
- Scritto da: The Lich
>
>
> Dorbolò Guidi Guida a SQL pagina 30?
>
> The Lich
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
Lo trovi su tutti i libri seri...
Se poi usi mysql le relazioni dovrai comunque garantirle via software.
Dovresti descrivere per intero il problema, magari si trovano modelli alternativi.
Ad esempio, regioni, provincie, paesi, sono luoghi e potrebbero essere descritti con gli stessi campi. Quindi potresti trasferire la struttura gerarchica da piu' tabelle ad una sola (magari con un nested tree). La tua entita' non avrebbe piu' i problemi che lamentavi prima dovendo referenziare sempre e comunque un luogo.-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 02:08:00.0 alle 2008-06-25 02:08:00.0- Scritto da: kotaro
> Lo trovi su tutti i libri seri...
ah beh e se ce lo dici tu
> Se poi usi mysql le relazioni dovrai comunque
> garantirle via
ma in quella cacca di prodotto le foreign key non avevano implementate alla fine? ricordo ancora il manuale dove dicevano che erano implementati solo i comandi per compatibilità ma che dietro le quinte non vincolavano un bel niente per via delle cattive prestazioni
proprio un bel prodottino... infatti ha subito sbancato tra gli ignorantoni
-
Re: domanda sui database- Scritto da:
> - Scritto da: kotaro
> > Lo trovi su tutti i libri seri...
>
> ah beh e se ce lo dici tu
>
> > Se poi usi mysql le relazioni dovrai comunque
> > garantirle via
>
> ma in quella cacca di prodotto le foreign key non
> avevano implementate alla fine? ricordo ancora il
> manuale dove dicevano che erano implementati solo
> i comandi per compatibilità ma che dietro le
> quinte non vincolavano un bel niente per via
> delle cattive prestazioni
proprio un bel
> prodottino... infatti ha subito sbancato tra gli
> ignorantoni
Mysql ha diversi "storage engine", io uso myisam che non le supporta e, probabilmente, non le supportera' mai. InnoDB supporta le foreign key oltre a tante altre cose che ne fanno l'engine piu' completo di mysql ma anche il piu' lento.
Mysql fa bene quello che promette e lo fa piu' velocemente di altri prodotti, quindi non mi sembra un prodottino. Ignoranza e' scegliere strumenti che poi comportano un eccessivo lavoro per adattarli alle proprie esigenze o, peggio di tutti, piegare le proprie esigenze agli strumenti scelti.
Mia modesta opinione...
PS. pure io preferirei che la struttura del db fosse contenuta esclusivamente ne db stesso, ma vorrei pure buone prestazioni.
-
-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 02:05:00.0 alle 2008-06-25 02:05:00.0- Scritto da: Forum dei troll
>
> - Scritto da: The Lich
> > (+ teorica che pratica)
> > in pratica è facile da risolvere, il mio dubbio
> è
> > piuttosto di natura
> > teorica.
> >
> > Comunque, supponiamo di avere un insieme di dati
> > ordinati
> > gerarchicamente:
> >
> > Stato
> > Regione
> > Provincia
> > Località
> >
> > si crea un insieme di tabelle in cui la
> relazione
> > gerarchica o di ereditarietà viene espressa
> > esportando nella tabella inferiore l' id del
> > campo superiore, ad
> > esempio:
> >
> > tabella provincia:
> > id_provincia
> > id_regione
> > nome_provincia
> >
> > supponiamo poi di avere un dato definito in
> > maniera tale che un suo campo è la località. Fin
> > qui nulla di strano, la tabella del dato avrà un
> > id_localita e con una serie di join sarà
> > possibile ricostruire tutte le relazioni dalla
> > località allo
> > stato.
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
> > In pratica si potrebbero importare nella tabella
> > di questo dato tutti gli id: id_stato,
> > id_regione, id_provincia etc come campi non
> > obbligatori e pertanto lasciare vuoti quelli non
> > definiti.
> >
> > Il mio dubbio è il seguente: questo modo di
> > procedere in un databse relazionale come mYSQL
> > non viola le regole per la riduzione alla terza
> > forma normale?
> >
>
> Dipende dalle relazioni tra gli attributi non
> chiave... in poche parole BUH,
> potrebbe.
>
> > E' un approccio teoricamente legittimo o è
> > applicabile solo nella pratica
> > comune?
> >
>
> Per esperienza la normalizzazione non è il sacro
> graal, ci possono essere buoni motivi per avere
> una base di dati non completamente normalizzata.
> Anzi, a volte dopo averla normalizzata fai uno
> step indietro per motivi di performance o perchè
> in teoria certi dati dovrebbero essere definiti
> in un certo modo ma questo va a scontrarsi con
> l'uso che ne fanno gli
> utenti.
A livello concettuale la normalizzazione è fondamentale altrimenti non riesci neanche a capire quali sono le dipendenze funzionali tra i dati. Poi quando implementi fisicamente puoi decidere quanto vuoi farti male vs quanto vuoi essere veloce.
Purtroppo oggi il modello concettuale non lo fa più nessuno perché son tutti convinti di essere degli analisti coi baffi in grado di comprendere le cose al volo. E la stragrande maggioranza dei database è lì a testimoniare l'incredbile ignoranza che dilaga.
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 21:39:00.0 alle 2008-06-24 21:39:00.0
- Scritto da: The Lich
> (+ teorica che pratica)
> in pratica è facile da risolvere, il mio dubbio è
> piuttosto di natura
> teorica.
>
> Comunque, supponiamo di avere un insieme di dati
> ordinati
> gerarchicamente:
>
> Stato
> Regione
> Provincia
> Località
>
> si crea un insieme di tabelle in cui la relazione
> gerarchica o di ereditarietà viene espressa
> esportando nella tabella inferiore l' id del
> campo superiore, ad
> esempio:
>
> tabella provincia:
> id_provincia
> id_regione
> nome_provincia
>
> supponiamo poi di avere un dato definito in
> maniera tale che un suo campo è la località. Fin
> qui nulla di strano, la tabella del dato avrà un
> id_localita e con una serie di join sarà
> possibile ricostruire tutte le relazioni dalla
> località allo
> stato.
>
> Supponiamo ora di avere invece un dato poco
> definito, nel senso che non è in relazione con
> una località ma con una provincia o addirittura
> uno
> stato.
> In pratica si potrebbero importare nella tabella
> di questo dato tutti gli id: id_stato,
> id_regione, id_provincia etc come campi non
> obbligatori e pertanto lasciare vuoti quelli non
> definiti.
>
> Il mio dubbio è il seguente: questo modo di
> procedere in un databse relazionale come mYSQL
> non viola le regole per la riduzione alla terza
> forma normale?
>
> E' un approccio teoricamente legittimo o è
> applicabile solo nella pratica
> comune?
>
> The Lich
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
se pensiamo a stato provincia località come alle specializzazioni di uno stesso concetto, chiamato ad esempio zona, potresti produrre una relazione tra zona e dato poco_definito
tradotto poi dallo schema concettuale allo schema logico diverrebbero comunque tre tabelle e se la relazione è 1-n tre campi nella tabella che rappresenta il dato poco_definito
IMHO-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 22:00:00.0 alle 2008-06-24 22:00:00.0Trollate totali: 21351- Scritto da:
>
> - Scritto da: The Lich
> > (+ teorica che pratica)
> > in pratica è facile da risolvere, il mio dubbio
> è
> > piuttosto di natura
> > teorica.
> >
> > Comunque, supponiamo di avere un insieme di dati
> > ordinati
> > gerarchicamente:
> >
> > Stato
> > Regione
> > Provincia
> > Località
> >
> > si crea un insieme di tabelle in cui la
> relazione
> > gerarchica o di ereditarietà viene espressa
> > esportando nella tabella inferiore l' id del
> > campo superiore, ad
> > esempio:
> >
> > tabella provincia:
> > id_provincia
> > id_regione
> > nome_provincia
> >
> > supponiamo poi di avere un dato definito in
> > maniera tale che un suo campo è la località. Fin
> > qui nulla di strano, la tabella del dato avrà un
> > id_localita e con una serie di join sarà
> > possibile ricostruire tutte le relazioni dalla
> > località allo
> > stato.
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
> > In pratica si potrebbero importare nella tabella
> > di questo dato tutti gli id: id_stato,
> > id_regione, id_provincia etc come campi non
> > obbligatori e pertanto lasciare vuoti quelli non
> > definiti.
> >
> > Il mio dubbio è il seguente: questo modo di
> > procedere in un databse relazionale come mYSQL
> > non viola le regole per la riduzione alla terza
> > forma normale?
> >
> > E' un approccio teoricamente legittimo o è
> > applicabile solo nella pratica
> > comune?
> >
>
> se pensiamo a stato provincia località come alle
> specializzazioni di uno stesso concetto, chiamato
> ad esempio zona, potresti produrre una relazione
> tra zona e dato
> poco_definito
>
> tradotto poi dallo schema concettuale allo schema
> logico diverrebbero comunque tre tabelle e se la
> relazione è 1-n tre campi nella tabella che
> rappresenta il dato
> poco_definito
gira e rigira esattamente come ho fatto: invece di zona località e gli id nella tabella del dato poco definito
quello che volevo sapere non era l' implementazione pratica ma la correttezza teorica
The Lich

-----------------------------------------------------------
Modificato dall' autore il 24 giugno 2008 22.01
------------------------------------------------------------
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:06:00.0 alle 2008-06-24 22:06:00.0- Scritto da: The Lich
> - Scritto da:
> >
> > - Scritto da: The Lich
> > > (+ teorica che pratica)
> > > in pratica è facile da risolvere, il mio
> dubbio
> > è
> > > piuttosto di natura
> > > teorica.
> > >
> > > Comunque, supponiamo di avere un insieme di
> dati
> > > ordinati
> > > gerarchicamente:
> > >
> > > Stato
> > > Regione
> > > Provincia
> > > Località
> > >
> > > si crea un insieme di tabelle in cui la
> > relazione
> > > gerarchica o di ereditarietà viene espressa
> > > esportando nella tabella inferiore l' id del
> > > campo superiore, ad
> > > esempio:
> > >
> > > tabella provincia:
> > > id_provincia
> > > id_regione
> > > nome_provincia
> > >
> > > supponiamo poi di avere un dato definito in
> > > maniera tale che un suo campo è la località.
> Fin
> > > qui nulla di strano, la tabella del dato avrà
> un
> > > id_localita e con una serie di join sarà
> > > possibile ricostruire tutte le relazioni dalla
> > > località allo
> > > stato.
> > >
> > > Supponiamo ora di avere invece un dato poco
> > > definito, nel senso che non è in relazione con
> > > una località ma con una provincia o
> addirittura
> > > uno
> > > stato.
> > > In pratica si potrebbero importare nella
> tabella
> > > di questo dato tutti gli id: id_stato,
> > > id_regione, id_provincia etc come campi non
> > > obbligatori e pertanto lasciare vuoti quelli
> non
> > > definiti.
> > >
> > > Il mio dubbio è il seguente: questo modo di
> > > procedere in un databse relazionale come mYSQL
> > > non viola le regole per la riduzione alla
> terza
> > > forma normale?
> > >
> > > E' un approccio teoricamente legittimo o è
> > > applicabile solo nella pratica
> > > comune?
> > >
> >
> > se pensiamo a stato provincia località come alle
> > specializzazioni di uno stesso concetto,
> chiamato
> > ad esempio zona, potresti produrre una relazione
> > tra zona e dato
> > poco_definito
> >
> > tradotto poi dallo schema concettuale allo
> schema
> > logico diverrebbero comunque tre tabelle e se la
> > relazione è 1-n tre campi nella tabella che
> > rappresenta il dato
> > poco_definito
>
> gira e rigira esattamente come ho fatto: invece
> di zona località e gli id nella tabella del dato
> poco
> definito
>
> quello che volevo sapere non era l'
> implementazione pratica ma la correttezza
> teorica
>
> The Lich
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
> --------------------------------------------------
> Modificato dall' autore il 24 giugno 2008 22.01
> --------------------------------------------------
per questo ho parlato del modello concettuale: hai tre entità derivate da un'unica entità padre e la relazione del dato poco definito è con l'entità padre
Il problema ti si presenta dopo, quando vai a rappresentare questo modello con delle tabelle perché non puoi rappresentare in modo soddisfacente il legame tra l'entità base e quelle derivate...-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 22:11:00.0 alle 2008-06-24 22:11:00.0Trollate totali: 21351- Scritto da:
> - Scritto da: The Lich
> > - Scritto da:
> > >
> > > - Scritto da: The Lich
> > > > (+ teorica che pratica)
> > > > in pratica è facile da risolvere, il mio
> > dubbio
> > > è
> > > > piuttosto di natura
> > > > teorica.
> > > >
> > > > Comunque, supponiamo di avere un insieme di
> > dati
> > > > ordinati
> > > > gerarchicamente:
> > > >
> > > > Stato
> > > > Regione
> > > > Provincia
> > > > Località
> > > >
> > > > si crea un insieme di tabelle in cui la
> > > relazione
> > > > gerarchica o di ereditarietà viene espressa
> > > > esportando nella tabella inferiore l' id del
> > > > campo superiore, ad
> > > > esempio:
> > > >
> > > > tabella provincia:
> > > > id_provincia
> > > > id_regione
> > > > nome_provincia
> > > >
> > > > supponiamo poi di avere un dato definito in
> > > > maniera tale che un suo campo è la località.
> > Fin
> > > > qui nulla di strano, la tabella del dato
> avrà
> > un
> > > > id_localita e con una serie di join sarà
> > > > possibile ricostruire tutte le relazioni
> dalla
> > > > località allo
> > > > stato.
> > > >
> > > > Supponiamo ora di avere invece un dato poco
> > > > definito, nel senso che non è in relazione
> con
> > > > una località ma con una provincia o
> > addirittura
> > > > uno
> > > > stato.
> > > > In pratica si potrebbero importare nella
> > tabella
> > > > di questo dato tutti gli id: id_stato,
> > > > id_regione, id_provincia etc come campi non
> > > > obbligatori e pertanto lasciare vuoti quelli
> > non
> > > > definiti.
> > > >
> > > > Il mio dubbio è il seguente: questo modo di
> > > > procedere in un databse relazionale come
> mYSQL
> > > > non viola le regole per la riduzione alla
> > terza
> > > > forma normale?
> > > >
> > > > E' un approccio teoricamente legittimo o è
> > > > applicabile solo nella pratica
> > > > comune?
> > > >
> > >
> > > se pensiamo a stato provincia località come
> alle
> > > specializzazioni di uno stesso concetto,
> > chiamato
> > > ad esempio zona, potresti produrre una
> relazione
> > > tra zona e dato
> > > poco_definito
> > >
> > > tradotto poi dallo schema concettuale allo
> > schema
> > > logico diverrebbero comunque tre tabelle e se
> la
> > > relazione è 1-n tre campi nella tabella che
> > > rappresenta il dato
> > > poco_definito
> >
> > gira e rigira esattamente come ho fatto: invece
> > di zona località e gli id nella tabella del dato
> > poco
> > definito
> >
> > quello che volevo sapere non era l'
> > implementazione pratica ma la correttezza
> > teorica
> >
> >
> --------------------------------------------------
> > Modificato dall' autore il 24 giugno 2008 22.01
> >
> --------------------------------------------------
>
> per questo ho parlato del modello concettuale:
> hai tre entità derivate da un'unica entità padre
in realtà sono in relazione di ereditarietà l'una rispetto all' altra
> e la relazione del dato poco definito è con
> l'entità
> padre
può esserlo con tutte e tre questo è il problema, potrò sbagliarmi ma la teoria relazionale non risolve bene questo problema, a naso direi che viene modellato meglio da un database ad oggetti che ammette ereditarietà
> Il problema ti si presenta dopo, quando vai a
> rappresentare questo modello con delle tabelle
> perché non puoi rappresentare in modo
> soddisfacente il legame tra l'entità base e
> quelle
> derivate...
per me è un modo di complicare le cose...
tutte le entità derivano da stato e sono in relazione gerarchica, su questo non si discute
The Lich

-----------------------------------------------------------
Modificato dall' autore il 24 giugno 2008 22.12
------------------------------------------------------------
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:17:00.0 alle 2008-06-24 22:17:00.0
- Scritto da: The Lich
> - Scritto da:
> > - Scritto da: The Lich
> > > - Scritto da:
> > > >
> > > > - Scritto da: The Lich
> > > > > (+ teorica che pratica)
> > > > > in pratica è facile da risolvere, il mio
> > > dubbio
> > > > è
> > > > > piuttosto di natura
> > > > > teorica.
> > > > >
> > > > > Comunque, supponiamo di avere un insieme
> di
> > > dati
> > > > > ordinati
> > > > > gerarchicamente:
> > > > >
> > > > > Stato
> > > > > Regione
> > > > > Provincia
> > > > > Località
> > > > >
> > > > > si crea un insieme di tabelle in cui la
> > > > relazione
> > > > > gerarchica o di ereditarietà viene
> espressa
> > > > > esportando nella tabella inferiore l' id
> del
> > > > > campo superiore, ad
> > > > > esempio:
> > > > >
> > > > > tabella provincia:
> > > > > id_provincia
> > > > > id_regione
> > > > > nome_provincia
> > > > >
> > > > > supponiamo poi di avere un dato definito
> in
> > > > > maniera tale che un suo campo è la
> località.
> > > Fin
> > > > > qui nulla di strano, la tabella del dato
> > avrà
> > > un
> > > > > id_localita e con una serie di join sarà
> > > > > possibile ricostruire tutte le relazioni
> > dalla
> > > > > località allo
> > > > > stato.
> > > > >
> > > > > Supponiamo ora di avere invece un dato
> poco
> > > > > definito, nel senso che non è in relazione
> > con
> > > > > una località ma con una provincia o
> > > addirittura
> > > > > uno
> > > > > stato.
> > > > > In pratica si potrebbero importare nella
> > > tabella
> > > > > di questo dato tutti gli id: id_stato,
> > > > > id_regione, id_provincia etc come campi
> non
> > > > > obbligatori e pertanto lasciare vuoti
> quelli
> > > non
> > > > > definiti.
> > > > >
> > > > > Il mio dubbio è il seguente: questo modo
> di
> > > > > procedere in un databse relazionale come
> > mYSQL
> > > > > non viola le regole per la riduzione alla
> > > terza
> > > > > forma normale?
> > > > >
> > > > > E' un approccio teoricamente legittimo o è
> > > > > applicabile solo nella pratica
> > > > > comune?
> > > > >
> > > >
> > > > se pensiamo a stato provincia località come
> > alle
> > > > specializzazioni di uno stesso concetto,
> > > chiamato
> > > > ad esempio zona, potresti produrre una
> > relazione
> > > > tra zona e dato
> > > > poco_definito
> > > >
> > > > tradotto poi dallo schema concettuale allo
> > > schema
> > > > logico diverrebbero comunque tre tabelle e
> se
> > la
> > > > relazione è 1-n tre campi nella tabella che
> > > > rappresenta il dato
> > > > poco_definito
> > >
> > > gira e rigira esattamente come ho fatto:
> invece
> > > di zona località e gli id nella tabella del
> dato
> > > poco
> > > definito
> > >
> > > quello che volevo sapere non era l'
> > > implementazione pratica ma la correttezza
> > > teorica
> > >
> > >
> >
> --------------------------------------------------
> > > Modificato dall' autore il 24 giugno 2008
> 22.01
> > >
> >
> --------------------------------------------------
> >
> > per questo ho parlato del modello concettuale:
> > hai tre entità derivate da un'unica entità padre
>
> in realtà sono in relazione di ereditarietà l'una
> rispetto all'
> altra
se intendi la relazione gerarchica stato->regione->provincia->sticazzi quella è un'altra relazione diversa dell'entità padre su sé stessa, ma non è di quella che sto parlando.
Se invece intendi ereditarietà Stato(Zona) Regione(Zona) Provincia(Zona) Sticazzi(Zona) allora hai capito bene. *
Per spiegarmi meglio dovrei disegnartelo e temo che non lo farò
>
> > e la relazione del dato poco definito è con
> > l'entità
> > padre
>
> può esserlo con tutte e tre questo è il problema,
* No, hai capito male
> potrò sbagliarmi ma la teoria relazionale non
> risolve bene questo problema, a naso direi che
> viene modellato meglio da un database ad oggetti
> che ammette
> ereditarietà
>
> > Il problema ti si presenta dopo, quando vai a
> > rappresentare questo modello con delle tabelle
> > perché non puoi rappresentare in modo
> > soddisfacente il legame tra l'entità base e
> > quelle
> > derivate...
>
> per me è un modo di complicare le cose...
ma spiega a livello teorico quello che hai fatto a naso
>
> tutte le entità derivano da stato e sono in
> relazione gerarchica, su questo non si
> discute
>
> The Lich
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
> --------------------------------------------------
> Modificato dall' autore il 24 giugno 2008 22.12
> --------------------------------------------------
-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 22:52:00.0 alle 2008-06-24 22:52:00.0Trollate totali: 21351
- Scritto da:
>
> - Scritto da: The Lich
> > - Scritto da:
> > > - Scritto da: The Lich
> > > > - Scritto da:
> > > > >
> > > > > - Scritto da: The Lich
> > > > > > (+ teorica che pratica)
> > > > > > in pratica è facile da risolvere, il mio
> > > > dubbio
> > > > > è
> > > > > > piuttosto di natura
> > > > > > teorica.
> > > > > >
> > > > > > Comunque, supponiamo di avere un insieme
> > di
> > > > dati
> > > > > > ordinati
> > > > > > gerarchicamente:
> > > > > >
> > > > > > Stato
> > > > > > Regione
> > > > > > Provincia
> > > > > > Località
> > > > > >
> > > > > > si crea un insieme di tabelle in cui la
> > > > > relazione
> > > > > > gerarchica o di ereditarietà viene
> > espressa
> > > > > > esportando nella tabella inferiore l' id
> > del
> > > > > > campo superiore, ad
> > > > > > esempio:
> > > > > >
> > > > > > tabella provincia:
> > > > > > id_provincia
> > > > > > id_regione
> > > > > > nome_provincia
> > > > > >
> > > > > > supponiamo poi di avere un dato definito
> > in
> > > > > > maniera tale che un suo campo è la
> > località.
> > > > Fin
> > > > > > qui nulla di strano, la tabella del dato
> > > avrà
> > > > un
> > > > > > id_localita e con una serie di join sarà
> > > > > > possibile ricostruire tutte le relazioni
> > > dalla
> > > > > > località allo
> > > > > > stato.
> > > > > >
> > > > > > Supponiamo ora di avere invece un dato
> > poco
> > > > > > definito, nel senso che non è in
> relazione
> > > con
> > > > > > una località ma con una provincia o
> > > > addirittura
> > > > > > uno
> > > > > > stato.
> > > > > > In pratica si potrebbero importare nella
> > > > tabella
> > > > > > di questo dato tutti gli id: id_stato,
> > > > > > id_regione, id_provincia etc come campi
> > non
> > > > > > obbligatori e pertanto lasciare vuoti
> > quelli
> > > > non
> > > > > > definiti.
> > > > > >
> > > > > > Il mio dubbio è il seguente: questo modo
> > di
> > > > > > procedere in un databse relazionale come
> > > mYSQL
> > > > > > non viola le regole per la riduzione
> alla
> > > > terza
> > > > > > forma normale?
> > > > > >
> > > > > > E' un approccio teoricamente legittimo
> o
> è
> > > > > > applicabile solo nella pratica
> > > > > > comune?
> > > > > >
> > > > >
> > > > > se pensiamo a stato provincia località
> come
> > > alle
> > > > > specializzazioni di uno stesso concetto,
> > > > chiamato
> > > > > ad esempio zona, potresti produrre una
> > > relazione
> > > > > tra zona e dato
> > > > > poco_definito
> > > > >
> > > > > tradotto poi dallo schema concettuale allo
> > > > schema
> > > > > logico diverrebbero comunque tre tabelle e
> > se
> > > la
> > > > > relazione è 1-n tre campi nella tabella
> che
> > > > > rappresenta il dato
> > > > > poco_definito
> > > >
> > > > gira e rigira esattamente come ho fatto:
> > invece
> > > > di zona località e gli id nella tabella del
> > dato
> > > > poco
> > > > definito
> > > >
> > > > quello che volevo sapere non era l'
> > > > implementazione pratica ma la correttezza
> > > > teorica
> > > >
> > > >
> > >
> >
> --------------------------------------------------
> > > > Modificato dall' autore il 24 giugno 2008
> > 22.01
> > > >
> > >
> >
> --------------------------------------------------
> > >
> > > per questo ho parlato del modello concettuale:
> > > hai tre entità derivate da un'unica entità
> padre
> >
> > in realtà sono in relazione di ereditarietà
> l'una
> > rispetto all'
> > altra
>
> se intendi la relazione gerarchica
> stato->regione->provincia->sticazzi quella è
> un'altra relazione diversa dell'entità padre su
> sé stessa, ma non è di quella che sto
> parlando.
>
> Se invece intendi ereditarietà Stato(Zona)
> Regione(Zona) Provincia(Zona) Sticazzi(Zona)
> allora hai capito bene.
> *
>
> Per spiegarmi meglio dovrei disegnartelo e temo
> che non lo
> farò
>
> >
> > > e la relazione del dato poco definito è con
> > > l'entità
> > > padre
> >
> > può esserlo con tutte e tre questo è il
> problema,
>
> * No, hai capito male
>
> > potrò sbagliarmi ma la teoria relazionale non
> > risolve bene questo problema, a naso direi che
> > viene modellato meglio da un database ad oggetti
> > che ammette
> > ereditarietà
> >
> > > Il problema ti si presenta dopo, quando vai a
> > > rappresentare questo modello con delle tabelle
> > > perché non puoi rappresentare in modo
> > > soddisfacente il legame tra l'entità base e
> > > quelle
> > > derivate...
> >
> > per me è un modo di complicare le cose...
>
> ma spiega a livello teorico quello che hai fatto
> a
> naso
>
> >
> > tutte le entità derivano da stato e sono in
> > relazione gerarchica, su questo non si
> > discute
> >
no no adesso ho capito cosa intendi
il fatto è che logicamente sono anche in relazione gerarchica fra loro, non solo con zona
ie tu introduci nel discorso un "terzo incomodo": potrei benissimo cancellare la tabella zona e mettere direttamente nella tabella del dato:
id_stato
id_regione
id_provincia
id_localita
tutti campi facoltativi
però così perderei la relazione esistente fra stato regione provincia e località e dovrei reintrodurla a livello di amministrazione del database (inserimento/modifica)
The Lich

-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:59:00.0 alle 2008-06-24 22:59:00.0
- Scritto da: The Lich
>
> - Scritto da:
> >
> > - Scritto da: The Lich
> > > - Scritto da:
> > > > - Scritto da: The Lich
> > > > > - Scritto da:
> > > > > >
> > > > > > - Scritto da: The Lich
> > > > > > > (+ teorica che pratica)
> > > > > > > in pratica è facile da risolvere, il
> mio
> > > > > dubbio
> > > > > > è
> > > > > > > piuttosto di natura
> > > > > > > teorica.
> > > > > > >
> > > > > > > Comunque, supponiamo di avere un
> insieme
> > > di
> > > > > dati
> > > > > > > ordinati
> > > > > > > gerarchicamente:
> > > > > > >
> > > > > > > Stato
> > > > > > > Regione
> > > > > > > Provincia
> > > > > > > Località
> > > > > > >
> > > > > > > si crea un insieme di tabelle in cui
> la
> > > > > > relazione
> > > > > > > gerarchica o di ereditarietà viene
> > > espressa
> > > > > > > esportando nella tabella inferiore l'
> id
> > > del
> > > > > > > campo superiore, ad
> > > > > > > esempio:
> > > > > > >
> > > > > > > tabella provincia:
> > > > > > > id_provincia
> > > > > > > id_regione
> > > > > > > nome_provincia
> > > > > > >
> > > > > > > supponiamo poi di avere un dato
> definito
> > > in
> > > > > > > maniera tale che un suo campo è la
> > > località.
> > > > > Fin
> > > > > > > qui nulla di strano, la tabella del
> dato
> > > > avrà
> > > > > un
> > > > > > > id_localita e con una serie di join
> sarà
> > > > > > > possibile ricostruire tutte le
> relazioni
> > > > dalla
> > > > > > > località allo
> > > > > > > stato.
> > > > > > >
> > > > > > > Supponiamo ora di avere invece un dato
> > > poco
> > > > > > > definito, nel senso che non è in
> > relazione
> > > > con
> > > > > > > una località ma con una provincia o
> > > > > addirittura
> > > > > > > uno
> > > > > > > stato.
> > > > > > > In pratica si potrebbero importare
> nella
> > > > > tabella
> > > > > > > di questo dato tutti gli id: id_stato,
> > > > > > > id_regione, id_provincia etc come
> campi
> > > non
> > > > > > > obbligatori e pertanto lasciare vuoti
> > > quelli
> > > > > non
> > > > > > > definiti.
> > > > > > >
> > > > > > > Il mio dubbio è il seguente: questo
> modo
> > > di
> > > > > > > procedere in un databse relazionale
> come
> > > > mYSQL
> > > > > > > non viola le regole per la riduzione
> > alla
> > > > > terza
> > > > > > > forma normale?
> > > > > > >
> > > > > > > E' un approccio teoricamente legittimo
> > o
> > è
> > > > > > > applicabile solo nella pratica
> > > > > > > comune?
> > > > > > >
> > > > > >
> > > > > > se pensiamo a stato provincia località
> > come
> > > > alle
> > > > > > specializzazioni di uno stesso concetto,
> > > > > chiamato
> > > > > > ad esempio zona, potresti produrre una
> > > > relazione
> > > > > > tra zona e dato
> > > > > > poco_definito
> > > > > >
> > > > > > tradotto poi dallo schema concettuale
> allo
> > > > > schema
> > > > > > logico diverrebbero comunque tre
> tabelle
> e
> > > se
> > > > la
> > > > > > relazione è 1-n tre campi nella tabella
> > che
> > > > > > rappresenta il dato
> > > > > > poco_definito
> > > > >
> > > > > gira e rigira esattamente come ho fatto:
> > > invece
> > > > > di zona località e gli id nella tabella
> del
> > > dato
> > > > > poco
> > > > > definito
> > > > >
> > > > > quello che volevo sapere non era l'
> > > > > implementazione pratica ma la correttezza
> > > > > teorica
> > > > >
> > > > >
> > > >
> > >
> >
> --------------------------------------------------
> > > > > Modificato dall' autore il 24 giugno 2008
> > > 22.01
> > > > >
> > > >
> > >
> >
> --------------------------------------------------
> > > >
> > > > per questo ho parlato del modello
> concettuale:
> > > > hai tre entità derivate da un'unica entità
> > padre
> > >
> > > in realtà sono in relazione di ereditarietà
> > l'una
> > > rispetto all'
> > > altra
> >
> > se intendi la relazione gerarchica
> > stato->regione->provincia->sticazzi quella è
> > un'altra relazione diversa dell'entità padre su
> > sé stessa, ma non è di quella che sto
> > parlando.
> >
> > Se invece intendi ereditarietà Stato(Zona)
> > Regione(Zona) Provincia(Zona) Sticazzi(Zona)
> > allora hai capito bene.
> > *
> >
> > Per spiegarmi meglio dovrei disegnartelo e temo
> > che non lo
> > farò
> >
> > >
> > > > e la relazione del dato poco definito è con
> > > > l'entità
> > > > padre
> > >
> > > può esserlo con tutte e tre questo è il
> > problema,
> >
> > * No, hai capito male
> >
> > > potrò sbagliarmi ma la teoria relazionale non
> > > risolve bene questo problema, a naso direi che
> > > viene modellato meglio da un database ad
> oggetti
> > > che ammette
> > > ereditarietà
> > >
> > > > Il problema ti si presenta dopo, quando vai
> a
> > > > rappresentare questo modello con delle
> tabelle
> > > > perché non puoi rappresentare in modo
> > > > soddisfacente il legame tra l'entità base e
> > > > quelle
> > > > derivate...
> > >
> > > per me è un modo di complicare le cose...
> >
> > ma spiega a livello teorico quello che hai fatto
> > a
> > naso
> >
> > >
> > > tutte le entità derivano da stato e sono in
> > > relazione gerarchica, su questo non si
> > > discute
> > >
>
> no no adesso ho capito cosa intendi
>
> il fatto è che logicamente sono anche in
> relazione gerarchica fra loro, non solo con
> zona
>
> ie tu introduci nel discorso un "terzo incomodo":
> potrei benissimo cancellare la tabella zona e
> mettere direttamente nella tabella del
> dato:
>
> id_stato
> id_regione
> id_provincia
> id_localita
>
> tutti campi facoltativi
>
> però così perderei la relazione esistente fra
> stato regione provincia e località e dovrei
> reintrodurla a livello di amministrazione del
> database
> (inserimento/modifica)
>
> The Lich
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
1. si potresti fare anche un'unica tabella con tutti i campi di stato di provincia di località etc, ma se ti lamentavi della normalizzazione prima non oso immaginare poi
2. vedi suggerimento del sassofono: una tabella luogo con gli attributi comuni e poi una singola tabella per stato provincia etc per gli attributi specifici (anche se IMHO sarà un porcaio gestire il tutto)
3. vedi link postgres per soluzione fuori standard che io non userei mai
4. infine alcuni ORM gestiscono l'ereditarietà producendo tabelle separate (l'ORM di django ad esempio) e quindi le relazioni degenerano in tabelle separate (o campi multipli come hai fatto tu)
-
-
-
-
-
-
-
Re: domanda sui databaseScritto daavvelentaniCubicolarioil 2008-06-24 21:56:00.0 alle 2008-06-24 21:56:00.0Trollate totali: 18184
- Scritto da: The Lich
> (+ teorica che pratica)
> in pratica è facile da risolvere, il mio dubbio è
> piuttosto di natura
> teorica.
>
> Comunque, supponiamo di avere un insieme di dati
> ordinati
> gerarchicamente:
>
> Stato
> Regione
> Provincia
> Località
>
> si crea un insieme di tabelle in cui la relazione
> gerarchica o di ereditarietà viene espressa
> esportando nella tabella inferiore l' id del
> campo superiore, ad
> esempio:
>
> tabella provincia:
> id_provincia
> id_regione
> nome_provincia
>
> supponiamo poi di avere un dato definito in
> maniera tale che un suo campo è la località. Fin
> qui nulla di strano, la tabella del dato avrà un
> id_localita e con una serie di join sarà
> possibile ricostruire tutte le relazioni dalla
> località allo
> stato.
>
> Supponiamo ora di avere invece un dato poco
> definito, nel senso che non è in relazione con
> una località ma con una provincia o addirittura
> uno
> stato.
> In pratica si potrebbero importare nella tabella
> di questo dato tutti gli id: id_stato,
> id_regione, id_provincia etc come campi non
> obbligatori e pertanto lasciare vuoti quelli non
> definiti.
>
> Il mio dubbio è il seguente: questo modo di
> procedere in un databse relazionale come mYSQL
> non viola le regole per la riduzione alla terza
> forma normale?
Perche' puoi averne solo uno non nullo e quindi il fatto che uno sia non nullo implica che gli altri due siano nulli?
Si`, e` contrario alla teoria di modellazione dei database, ma tanto secondo vari teorici (principalmente C.J.Date) qualsiasi uso di NULL non solo e` una modellazione sbagliata ma e` anche contro la teoria relazionale.
La soluzione teorica secondo Date e` fare tante relazioni:
poco_definito, poco_definito2regione, poco_definito2provincia, poco_definito2localita...
e tanti bei constraint che esplicitino il fatto che un poco_definito puo` stare in una sola tra le tabelle poco_definito2regione, poco_definito2provincia... ma evita, non e` ben supportato dal software attuale e non sono neanche sicuro che i constraint del genere si possano scrivere in sql.I think happiness is love
- Vladimir Putin-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 22:08:00.0 alle 2008-06-24 22:08:00.0Trollate totali: 21351
- Scritto da: avvelentani
>
> - Scritto da: The Lich
> > (+ teorica che pratica)
> > in pratica è facile da risolvere, il mio dubbio
> è
> > piuttosto di natura
> > teorica.
> >
> > Comunque, supponiamo di avere un insieme di dati
> > ordinati
> > gerarchicamente:
> >
> > Stato
> > Regione
> > Provincia
> > Località
> >
> > si crea un insieme di tabelle in cui la
> relazione
> > gerarchica o di ereditarietà viene espressa
> > esportando nella tabella inferiore l' id del
> > campo superiore, ad
> > esempio:
> >
> > tabella provincia:
> > id_provincia
> > id_regione
> > nome_provincia
> >
> > supponiamo poi di avere un dato definito in
> > maniera tale che un suo campo è la località. Fin
> > qui nulla di strano, la tabella del dato avrà un
> > id_localita e con una serie di join sarà
> > possibile ricostruire tutte le relazioni dalla
> > località allo
> > stato.
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
> > In pratica si potrebbero importare nella tabella
> > di questo dato tutti gli id: id_stato,
> > id_regione, id_provincia etc come campi non
> > obbligatori e pertanto lasciare vuoti quelli non
> > definiti.
> >
> > Il mio dubbio è il seguente: questo modo di
> > procedere in un databse relazionale come mYSQL
> > non viola le regole per la riduzione alla terza
> > forma normale?
>
> Perche' puoi averne solo uno non nullo e quindi
> il fatto che uno sia non nullo implica che gli
> altri due siano
> nulli?
semmai il contrario: se il dato è molto definito è definita la località precisa e quindi posso risalire con i vincoli all' intera catena: da località a stato (il che è logico: una località appartiene sempre ad una provincia che appartiene ad una regione etc etc)
teoricamente potrei anche evitare questi vincoli e avere tante tabelle slegate e tanti campi id collegati a quello del dato, però non avere le varie tabelle in relazione gerarchica fra loro mi fa schifo, visto che esiste la relazione
se il dato è poco definito per forza di cose conosco solo la provincia o solo la nazione etc etc e quindi non posso usare la località per poi risalire la catena: sono costretto a rifarmi alla cima della catena da subito
> Si`, e` contrario alla teoria di modellazione dei
> database, ma tanto secondo vari teorici
> (principalmente C.J.Date) qualsiasi uso di NULL
> non solo e` una modellazione sbagliata ma e`
> anche contro la teoria
> relazionale.
se si facesse meno seghe e dovesse lavorare in un' azienda la penserebbe diversamente
> La soluzione teorica secondo Date e` fare tante
> relazioni:
>
> poco_definito, poco_definito2regione,
> poco_definito2provincia,
> poco_definito2localita...
>
> e tanti bei constraint che esplicitino il fatto
> che un poco_definito puo` stare in una sola tra
> le tabelle poco_definito2regione,
> poco_definito2provincia... ma evita, non e` ben
> supportato dal software attuale e non sono
> neanche sicuro che i constraint del genere si
> possano scrivere in
> sql.
come soluzione, senza offesa, me fa caghér
The Lich

-
Re: domanda sui databaseScritto daavvelentaniCubicolarioil 2008-06-24 22:25:00.0 alle 2008-06-24 22:25:00.0Trollate totali: 18184
- Scritto da: The Lich
> semmai il contrario: se il dato è molto definito
> è definita la località precisa e quindi posso
> risalire con i vincoli all' intera catena: da
> località a stato (il che è logico: una località
> appartiene sempre ad una provincia che appartiene
> ad una regione etc
> etc)
Si`, infatti, se fosse ben definito ti basterebbe id_localita come chiave esterna, il tuo problema e` che hai bisogno di id_localita, id_provincia, etc come chiavi esterne in 'datopocodefinito' perche' il 'datopocodefinito' puo` avere solo provincia e non localita`...
Non e` in forma normale perche' in questo modo data una tupla di datopocodefinito i valori delle chiavi esterne sono interdipendenti.
O fai come ti ho detto sotto o fai una tabella luogo: provincia, regione e localita hanno un luogo come chiave esterna e anche datopocodefinito ce l'ha, che pero` e` opaco e error-prone.
> teoricamente potrei anche evitare questi vincoli
> e avere tante tabelle slegate e tanti campi id
> collegati a quello del dato, però non avere le
> varie tabelle in relazione gerarchica fra loro mi
> fa schifo, visto che esiste la
> relazione
non ti seguo.
> se si facesse meno seghe e dovesse lavorare in
> un' azienda la penserebbe
> diversamente
considerato che e` tra uno degli inventori dell'sql ti inviterei a riconsiderare l'affermazione.
se le cose fossero come lui vorrebbe che fossero sarebbe meglio, la pratica e la teoria sarebbero molto piu` vicine.I think happiness is love
- Vladimir Putin-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:30:00.0 alle 2008-06-24 22:30:00.0
> O fai come ti ho detto sotto o fai una tabella
> luogo: provincia, regione e localita hanno un
> luogo come chiave esterna e anche
> datopocodefinito ce l'ha, che pero` e` opaco e
> error-prone.
postgresql ha questa bella cosa fuori standard
http://www.postgresql.org/docs/8.3/interactive/ddl...
-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 22:47:00.0 alle 2008-06-24 22:47:00.0Trollate totali: 21351
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 01:57:00.0 alle 2008-06-25 01:57:00.0
- Scritto da: The Lich
>
> - Scritto da:
> >
> > > O fai come ti ho detto sotto o fai una tabella
> > > luogo: provincia, regione e localita hanno un
> > > luogo come chiave esterna e anche
> > > datopocodefinito ce l'ha, che pero` e` opaco e
> > > error-prone.
> >
> > postgresql ha questa bella cosa fuori standard
>
> >
> >
> http://www.postgresql.org/docs/8.3/interactive/ddl
>
> guarda caso postgres è un database relazionale
> che applica alcuni concetti relativi ad oggetti,
> vedi
> ereditarietà
Così mischia un modello matematico (quello relazionale) con una collezione di best practice (quello ad oggetti).
L'ereditarietà nel modello relazionale potrebbe esistere se implementassero un type system degno di quel nome e non sarebbe simile a quella dell'esempio neanche da lontano.
> molto interessante per il resto, devo davvero
> approfondire
> postgresql
Se vuoi approfondire la parte teorica -> Third Manifesto. Sappi che butterai il tuo tempo perché il 90% del popolo bove degli informatici è impegnato a costruire best practice su best practice (chiamarlo modello è ridicolo) e nessuno se lo caga.
-
-
Re: domanda sui databaseScritto daavvelentaniCubicolarioil 2008-06-24 23:05:00.0 alle 2008-06-24 23:05:00.0Trollate totali: 18184
- Scritto da:
>
> > O fai come ti ho detto sotto o fai una tabella
> > luogo: provincia, regione e localita hanno un
> > luogo come chiave esterna e anche
> > datopocodefinito ce l'ha, che pero` e` opaco e
> > error-prone.
>
> postgresql ha questa bella cosa fuori standard
>
> http://www.postgresql.org/docs/8.3/interactive/ddl
Licchione non lo sa ma una provincia non e` una regione, c'e` una relazione gerarchica ma non e` una relazione di ereditarieta`, pero` gli va di culo che nel suo caso sono intercambiabili.
L'esempio che hai linkato, invece, e` alquanto discutibile
I think happiness is love
- Vladimir Putin-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-25 22:51:00.0 alle 2008-06-25 22:51:00.0Trollate totali: 21351
- Scritto da: avvelentani
>
> - Scritto da:
> >
> > > O fai come ti ho detto sotto o fai una tabella
> > > luogo: provincia, regione e localita hanno un
> > > luogo come chiave esterna e anche
> > > datopocodefinito ce l'ha, che pero` e` opaco e
> > > error-prone.
> >
> > postgresql ha questa bella cosa fuori standard
>
> >
> >
>
-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 03:49:00.0 alle 2008-06-25 03:49:00.0> considerato che e` tra uno degli inventori
> dell'sql ti inviterei a riconsiderare
> l'affermazione.
Se ti sentisse, ti tirerebbe un pugno
Date è stato nella commissione SQL agli inizi e per poco. Poi dato che non lo ascoltavano mai, e hanno fatto trusi su trusi, è diventato uno dei più grossi critici dell'SQL.
> se le cose fossero come lui vorrebbe che fossero
> sarebbe meglio, la pratica e la teoria sarebbero
> molto piu` vicine.
Per quanto poco te ne possa fregare, con questo hai quadagnato millemila punti e la mia stima incondizionata
-
Re: domanda sui databaseScritto daavvelentaniCubicolarioil 2008-06-25 07:44:00.0 alle 2008-06-25 07:44:00.0Trollate totali: 18184
- Scritto da:
> > considerato che e` tra uno degli inventori
> > dell'sql ti inviterei a riconsiderare
> > l'affermazione.
>
> Se ti sentisse, ti tirerebbe un pugno
>
> Date è stato nella commissione SQL agli inizi e
> per poco. Poi dato che non lo ascoltavano mai, e
> hanno fatto trusi su trusi, è diventato uno dei
> più grossi critici
> dell'SQL.
So che c'e` stato, per quanto e se gli dassero ascolto non lo so. Non so neanche se fosse buono il caffe' da quelle parti.
I think happiness is love
- Vladimir Putin
-
-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:20:00.0 alle 2008-06-24 22:20:00.0
- Scritto da: avvelentani
>
> - Scritto da: The Lich
> > (+ teorica che pratica)
> > in pratica è facile da risolvere, il mio dubbio
> è
> > piuttosto di natura
> > teorica.
> >
> > Comunque, supponiamo di avere un insieme di dati
> > ordinati
> > gerarchicamente:
> >
> > Stato
> > Regione
> > Provincia
> > Località
> >
> > si crea un insieme di tabelle in cui la
> relazione
> > gerarchica o di ereditarietà viene espressa
> > esportando nella tabella inferiore l' id del
> > campo superiore, ad
> > esempio:
> >
> > tabella provincia:
> > id_provincia
> > id_regione
> > nome_provincia
> >
> > supponiamo poi di avere un dato definito in
> > maniera tale che un suo campo è la località. Fin
> > qui nulla di strano, la tabella del dato avrà un
> > id_localita e con una serie di join sarà
> > possibile ricostruire tutte le relazioni dalla
> > località allo
> > stato.
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
> > In pratica si potrebbero importare nella tabella
> > di questo dato tutti gli id: id_stato,
> > id_regione, id_provincia etc come campi non
> > obbligatori e pertanto lasciare vuoti quelli non
> > definiti.
> >
> > Il mio dubbio è il seguente: questo modo di
> > procedere in un databse relazionale come mYSQL
> > non viola le regole per la riduzione alla terza
> > forma normale?
>
> Perche' puoi averne solo uno non nullo e quindi
> il fatto che uno sia non nullo implica che gli
> altri due siano
> nulli?
>
> Si`, e` contrario alla teoria di modellazione dei
> database, ma tanto secondo vari teorici
> (principalmente C.J.Date) qualsiasi uso di NULL
> non solo e` una modellazione sbagliata ma e`
> anche contro la teoria
> relazionale.
>
> La soluzione teorica secondo Date e` fare tante
> relazioni:
>
> poco_definito, poco_definito2regione,
> poco_definito2provincia,
> poco_definito2localita...
>
> e tanti bei constraint che esplicitino il fatto
> che un poco_definito puo` stare in una sola tra
> le tabelle poco_definito2regione,
> poco_definito2provincia... ma evita, non e` ben
> supportato dal software attuale e non sono
> neanche sicuro che i constraint del genere si
> possano scrivere in
> sql.
che troiaio!
-
Re: domanda sui databaseScritto daavvelentaniCubicolarioil 2008-06-24 22:40:00.0 alle 2008-06-24 22:40:00.0Trollate totali: 18184
- Scritto da:
>
> - Scritto da: avvelentani
> >
> > - Scritto da: The Lich
> > > (+ teorica che pratica)
> > > in pratica è facile da risolvere, il mio
> dubbio
> > è
> > > piuttosto di natura
> > > teorica.
> > >
> > > Comunque, supponiamo di avere un insieme di
> dati
> > > ordinati
> > > gerarchicamente:
> > >
> > > Stato
> > > Regione
> > > Provincia
> > > Località
> > >
> > > si crea un insieme di tabelle in cui la
> > relazione
> > > gerarchica o di ereditarietà viene espressa
> > > esportando nella tabella inferiore l' id del
> > > campo superiore, ad
> > > esempio:
> > >
> > > tabella provincia:
> > > id_provincia
> > > id_regione
> > > nome_provincia
> > >
> > > supponiamo poi di avere un dato definito in
> > > maniera tale che un suo campo è la località.
> Fin
> > > qui nulla di strano, la tabella del dato avrà
> un
> > > id_localita e con una serie di join sarà
> > > possibile ricostruire tutte le relazioni dalla
> > > località allo
> > > stato.
> > >
> > > Supponiamo ora di avere invece un dato poco
> > > definito, nel senso che non è in relazione con
> > > una località ma con una provincia o
> addirittura
> > > uno
> > > stato.
> > > In pratica si potrebbero importare nella
> tabella
> > > di questo dato tutti gli id: id_stato,
> > > id_regione, id_provincia etc come campi non
> > > obbligatori e pertanto lasciare vuoti quelli
> non
> > > definiti.
> > >
> > > Il mio dubbio è il seguente: questo modo di
> > > procedere in un databse relazionale come mYSQL
> > > non viola le regole per la riduzione alla
> terza
> > > forma normale?
> >
> > Perche' puoi averne solo uno non nullo e quindi
> > il fatto che uno sia non nullo implica che gli
> > altri due siano
> > nulli?
> >
> > Si`, e` contrario alla teoria di modellazione
> dei
> > database, ma tanto secondo vari teorici
> > (principalmente C.J.Date) qualsiasi uso di NULL
> > non solo e` una modellazione sbagliata ma e`
> > anche contro la teoria
> > relazionale.
> >
> > La soluzione teorica secondo Date e` fare tante
> > relazioni:
> >
> > poco_definito, poco_definito2regione,
> > poco_definito2provincia,
> > poco_definito2localita...
> >
> > e tanti bei constraint che esplicitino il fatto
> > che un poco_definito puo` stare in una sola tra
> > le tabelle poco_definito2regione,
> > poco_definito2provincia... ma evita, non e` ben
> > supportato dal software attuale e non sono
> > neanche sicuro che i constraint del genere si
> > possano scrivere in
> > sql.
>
> che troiaio!
http://www.dcs.warwick.ac.uk/~hugh/TTM/Missing-inf...
I think happiness is love
- Vladimir Putin-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:50:00.0 alle 2008-06-24 22:50:00.0
- Scritto da: avvelentani
>
> - Scritto da:
> >
> > - Scritto da: avvelentani
> > >
> > > - Scritto da: The Lich
> > > > (+ teorica che pratica)
> > > > in pratica è facile da risolvere, il mio
> > dubbio
> > > è
> > > > piuttosto di natura
> > > > teorica.
> > > >
> > > > Comunque, supponiamo di avere un insieme di
> > dati
> > > > ordinati
> > > > gerarchicamente:
> > > >
> > > > Stato
> > > > Regione
> > > > Provincia
> > > > Località
> > > >
> > > > si crea un insieme di tabelle in cui la
> > > relazione
> > > > gerarchica o di ereditarietà viene espressa
> > > > esportando nella tabella inferiore l' id del
> > > > campo superiore, ad
> > > > esempio:
> > > >
> > > > tabella provincia:
> > > > id_provincia
> > > > id_regione
> > > > nome_provincia
> > > >
> > > > supponiamo poi di avere un dato definito in
> > > > maniera tale che un suo campo è la località.
> > Fin
> > > > qui nulla di strano, la tabella del dato
> avrà
> > un
> > > > id_localita e con una serie di join sarà
> > > > possibile ricostruire tutte le relazioni
> dalla
> > > > località allo
> > > > stato.
> > > >
> > > > Supponiamo ora di avere invece un dato poco
> > > > definito, nel senso che non è in relazione
> con
> > > > una località ma con una provincia o
> > addirittura
> > > > uno
> > > > stato.
> > > > In pratica si potrebbero importare nella
> > tabella
> > > > di questo dato tutti gli id: id_stato,
> > > > id_regione, id_provincia etc come campi non
> > > > obbligatori e pertanto lasciare vuoti quelli
> > non
> > > > definiti.
> > > >
> > > > Il mio dubbio è il seguente: questo modo di
> > > > procedere in un databse relazionale come
> mYSQL
> > > > non viola le regole per la riduzione alla
> > terza
> > > > forma normale?
> > >
> > > Perche' puoi averne solo uno non nullo e
> quindi
> > > il fatto che uno sia non nullo implica che gli
> > > altri due siano
> > > nulli?
> > >
> > > Si`, e` contrario alla teoria di modellazione
> > dei
> > > database, ma tanto secondo vari teorici
> > > (principalmente C.J.Date) qualsiasi uso di
> NULL
> > > non solo e` una modellazione sbagliata ma e`
> > > anche contro la teoria
> > > relazionale.
> > >
> > > La soluzione teorica secondo Date e` fare
> tante
> > > relazioni:
> > >
> > > poco_definito, poco_definito2regione,
> > > poco_definito2provincia,
> > > poco_definito2localita...
> > >
> > > e tanti bei constraint che esplicitino il
> fatto
> > > che un poco_definito puo` stare in una sola
> tra
> > > le tabelle poco_definito2regione,
> > > poco_definito2provincia... ma evita, non e`
> ben
> > > supportato dal software attuale e non sono
> > > neanche sicuro che i constraint del genere si
> > > possano scrivere in
> > > sql.
> >
> > che troiaio!
>
>
>
-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 01:53:00.0 alle 2008-06-25 01:53:00.0
- Scritto da: avvelentani
>
> - Scritto da: The Lich
> > (+ teorica che pratica)
> > in pratica è facile da risolvere, il mio dubbio
> è
> > piuttosto di natura
> > teorica.
> >
> > Comunque, supponiamo di avere un insieme di dati
> > ordinati
> > gerarchicamente:
> >
> > Stato
> > Regione
> > Provincia
> > Località
> >
> > si crea un insieme di tabelle in cui la
> relazione
> > gerarchica o di ereditarietà viene espressa
> > esportando nella tabella inferiore l' id del
> > campo superiore, ad
> > esempio:
> >
> > tabella provincia:
> > id_provincia
> > id_regione
> > nome_provincia
> >
> > supponiamo poi di avere un dato definito in
> > maniera tale che un suo campo è la località. Fin
> > qui nulla di strano, la tabella del dato avrà un
> > id_localita e con una serie di join sarà
> > possibile ricostruire tutte le relazioni dalla
> > località allo
> > stato.
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
> > In pratica si potrebbero importare nella tabella
> > di questo dato tutti gli id: id_stato,
> > id_regione, id_provincia etc come campi non
> > obbligatori e pertanto lasciare vuoti quelli non
> > definiti.
> >
> > Il mio dubbio è il seguente: questo modo di
> > procedere in un databse relazionale come mYSQL
> > non viola le regole per la riduzione alla terza
> > forma normale?
>
> Perche' puoi averne solo uno non nullo e quindi
> il fatto che uno sia non nullo implica che gli
> altri due siano
> nulli?
>
> Si`, e` contrario alla teoria di modellazione dei
> database, ma tanto secondo vari teorici
> (principalmente C.J.Date) qualsiasi uso di NULL
> non solo e` una modellazione sbagliata ma e`
> anche contro la teoria
> relazionale.
>
> La soluzione teorica secondo Date e` fare tante
> relazioni:
>
> poco_definito, poco_definito2regione,
> poco_definito2provincia,
> poco_definito2localita...
>
> e tanti bei constraint che esplicitino il fatto
> che un poco_definito puo` stare in una sola tra
> le tabelle poco_definito2regione,
> poco_definito2provincia... ma evita, non e` ben
> supportato dal software attuale e non sono
> neanche sicuro che i constraint del genere si
> possano scrivere in
> sql.
Non ho letto molto attentamente, ma ho l'impressione che sei sulla strada sbagliata (anche se apprezzo la citazione a Date che oggi non se lo caga più nessuno)-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 03:42:00.0 alle 2008-06-25 03:42:00.0
- Scritto da:
>
> - Scritto da: avvelentani
> >
> > - Scritto da: The Lich
> > > (+ teorica che pratica)
> > > in pratica è facile da risolvere, il mio
> dubbio
> > è
> > > piuttosto di natura
> > > teorica.
> > >
> > > Comunque, supponiamo di avere un insieme di
> dati
> > > ordinati
> > > gerarchicamente:
> > >
> > > Stato
> > > Regione
> > > Provincia
> > > Località
> > >
> > > si crea un insieme di tabelle in cui la
> > relazione
> > > gerarchica o di ereditarietà viene espressa
> > > esportando nella tabella inferiore l' id del
> > > campo superiore, ad
> > > esempio:
> > >
> > > tabella provincia:
> > > id_provincia
> > > id_regione
> > > nome_provincia
> > >
> > > supponiamo poi di avere un dato definito in
> > > maniera tale che un suo campo è la località.
> Fin
> > > qui nulla di strano, la tabella del dato avrà
> un
> > > id_localita e con una serie di join sarà
> > > possibile ricostruire tutte le relazioni dalla
> > > località allo
> > > stato.
> > >
> > > Supponiamo ora di avere invece un dato poco
> > > definito, nel senso che non è in relazione con
> > > una località ma con una provincia o
> addirittura
> > > uno
> > > stato.
> > > In pratica si potrebbero importare nella
> tabella
> > > di questo dato tutti gli id: id_stato,
> > > id_regione, id_provincia etc come campi non
> > > obbligatori e pertanto lasciare vuoti quelli
> non
> > > definiti.
> > >
> > > Il mio dubbio è il seguente: questo modo di
> > > procedere in un databse relazionale come mYSQL
> > > non viola le regole per la riduzione alla
> terza
> > > forma normale?
> >
> > Perche' puoi averne solo uno non nullo e quindi
> > il fatto che uno sia non nullo implica che gli
> > altri due siano
> > nulli?
> >
> > Si`, e` contrario alla teoria di modellazione
> dei
> > database, ma tanto secondo vari teorici
> > (principalmente C.J.Date) qualsiasi uso di NULL
> > non solo e` una modellazione sbagliata ma e`
> > anche contro la teoria
> > relazionale.
> >
> > La soluzione teorica secondo Date e` fare tante
> > relazioni:
> >
> > poco_definito, poco_definito2regione,
> > poco_definito2provincia,
> > poco_definito2localita...
> >
> > e tanti bei constraint che esplicitino il fatto
> > che un poco_definito puo` stare in una sola tra
> > le tabelle poco_definito2regione,
> > poco_definito2provincia... ma evita, non e` ben
> > supportato dal software attuale e non sono
> > neanche sicuro che i constraint del genere si
> > possano scrivere in
> > sql.
>
> Non ho letto molto attentamente, ma ho
> l'impressione che sei sulla strada sbagliata
> (anche se apprezzo la citazione a Date che oggi
> non se lo caga più
> nessuno)
Mi rimangio quanto detto, e chiedo scusa. Sono stato depistato sia dal "poco_definito" che dal fatto che hai generalizzato subito mentre per come lo pensavo io non era strettamente necessaria la generalizzazione.
-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:21:00.0 alle 2008-06-24 22:21:00.0
- Scritto da: The Lich
>
> Supponiamo ora di avere invece un dato poco
> definito, nel senso che non è in relazione con
> una località ma con una provincia o addirittura
> uno
> stato.
c'è qualcosa che non funge nell'analisi dei requisiti
-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-24 22:41:00.0 alle 2008-06-24 22:41:00.0Trollate totali: 21351
- Scritto da:
>
> - Scritto da: The Lich
>
> >
> > Supponiamo ora di avere invece un dato poco
> > definito, nel senso che non è in relazione con
> > una località ma con una provincia o addirittura
> > uno
> > stato.
>
> c'è qualcosa che non funge nell'analisi dei
> requisiti
>
funge benissimo idiota e ti spiego anche il perchè, per mia degnazione.
Voglio fare il database della mia collezione di minerali e non conosco sempre la provenienza precisa.
Di quelli che ho raccolto io ti so dire le coordinate UTM ad 8 cifre, di minerali acquistati tempo fa magari da mio babbo, è già tanto se so che vengono dal Brasile.
Bamba!
The Lich

-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:48:00.0 alle 2008-06-24 22:48:00.0
- Scritto da: The Lich
>
> - Scritto da:
> >
> > - Scritto da: The Lich
> >
> > >
> > > Supponiamo ora di avere invece un dato poco
> > > definito, nel senso che non è in relazione con
> > > una località ma con una provincia o
> addirittura
> > > uno
> > > stato.
> >
> > c'è qualcosa che non funge nell'analisi dei
> > requisiti
> >
>
> funge benissimo idiota e ti spiego anche il
> perchè, per mia
> degnazione.
>
> Voglio fare il database della mia collezione di
> minerali
allora sei asperger!

-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 22:24:00.0 alle 2008-06-24 22:24:00.0
-
e qui cade l'asinoScritto daNon Autenticatoil 2008-06-24 23:16:00.0 alle 2008-06-24 23:16:00.0
- Scritto da: The Lich
> (+ teorica che pratica)
> in pratica è facile da risolvere, il mio dubbio è
> piuttosto di natura
> teorica.
>
> Comunque, supponiamo di avere un insieme di dati
> ordinati
> gerarchicamente:
>
> Stato
> Regione
> Provincia
> Località
>
> si crea un insieme di tabelle in cui la relazione
> gerarchica o di ereditarietà viene espressa
> esportando nella tabella inferiore l' id del
> campo superiore, ad
> esempio:
>
> tabella provincia:
> id_provincia
> id_regione
> nome_provincia
>
> supponiamo poi di avere un dato definito in
> maniera tale che un suo campo è la località. Fin
> qui nulla di strano, la tabella del dato avrà un
> id_localita e con una serie di join sarà
> possibile ricostruire tutte le relazioni dalla
> località allo
> stato.
>
> Supponiamo ora di avere invece un dato poco
> definito, nel senso che non è in relazione con
> una località ma con una provincia o addirittura
> uno
> stato.
> In pratica si potrebbero importare nella tabella
> di questo dato tutti gli id: id_stato,
> id_regione, id_provincia etc come campi non
> obbligatori e pertanto lasciare vuoti quelli non
> definiti.
>
> Il mio dubbio è il seguente: questo modo di
> procedere in un databse relazionale come mYSQL
> non viola le regole per la riduzione alla terza
> forma normale?
>
> E' un approccio teoricamente legittimo o è
> applicabile solo nella pratica
> comune?
>
> The Lich
>
> [img]http://www.gamewyrd.com/previews/bottledimp/i
vedi qual'è un'utilità delle relazioni sociali? questa: chiedere un parere- consiglio- aiuto o quant'altro.
Se non ci fosse il forum con chi parleresti/chiederesti pareri? Agli alberi?-
Re: e qui cade l'asinoScritto daNon Autenticatoil 2008-06-24 23:23:00.0 alle 2008-06-24 23:23:00.0
> vedi qual'è un'utilità delle relazioni sociali?
> questa: chiedere un parere- consiglio- aiuto o
> quant'altro.
>
>
> Se non ci fosse il forum con chi
> parleresti/chiederesti pareri? Agli
> alberi?
peccato che deve assentarsi per un impegno urgente, altrimenti ti risponderebbe a tono
-
-
Potresti fare così...Scritto daNon Autenticatoil 2008-06-24 23:36:00.0 alle 2008-06-24 23:36:00.0In ogni tabella (località, provincia, regione, paese, pianeta...) aggiungi ai record esistenti un record indefinito.
Immagino un'interfaccia dove assegni al record di un minerale i valori dei vari campi da caselle a discesa, partendo dalle proprietà gerarchicamente superiori - per un minerale di cui sai tutto sceglieresti:
Stato: Italia
(la casella delle regioni si popola con le regioni d'Italia)
Regione: Piemonte
(la casella delle province si popola con le province piemontesi)
Provincia: Torino
(la casella dei comuni si popola con i comuni della provincia di Torino)
Supponi ora di introdurre i campi indefiniti negli elenchi, e di classificare un minerale di cui sai solo che proviene dal Piemonte.
Stato: Italia
(la casella delle regioni si popola con le regioni d'Italia, più "regione indefinita")
Regione: Piemonte
(la casella delle province si popola con le province piemontesi, più "provincia indefinita")
Provincia: Indefinita
(la casella dei comuni si popola con la sola voce "indefinito")
Mi resta qualche dubbio sull'appartenenza degli indefiniti o meno ai record gerarchicamente superiori: se ad esempio la provincia "indefinita" che scegli dall'elenco delle province del Piemonte sia, a livello teorico, una "provincia indefinita della regione Piemonte" distinta dalla "provincia indefinita della regione Liguria" ma non so se questo dubbio abbia qualche effetto pratico.-
Re: Potresti fare così...Scritto daNon Autenticatoil 2008-06-24 23:39:00.0 alle 2008-06-24 23:39:00.0
- Scritto da:
> In ogni tabella (località, provincia, regione,
> paese, pianeta...) aggiungi ai record esistenti
> un record
> indefinito.
>
> Immagino un'interfaccia dove assegni al record di
> un minerale i valori dei vari campi da caselle a
> discesa, partendo dalle proprietà gerarchicamente
> superiori - per un minerale di cui sai tutto
> sceglieresti:
>
> Stato: Italia
>
> (la casella delle regioni si popola con le
> regioni
> d'Italia)
>
> Regione: Piemonte
>
> (la casella delle province si popola con le
> province
> piemontesi)
>
> Provincia: Torino
>
> (la casella dei comuni si popola con i comuni
> della provincia di
> Torino)
>
> Supponi ora di introdurre i campi indefiniti
> negli elenchi, e di classificare un minerale di
> cui sai solo che proviene dal
> Piemonte.
>
> Stato: Italia
>
> (la casella delle regioni si popola con le
> regioni d'Italia, più "regione
> indefinita")
>
> Regione: Piemonte
>
> (la casella delle province si popola con le
> province piemontesi, più "provincia
> indefinita")
>
> Provincia: Indefinita
>
> (la casella dei comuni si popola con la sola voce
> "indefinito")
>
> Mi resta qualche dubbio sull'appartenenza degli
> indefiniti o meno ai record gerarchicamente
> superiori: se ad esempio la provincia
> "indefinita" che scegli dall'elenco delle
> province del Piemonte sia, a livello teorico, una
> "provincia indefinita della regione Piemonte"
> distinta dalla "provincia indefinita della
> regione Liguria" ma non so se questo dubbio abbia
> qualche effetto
> pratico.
Hola Gatto Selvaggio!
-
Re: Potresti fare così...Scritto daNon Autenticatoil 2008-06-24 23:41:00.0 alle 2008-06-24 23:41:00.0
- Scritto da:
>
> - Scritto da:
> > In ogni tabella (località, provincia, regione,
> > paese, pianeta...) aggiungi ai record esistenti
> > un record
> > indefinito.
> >
> > Immagino un'interfaccia dove assegni al record
> di
> > un minerale i valori dei vari campi da caselle a
> > discesa, partendo dalle proprietà
> gerarchicamente
> > superiori - per un minerale di cui sai tutto
> > sceglieresti:
> >
> > Stato: Italia
> >
> > (la casella delle regioni si popola con le
> > regioni
> > d'Italia)
> >
> > Regione: Piemonte
> >
> > (la casella delle province si popola con le
> > province
> > piemontesi)
> >
> > Provincia: Torino
> >
> > (la casella dei comuni si popola con i comuni
> > della provincia di
> > Torino)
> >
> > Supponi ora di introdurre i campi indefiniti
> > negli elenchi, e di classificare un minerale di
> > cui sai solo che proviene dal
> > Piemonte.
> >
> > Stato: Italia
> >
> > (la casella delle regioni si popola con le
> > regioni d'Italia, più "regione
> > indefinita")
> >
> > Regione: Piemonte
> >
> > (la casella delle province si popola con le
> > province piemontesi, più "provincia
> > indefinita")
> >
> > Provincia: Indefinita
> >
> > (la casella dei comuni si popola con la sola
> voce
> > "indefinito")
> >
> > Mi resta qualche dubbio sull'appartenenza degli
> > indefiniti o meno ai record gerarchicamente
> > superiori: se ad esempio la provincia
> > "indefinita" che scegli dall'elenco delle
> > province del Piemonte sia, a livello teorico,
> una
> > "provincia indefinita della regione Piemonte"
> > distinta dalla "provincia indefinita della
> > regione Liguria" ma non so se questo dubbio
> abbia
> > qualche effetto
> > pratico.
>
> Hola Gatto Selvaggio!
Grande Gian!
-
Re: Potresti fare così...Scritto daNon Autenticatoil 2008-06-24 23:43:00.0 alle 2008-06-24 23:43:00.0
- Scritto da:
>
> - Scritto da:
> >
> > - Scritto da:
> > > In ogni tabella (località, provincia, regione,
> > > paese, pianeta...) aggiungi ai record
> esistenti
> > > un record
> > > indefinito.
> > >
> > > Immagino un'interfaccia dove assegni al record
> > di
> > > un minerale i valori dei vari campi da
> caselle
> a
> > > discesa, partendo dalle proprietà
> > gerarchicamente
> > > superiori - per un minerale di cui sai tutto
> > > sceglieresti:
> > >
> > > Stato: Italia
> > >
> > > (la casella delle regioni si popola con le
> > > regioni
> > > d'Italia)
> > >
> > > Regione: Piemonte
> > >
> > > (la casella delle province si popola con le
> > > province
> > > piemontesi)
> > >
> > > Provincia: Torino
> > >
> > > (la casella dei comuni si popola con i comuni
> > > della provincia di
> > > Torino)
> > >
> > > Supponi ora di introdurre i campi indefiniti
> > > negli elenchi, e di classificare un minerale
> di
> > > cui sai solo che proviene dal
> > > Piemonte.
> > >
> > > Stato: Italia
> > >
> > > (la casella delle regioni si popola con le
> > > regioni d'Italia, più "regione
> > > indefinita")
> > >
> > > Regione: Piemonte
> > >
> > > (la casella delle province si popola con le
> > > province piemontesi, più "provincia
> > > indefinita")
> > >
> > > Provincia: Indefinita
> > >
> > > (la casella dei comuni si popola con la sola
> > voce
> > > "indefinito")
> > >
> > > Mi resta qualche dubbio sull'appartenenza
> degli
> > > indefiniti o meno ai record gerarchicamente
> > > superiori: se ad esempio la provincia
> > > "indefinita" che scegli dall'elenco delle
> > > province del Piemonte sia, a livello teorico,
> > una
> > > "provincia indefinita della regione Piemonte"
> > > distinta dalla "provincia indefinita della
> > > regione Liguria" ma non so se questo dubbio
> > abbia
> > > qualche effetto
> > > pratico.
> >
> > Hola Gatto Selvaggio!
>
> Grande Gian!
Non sono Gian
-
Re: Potresti fare così...Scritto daNon Autenticatoil 2008-06-25 00:05:00.0 alle 2008-06-25 00:05:00.0> Non sono Gian

Hola cico
-
-
-
-
Re: Potresti fare così...Scritto daThe LichÜbermenschil 2008-06-25 22:41:00.0 alle 2008-06-25 22:41:00.0Trollate totali: 21351
- Scritto da:
> In ogni tabella (località, provincia, regione,
> paese, pianeta...) aggiungi ai record esistenti
> un record
> indefinito.
>
> Immagino un'interfaccia dove assegni al record di
> un minerale i valori dei vari campi da caselle a
> discesa, partendo dalle proprietà gerarchicamente
> superiori - per un minerale di cui sai tutto
> sceglieresti:
>
> Stato: Italia
>
> (la casella delle regioni si popola con le
> regioni
> d'Italia)
>
> Regione: Piemonte
>
> (la casella delle province si popola con le
> province
> piemontesi)
>
> Provincia: Torino
>
> (la casella dei comuni si popola con i comuni
> della provincia di
> Torino)
>
> Supponi ora di introdurre i campi indefiniti
> negli elenchi, e di classificare un minerale di
> cui sai solo che proviene dal
> Piemonte.
>
> Stato: Italia
>
> (la casella delle regioni si popola con le
> regioni d'Italia, più "regione
> indefinita")
>
> Regione: Piemonte
>
> (la casella delle province si popola con le
> province piemontesi, più "provincia
> indefinita")
>
> Provincia: Indefinita
>
> (la casella dei comuni si popola con la sola voce
> "indefinito")
>
> Mi resta qualche dubbio sull'appartenenza degli
> indefiniti o meno ai record gerarchicamente
> superiori: se ad esempio la provincia
> "indefinita" che scegli dall'elenco delle
> province del Piemonte sia, a livello teorico, una
> "provincia indefinita della regione Piemonte"
> distinta dalla "provincia indefinita della
> regione Liguria" ma non so se questo dubbio abbia
> qualche effetto
> pratico.
un altro che mi dice tutto quello che so già
porca zozza a livello pratico so benissimo come implementare sto cazzo di database, la mia domanda era sul piano teorico, non pratico-implementativo, quello so benissimo applicarlo da solo
inutile dirle, finora le unoche risposte sensate sono del sassofono e dell' anonimo, penso alex.tg o chi per lui
The Lich

-
Re: Potresti fare così...Scritto daNon Autenticatoil 2008-06-25 23:00:00.0 alle 2008-06-25 23:00:00.0> inutile dirle, finora le unoche risposte sensate
> sono del sassofono e dell' anonimo, penso alex.tg
> o chi per lui
E bè, sono gli unici teorici.-
Re: Potresti fare così...Scritto daNon Autenticatoil 2008-06-25 23:22:00.0 alle 2008-06-25 23:22:00.0
- Scritto da:
> > inutile dirle, finora le unoche risposte sensate
> > sono del sassofono e dell' anonimo, penso
> alex.tg
> > o chi per lui
>
> E bè, sono gli unici teorici.
Ma anche no.-
Re: Potresti fare così...Scritto daNon Autenticatoil 2008-06-25 23:32:00.0 alle 2008-06-25 23:32:00.0> > E bè, sono gli unici teorici.
>
> Ma anche no.
Allora c'è un altro teorico!
P.S. cico lo annoveravo nei praticoni...-
Re: Potresti fare così...Scritto daNon Autenticatoil 2008-06-25 23:42:00.0 alle 2008-06-25 23:42:00.0
- Scritto da:
> > > E bè, sono gli unici teorici.
> >
> > Ma anche no.
>
> Allora c'è un altro teorico!
>
> P.S. cico lo annoveravo nei praticoni...
Fai male
La pratica serve per portare a casa i dané, la teoria è cibo per l'intelletto (ma è una battaglia persa cercare di parlarne sul lavoro)
-
-
-
-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-24 23:43:00.0 alle 2008-06-24 23:43:00.0Guarda domani ti spiego come fare.
Se spiegavi subito a cosa ti serviva non mi sorbivo 89 post di cazzate e te lo spiegavo stasera.
Ciao-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 13:40:00.0 alle 2008-06-25 13:40:00.0- Scritto da:
> Guarda domani ti spiego come fare.
> Se spiegavi subito a cosa ti serviva non mi
> sorbivo 89 post di cazzate e te lo spiegavo
> stasera.
>
> Ciao
Allora, vado a memoria che non ho tempo (e voglia) di rileggermi tutto.
Ti servono 4 tabelle.
Una con id_nazione e descrizione
Una con id_regione id_nazione e descrizione della regione
Una con id_provincia id_regione e descrizione della provincia
In queste tabelle il primo ID è chiave primaria
Infine una quarta tabella con tutti i campi che ti servono più 3 colonne: id_nazione, id_regione, id_provincia che possono anche essere NULL (e il valore di default sarà NULL).
Facendo così, con le join opportune puoi tirare fuori tutti i dati che ti servono anche se hai solo uno dei tre ID (anzi avrai sempre uno solo dei 3 ID).
Fine.-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 14:40:00.0 alle 2008-06-25 14:40:00.0> id_nazione, id_regione,
> id_provincia che possono anche essere NULL (e il
> valore di default sarà NULL).
Più o meno quel che ho proposto io, con la differenza che distinguerei tra il valore indefinito e il valore vuoto (di default).
-
Re: domanda sui databaseScritto daThe LichÜbermenschil 2008-06-25 22:39:00.0 alle 2008-06-25 22:39:00.0Trollate totali: 21351
- Scritto da:
> - Scritto da:
> > Guarda domani ti spiego come fare.
> > Se spiegavi subito a cosa ti serviva non mi
> > sorbivo 89 post di cazzate e te lo spiegavo
> > stasera.
> >
> > Ciao
>
> Allora, vado a memoria che non ho tempo (e
> voglia) di rileggermi
> tutto.
>
> Ti servono 4 tabelle.
>
> Una con id_nazione e descrizione
> Una con id_regione id_nazione e descrizione della
> regione
> Una con id_provincia id_regione e descrizione
> della
> provincia
>
> In queste tabelle il primo ID è chiave primaria
>
> Infine una quarta tabella con tutti i campi che
> ti servono più 3 colonne: id_nazione, id_regione,
> id_provincia che possono anche essere NULL (e il
> valore di default sarà
> NULL).
>
> Facendo così, con le join opportune puoi tirare
> fuori tutti i dati che ti servono anche se hai
> solo uno dei tre ID (anzi avrai sempre uno solo
> dei 3
> ID).
>
> Fine.
se dovevo leggere questo consiglio potevo anche rileggermi quello che ho scritto io, grazie comunque
The Lich

-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 03:39:00.0 alle 2008-06-25 03:39:00.0Non so se ho capito bene cosa vuoi fare, ma ci provo.
La gerachia territoriale va bene come hai detto, con le relazioni:
Stato {nome_stato}
Regione {nome_regione, nome_stato}
Provincia {nome_provincia, nome_regione}
Località {nome_località, nome_provincia}
e le ovvie relazioni (intese come relationship in questo caso) tra gli attributi con stesso nome.
Ho eliminato gli "id" perché a livello concettuale non hanno alcun senso, poi in un'implementazione reale puoi introdurli per ragioni di prestazioni ben sapendo che lo fai perché gli RDBMS sono implementati coi piedi (potrebbero sostituire a livello fisico i riferimenti automaticamente senza esporre numeri con poco senso agli utenti).
Per inciso nella vita reale alcune di quelle "entità" hanno un identificativo univoco diverso dal nome, ben definito e di uso comune da parte degli utenti. Per cui potresti comunque volerlo introdurre (es. codice ISO dello stato, codice della provincia).
Per il resto a livello teorico devi modellare secondo i fatti, anche se sarebbe bello un mondo ideale dove sai sempre la Località dove hai raccolto il campione e ti riporti agli altri livelli tramite la gerarchia.
Quali sono le proposizioni?
Il giorno 1/1/2008 ho raccolto un campione di quarzo in località Luino.
Il giorno 1/2/2008 ho raccolto un campione di pirite in località Legnano.
Il giorno 1/3/2008 ho raccolto un campione di azzurrite nella provincia di Milano.
Il giorno 1/4/2008 ho raccolto un campione di quarzo nella regione Lombardia.
Il giorno 1/5/2008 ho raccolto un campione di pirite nella stato italia.
Quali predicati puoi estrarre dalle precedenti proposizioni?
Il giorno d ho raccolto un campione di m in località c.
Il giorno d ho raccolto un campione di m nella provincia di p.
Il giorno d ho raccolto un campione di m nella regione r.
Il giorno d ho raccolto un campione di m nello stato r.
Le relazioni che si derivano sono:
Campione_Località
{data_raccolta, nome_minerale, nome_località}
Campione_Provincia
{data_raccolta, nome_minerale, nome_provincia}
Campione_Regione
{data_raccolta, nome_minerale, nome_regione}
Campione_Stato
{data_raccolta, nome_minerale, nome_stato}
Con le ovvie relazioni (relationship) con la gerarchia territoriale per attributi con lo stesso nome.
Questo è il modello più ovvio e con le dovute operazioni di unione e join puoi fare tutte le richeste che vuoi.
Ad esempio se vuoi sapere tutte le regioni dove hai trovato campioni di quarzo (in pseudo sql, ti risparmio il Tutorial-D e ometto gli attributi per la join assumendo che il sistema sia in grado di fare una join naturale):
SELECT nome_regione
FROM (
SELECT nome_regione
FROM Campione_Regione
WHERE nome_minerale = 'Quarzo'
UNION
SELECT nome_regione
FROM Campione_Provincia
JOIN Provincia
WHERE nome_minerale = 'Quarzo'
UNION
SELECT nome_regione
FROM Campione_Località
JOIN Località
JOIN Provincia
WHERE nome_minerale = 'Quarzo'
)
GROUP BY
nome_regione
A questo punto se vuoi, ma a livello concettuale sarebbe sufficiente quanto detto, puoi a livello logico usare la tecnica di "generalizzazione":
Campione
{data_raccolta, nome_minerale}
Campione_Località
{data_raccolta, nome_minerale, nome_Località}
Campione_Provincia
{data_raccolta, nome_minerale, nome_provincia}
Campione_Regione
{data_raccolta, nome_minerale, nome_regione}
Campione_Stato
{data_raccolta, nome_minerale, nome_stato}
Così a occhio sembra avere poco senso, ma è solo un preconcetto perché la relazione Campione ha solo gli attributi chiave, ma pensa di avere molti altri attributi comuni tra i 4 predicati:
Campione {data_raccolta, nome_minerale, attributo1, attributo2, .., attributoN}
Nella realtà probabilmente avrai anche un identificativo numerico univoco per il campione raccolto (cosa succede se raccogli due minerali lo stesso giorno nello stesso posto?) e puoi usare quello come chiave. Ho preferito non metterlo per semplicità e perché non è necessario dal punto di vista del modello concettuale.
Verrebbe qualcosa tipo:
Campione
{id_campione, data_raccolta, nome_minerale}
Campione_Località
{id_campione, nome_località}
Campione_Provincia
{id_campione, nome_provincia}
Campione_Regione
{id_campione, nome_regione}
Campione_Stato
{id_campione, nome_stato}
Questo è quanto dice la teoria relazionale secondo Date. Tieni conto che Codd (il padre della teoria), in una fase successiva ha provato ad introdurre alcuni concetti per le informazioni mancanti: i famosi I-mark (valore inapplicabile) e A-mark (valore applicabile ma mancante) che hanno dato origine ai NULL. Date è contro i NULL perché introducono nel modello una logica a più di 2 valori (TRUE, FALSE) complicando il linguaggio di interrogazione (in sql è a 3 valori: TRUE, FALSE e UNKNOWN).
Tieni conto che facendo un modello tipo:
Campione {data_raccolta, nome_minerale, nome_Località, nome_provincia, nome_regione, nome_stato}
non è che i valori che ti mancano sono A-mark (applicabili ma mancanti), sono proprio inapplicabili. Per questo il modello corretto è quello sopra. D'altra parte quale sarebbe il predicato della precedente relazione? E che proposizioni salterebbero fuori istanziando il predicato con i vari valori?
Detto questo, a livello fisico fai un po' quello che vuoi tanto se ne vedono di tutti i colori
L'importante è farlo con cognizione, sapendo bene che ogni trade-off che fai per le prestazioni potrebbe originare problemi di integrità (logica ovviamente).
Ti sconsiglio vivamente di cercare di ragionare in questo modo (semplice e lineare) con i tecnici che leggono come fare le basi dati sui "libri seri" perché sono di un'approssimazione sconsolante.
Se decidi di intramprendere la tortuosa strada degli oggetti e dei dbms ad oggetti sappi che regna il caos e la confusione, a cominciare dalla terminologia di base. Se ti può servire per il lavoro studialo, va di moda. Se ti interessa invece l'argomento a livello personale teorico ci le estensioni al modello relazionale di Date. Tieni presente che, al contrario dei luoghi comuni degli smanettoni, nella teoria nulla vieta che un attributo di una relazione sia a sua volta una relazione. E nulla vieta che un tipo dato abbia una struttura interna complessa.-
Re: domanda sui databaseScritto daavvelentaniCubicolarioil 2008-06-25 07:38:00.0 alle 2008-06-25 07:38:00.0Trollate totali: 18184
- Scritto da:
> Questo è quanto dice la teoria relazionale
> secondo Date. Tieni conto che Codd (il padre
> della teoria), in una fase successiva ha provato
> ad introdurre alcuni concetti per le informazioni
> mancanti: i famosi I-mark (valore inapplicabile)
> e A-mark (valore applicabile ma mancante) che
> hanno dato origine ai NULL. Date è contro i NULL
> perché introducono nel modello una logica a più
> di 2 valori (TRUE, FALSE) complicando il
> linguaggio di interrogazione (in sql è a 3
> valori: TRUE, FALSE e
> UNKNOWN).
Si`, il problema e` che il resto del modello e` intrinsecamente binario: o stai in una relazione o non ci stai. Quindi Unknwon ha la malsana tendenza a diventare False.
E se gia` il fatto che:
x = 'A' and (y = 'prova' or y <> 'prova')
sia Unknown per y = null e` discutibile che sia False e` proprio
E poi viene gestito in maniera altamente inconsistente:
http://www.sqlite.org/nulls.html
>
> Tieni conto che facendo un modello tipo:
>
> Campione {data_raccolta,
> nome_minerale, nome_Località,
> nome_provincia, nome_regione,
> nome_stato}
>
> non è che i valori che ti mancano sono A-mark
> (applicabili ma mancanti), sono proprio
> inapplicabili. Per questo il modello corretto è
> quello sopra. D'altra parte quale sarebbe il
> predicato della precedente relazione? E che
> proposizioni salterebbero fuori istanziando il
> predicato con i vari
> valori?
Non e` vero, da qualche parte il campione e` stato raccolto, solo che lui non lo sa di preciso.
I think happiness is love
- Vladimir Putin-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 11:04:00.0 alle 2008-06-25 11:04:00.0> Non e` vero, da qualche parte il campione e`
> stato raccolto, solo che lui non lo sa di
> preciso.
Si, ripensandoci hai ragione.
E ripensandoci anche l'operazione di GROUP BY nel pezzo pseudo-sql non serve perché l'operazione di unione elimina i duplicati per definizione.
Colpa dell'ora tarda
-
Re: domanda sui databaseScritto daavvelentaniCubicolarioil 2008-06-25 11:19:00.0 alle 2008-06-25 11:19:00.0Trollate totali: 18184- Scritto da:
> > Non e` vero, da qualche parte il campione e`
> > stato raccolto, solo che lui non lo sa di
> > preciso.
>
> Si, ripensandoci hai ragione.
>
> E ripensandoci anche l'operazione di GROUP BY nel
> pezzo pseudo-sql non serve perché l'operazione di
> unione elimina i duplicati per
> definizione.
>
> Colpa dell'ora tarda
Comunque alla fine per la collezione di sassi del licchione non vale la pena. Farebbe meglio a fare tanti file di testo:
"Questo sasso fatto cosi` l'ho raccolto mentre passeggiavo sul viottolo che va al lago e pensavo a quanto e` figo essere un lich"
e passarli sotto un indicizzatore.
Free-text search rulez!I think happiness is love
- Vladimir Putin
-
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 10:44:00.0 alle 2008-06-25 10:44:00.0questo è il lavoro del dba o è quello del suo sottoposto?
-
-
Re: domanda sui databaseScritto daNon Autenticatoil 2008-06-25 10:16:00.0 alle 2008-06-25 10:16:00.0Oppure potresti usare un campo XML per la posizione geografica (Se il DBMS lo supporta)
In tal caso basta definire un DTD opportuno.
-
