Newsgroup: it.comp.software.database
Titolo: [MYSQL] Progettazione del db

Salve a tutti, ho bisogno di un piccolo aiuto nella progettazione di un
database: purtroppo è la prima volta che 'lo devo fare io' solitamente
il mio compito è prelevarne i dati e basta :-)
Il db è mysql, con cui non ho esperienza, avendo sempre utilizzato
postgres. L'applicazione che utilizzerà il db deve permettere
l'autenticazione, da qui il campo 'active' (l'utente riceve una e-mail
con un link per attivare l'account...).
Il campo g_id mi serve per capire il 'livello' dell'utente, in modo da
rendergli disponibile o meno alcune parti dell'applicazione.
Ecco ciò che ho fatto:
create table users (
        u_id mediumint default '0' not null auto_increment,
	g_id tinyint default '0' not null,
	nome varchar (20) not null,
	cognome varchar (20) not null,
	e_mail varchar (40) not null,
	passwd char (16) not null,
	active char (1)	default 'n' not	null, 
	azienda varchar	(40) not null,
	nazione char (2) not null,
	p_iva varchar (20) not null,
	telefono varchar (20) not null,
	fax varchar (20) not null,
	primary	key (u_id),
	unique u_id (u_id)											        );
Oltre al fatto che il tipo di p_iva è evidentemente sbagliato,
commenti/suggerimeti/*PLONK*/ROTFL sono assolutamente graditi :-P
Forse mi conviene splittare la tabella in più parti ? 
Un'altra cosa: ho letto sul manuale che i tipi char dovrebbero essere
convertiti in varchar: sempre considerando la forte probabilità che non
abbia capito un cazzo perchè con il campo password il tipo viene
effettivamente convertito (ma perchè ???) mentre nel caso di active e
nazione no ? 'E' colpa di mysql'(TM) ?
Grazie per l'attenzione,
-- 
oOO()             |Nicholas Wieland|
/ _/              |nicholas_wieland|
|/ [ Step on the ]|    @
yahoo.it
   |
\_)[ right  foot ]|________________|

 abbia capito un cazzo perchè con il campo password il tipo viene
forse la seconda che hai detto
/G

 convertiti in varchar:
   E perche` mai? Se esistono due domini seprati, un motivo ci sara`...
-- 
Alla prossima,
Marco

 quel prodotto fosse veramente valido
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| u_id     | mediumint(9) |      | PRI | NULL    | auto_increment |
| g_id     | tinyint(4)   |      |     | 0       |                |
| nome     | varchar(20)  |      |     |         |                |
| cognome  | varchar(20)  |      |     |         |                |
| e_mail   | varchar(40)  |      |     |         |                |
| passwd   | varchar(16)  |      |     |         |                |
| active   | char(1)      |      |     | n       |                |
| azienda  | varchar(40)  |      |     |         |                |
| nazione  | char(2)      |      |     |         |                |
| p_iva    | varchar(20)  |      |     |         |                |
| telefono | varchar(20)  |      |     |         |                |
| fax      | varchar(20)  |      |     |         |                |
+----------+--------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)
Guarda passwd...
'se la vostra tabella ha almeno un campo varchar, tutti i campi di
carattere sono convertiti in campi di tipo varchar anche se li definite
diversamente'
PHP4 - Guida per lo sviluppatore
boh...
Grazie per i consigli, ciao !


    E perche` mai? Se esistono due domini seprati, un motivo ci sara`...
Ho risposto sotto... e in effetti lo fa, anche se a metà :p
Ciao e grazie mille :)


 PHP4 - Guida per lo sviluppatore
Bella cazzata...
certo il modo in cui vengono memorizzati i tipi di dato internamente
è roba di pertinenza del DBMS, però se io dico C(40) mi aspetto che
il mio campo sia lungo 40 sempre e comunque... come lo standard
prevede
Ho dato un occhiata alla documentazione mySql, in particolare questo
punto:
6.5.3.1 Silent Column Specification Changes
più lo conosco sto coso e più mi sembra IMVHO una enorme cazzatona...
/G

 snip >
Ciao e grazie per l'aiuto
