Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-06-2009, 12:39   #1
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
[SQL-forme normali] campo letterale come chiave esterna. viola qualche forma normale?

ciao a tutti ho un database di un piccolo forum semplicissimo fatto da me per la maturità.

utenti(username, password, cognome, nome, data_iscrizione, tipo_utente, cancellato)
post(id, messaggio, autore, topic)
topic(id, titolo, sezione, autore)
sezioni(id, nome, autore)

in corsivo le chiavi esterne. visto che ho come chiave primaria di utenti una stringa con lo username e me lo ritrovo come chiave esterna nelle altre tabelle, vorrei sapere se questo viola qualche forma normale. o se in generale questo db non vi sembra normalizzato.

grazie
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2009, 12:50   #2
-MiStO-
Senior Member
 
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2287
vado a memoria:direi di no...
io ricordo, per le forme normali, vincoli su:
campi multivalore
dipendenza parziale dalla chiave
campi con dipendenza "indiretta" dalla chiave
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante...

-MiStO- è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2009, 12:53   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
ti ringrazio, vediamo se qualcuno conferma
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2009, 15:43   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da ndakota Guarda i messaggi
utenti(username, password, cognome, nome, data_iscrizione, tipo_utente, cancellato)
post(id, messaggio, autore, topic)
topic(id, titolo, sezione, autore)
sezioni(id, nome, autore)
1. tipo_utente non sarebbe meglio fosse scorporato ulteriormente, con una tabella "tipi_utente" ? ( direttore, moderatore, vip, utente_senior, ecc... ).

2. autore in "sezioni" non è un tantino ridondante ? Poi, dipende, se solo il direttore o anche altri utenti possano o meno creare sezioni...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2009, 16:48   #5
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
1. tipo_utente non sarebbe meglio fosse scorporato ulteriormente, con una tabella "tipi_utente" ? ( direttore, moderatore, vip, utente_senior, ecc... ).

non so, sarebbe una tabella con due campi: tipo utente e username, mi sembra uno spreco.

2. autore in "sezioni" non è un tantino ridondante ? Poi, dipende, se solo il direttore o anche altri utenti possano o meno creare sezioni...

questo si è vero, se ne può fare sicuramente a meno, è solo un dettaglio.
grazie
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2009, 18:38   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Non penso sia da considerare uno spreco, anzi.
Io intendevo questo :

utenti > username(PK), password, cognome, nome, data_iscrizione, tipo_utente (FK), cancellato)

tipi_utente > tipo_utente (PK), descrizione, ..., ...

La relazione è : 1 tipo_utente --> molti utenti.

Immagina di dover gestire, ad esempio, il numero di post necessari per passare dallo status di "junior member" a quello di "member" ecc...
Ecco un'informazione da mettere nella tabella "tipi_utente", e NON direttamente nella tabella "utenti". Tutto ciò va proprio nella direzione della normalizzazione, non credi ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2009, 19:24   #7
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
è vero hai ragione.. però nel mio caso posso dire che è normalizzato? spero di si perchè ormai il forum l'ho fatto tutto così, mi serve dire che è normalizzato per parlare della normalizzazione altrimenti sarebbe un argomento da non tirare in mezzo
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2009, 21:12   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da ndakota Guarda i messaggi
è vero hai ragione.. però nel mio caso posso dire che è normalizzato? spero di si perchè ormai il forum l'ho fatto tutto così, mi serve dire che è normalizzato per parlare della normalizzazione altrimenti sarebbe un argomento da non tirare in mezzo
E' una questione di interpretazione : così com'è sì, ma quella tabella utenti lascia pensare che in teoria posso inserire un qualsiasi "tipo_utente", anche inventato di sana pianta, esattamente come posso inserire nome, cognome, password ecc. inventati.
A livello di database ad es. non c'è controllo su nome e cognome. Potrei inserire il classico "Ayeye Brazorf", senza sollevare eccezioni.
Ma che io possa fare lo stesso con tipo_utente mi pare un punto debole del DB abbastanza grave. Mettiamola così : se fossi un "esaminatore" non te la passerei liscia.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2009, 01:03   #9
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
E' una questione di interpretazione : così com'è sì, ma quella tabella utenti lascia pensare che in teoria posso inserire un qualsiasi "tipo_utente", anche inventato di sana pianta, esattamente come posso inserire nome, cognome, password ecc. inventati.
A livello di database ad es. non c'è controllo su nome e cognome. Potrei inserire il classico "Ayeye Brazorf", senza sollevare eccezioni.
Ma che io possa fare lo stesso con tipo_utente mi pare un punto debole del DB abbastanza grave. Mettiamola così : se fossi un "esaminatore" non te la passerei liscia.
vabbè ma scusa allora lo stesso si può dire per la data e ora di registrazione.. ma in realtà uno non può mica metterci quelle che vuole perchè nella query userò NOW() così come nella creazione di un nuovo utente inserirò sempre utente_normale come tipo utente.. poi potrà essere cambiato chessò in moderatore o amministratore da un amministratore sbaglio?
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2009, 13:42   #10
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da ndakota Guarda i messaggi
vabbè ma scusa allora lo stesso si può dire per la data e ora di registrazione.. ma in realtà uno non può mica metterci quelle che vuole perchè nella query userò NOW() così come nella creazione di un nuovo utente inserirò sempre utente_normale come tipo utente.. poi potrà essere cambiato chessò in moderatore o amministratore da un amministratore sbaglio?
Non ho proprio detto che tu abbia "sbagliato", sicuramente a mio modo di vedere è una leggerezza che qualcuno potrebbe far notare.
E' come se tu avessi, che so, un DB di una videoteca, senza avere una tabella dei "generi" ( azione, drammatico, commedia, ecc... ), un DB di un magazzino senza una tabella "tipi_prodotto", e così via.
tipo_utente sottende un elenco preesistente da cui scegliere un elemento, mentre nome, cognome, password, data, sono dati puri.
L'elenco dei tipi_utente possbili, tu dici, lo gestisco dall'applicazione. E se poi vorrò eliminare/aggiungere un tipo_utente ? O peggio ancora, se vorrò modificare un tipo_utente ? Mettiamo che io, amministratore oggi decida che l'utente "senior" debba chiamarsi "superuser". Che faccio ? Vado in giro per il DB e modifico tutti gli utenti che erano senior...
Una tabella elenco, tipi_utente, generi, tipi_prodotto, ovunque ci siano elenchi definiti da gestire è la scelta migliore, tutto qui. Era un consiglio, più che altro, ma se hai già scritto anche il Forum... Ma non insegnano che prima di scrivere codice bisognerebbe prima avere definito/normalizzato al 100% il DB ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2009, 13:51   #11
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
lo so, ci ho pensato dopo ad aggiungere la normalizzazione

comunque il problema l'ho "risolto" elegantemente.. semplicemente nella tesina scritta ho tolto l'attributo tipo_utente.. questo perché non c'è nient'altro che ne giustifichi la presenza, se ne può fare anche a meno. Ovviamente nel forum rimane, se qualcuno mi chiede qualcosa dico che sono aggiunte fatte dopo per renderlo più usabile ma non credo proprio che qualcuno si metta a guardare il codice

grazie comunque
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2009, 14:29   #12
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da ndakota Guarda i messaggi
lo so, ci ho pensato dopo ad aggiungere la normalizzazione

comunque il problema l'ho "risolto" elegantemente.. semplicemente nella tesina scritta ho tolto l'attributo tipo_utente.. questo perché non c'è nient'altro che ne giustifichi la presenza, se ne può fare anche a meno. Ovviamente nel forum rimane, se qualcuno mi chiede qualcosa dico che sono aggiunte fatte dopo per renderlo più usabile ma non credo proprio che qualcuno si metta a guardare il codice

grazie comunque
Un po' come un mio collega-amico alla tesina di calcolatori elettronici.
Il professore aveva imposto "Mi raccomando, usate interrupt ed IRQ senno' non ve la passo"

E il suo codice iniziava con tutta una serie di EQU costanti per pilotare Interrupt, IRQ, DMA
e poi non li ha usati, perche' non aveva capito come usarli.

E' passato lo stesso, secondo te hanno letto il codice?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2009, 15:31   #13
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
provo a indovinare: no

comunque ho capito la lezione ma non ho alternativa, è tardi.. e per inciso, il motivo perché non ho voglia di mettere a posto le cose è che la mia tesina mi fa schifo, avrei voluto fare tutt'altro.. ormai è andata è così
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2009, 18:13   #14
=KaTaKliSm4=
Senior Member
 
L'Avatar di =KaTaKliSm4=
 
Iscritto dal: Jul 2006
Città: Altamura
Messaggi: 919
Utenti potresti scorporarlo ulteriormente....

in :

Login(NomeUtente,Password,IdUtente)

Con vincolo non duplicabile su NomeUtente

Utenti(IDUtente,Nome,Cognome,Data,ecc,ecc...)

Cosi avresti un'anagrafica con le relative informazioni di login
__________________
Trattative : http://swdev.altervista.org/VenditeAcquisti.txt Blog Tecnico : http://blogs.dotnethell.it/SwDev/
Desktop : i7 920,GTX580 PALIT, Obsidian 800D, 6GB Corsair, OCZ Vertex 3 240gb.
Desktop 2 : iMac 27'' MID 2011 i5, 4GB

Ultima modifica di =KaTaKliSm4= : 20-06-2009 alle 18:15. Motivo: Errore di ortografia :)
=KaTaKliSm4= è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2009, 18:19   #15
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da =KaTaKliSm4= Guarda i messaggi
Utenti potresti scorporarlo ulteriormente....

in :

Login(NomeUtente,Password,IdUtente)

Con vincolo non duplicabile su NomeUtente

Utenti(IDUtente,Nome,Cognome,Data,ecc,ecc...)

Cosi avresti un'anagrafica con le relative informazioni di login
ti ringrazio
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2009, 20:49   #16
=KaTaKliSm4=
Senior Member
 
L'Avatar di =KaTaKliSm4=
 
Iscritto dal: Jul 2006
Città: Altamura
Messaggi: 919
Quote:
Originariamente inviato da ndakota Guarda i messaggi
ti ringrazio
Non è troppo tardi non rpeoccuparti hai tempo ancora.....non tantissimo ma ne hai!

Comunque se vuoi parlare della normalizzazione leva quel Tipo_Utente....

Se lo lasci cosi ci sarebbero delle anomalie di inserimento in quanto....ti faccio un'esempio, con l'attuale modello E/R se io volessi aggiungere il tipo utente "Appena Iscritto" come dovrei fare?Aggiungere una nuova anagrafica ed un nuovo login? Non va bene

P.S 2) Togli quel "cancellato" nella pratica reale è poco corretto!L'utente che elimina la registrazione non fa piu parte del database, ne consegue che, dovresti creare o una tabella "Storico Anagrafica/Login" o meglio ancora "spostare" i record cancellati su un'altro database(magari annuale) che fa da storico! Io qualche idea te l'ho buttata giu....tocca a te ora

E non demordere....in 4 giorni ho scritto tutto il sorgente in Vb.net e creato il database per la gestione di una palestra....l'ho fatto io...puoi farlo tu

Buona maturità!Anche a me ahhahahahahah
__________________
Trattative : http://swdev.altervista.org/VenditeAcquisti.txt Blog Tecnico : http://blogs.dotnethell.it/SwDev/
Desktop : i7 920,GTX580 PALIT, Obsidian 800D, 6GB Corsair, OCZ Vertex 3 240gb.
Desktop 2 : iMac 27'' MID 2011 i5, 4GB
=KaTaKliSm4= è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2009, 21:21   #17
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da =KaTaKliSm4= Guarda i messaggi
Non è troppo tardi non rpeoccuparti hai tempo ancora.....non tantissimo ma ne hai!

Comunque se vuoi parlare della normalizzazione leva quel Tipo_Utente....

Se lo lasci cosi ci sarebbero delle anomalie di inserimento in quanto....ti faccio un'esempio, con l'attuale modello E/R se io volessi aggiungere il tipo utente "Appena Iscritto" come dovrei fare?Aggiungere una nuova anagrafica ed un nuovo login? Non va bene

P.S 2) Togli quel "cancellato" nella pratica reale è poco corretto!L'utente che elimina la registrazione non fa piu parte del database, ne consegue che, dovresti creare o una tabella "Storico Anagrafica/Login" o meglio ancora "spostare" i record cancellati su un'altro database(magari annuale) che fa da storico! Io qualche idea te l'ho buttata giu....tocca a te ora

E non demordere....in 4 giorni ho scritto tutto il sorgente in Vb.net e creato il database per la gestione di una palestra....l'ho fatto io...puoi farlo tu

Buona maturità!Anche a me ahhahahahahah
buona maturità a entrambi allora e grazie
ndakota è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Sembra ormai certo: la prossima Xbox sar...
“Solutions Beyond Displays”: la strategi...
La società europea The Exploratio...
Dalle auto ai robot umanoidi: Faraday Fu...
Vodafone annuncia la dismissione di un s...
Stiga lancia i nuovi robot tagliaerba co...
Bullismo e cyberbullismo, Keenetic lanci...
Con AI Skills Checker Bitdefender mette ...
E-bike giapponese con 1.000 km di autono...
Un eVTOL con cui basta saper andare in b...
Dal mercato cinese al mondo: HONOR firma...
Sovranità digitale: l'UE sperimen...
Accesso alla memoria su Windows 11 solo ...
iPhone 18 Pro Max con batteria da oltre ...
Windows 11, cali di prestazioni sulle GP...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v