[MySQL] Suggerimento per impostazione struttura tabelle

lunedì 18 aprile 2011 - 10.29
Tag Elenco Tags  MySQL 5.5  |  MySQL 5.1  |  MySQL 5.0  |  MySQL 4.1  |  MySQL 4.0  |  MySQL 2.23

dandi.box Profilo | Junior Member

Ciao a tutti, avrei alcune domande relative a MySQL (dato che sono abituato a creare strutture dati con Sql Server):

- è corretto usare varchar(num_char) per campi di testo e text per campi di testo senza limite (quello che in SQL server sarebbe varchar(MAX)???

- è corretto usare il campo TinyInt(1) per gestire valori boolean

- dato che dovrò sincronizzare le tabelle ho creato un GUID varchar(36), come posso generare automaticamente questo valore ad ogni inserimento di records nelle tabelle

- oltre al mio caso, quando è consigliabile usare un GUID e quando un ID?

- per ogni record vorrei memorizzare la data dell'ultima operazione sul record: voi preferite usare un timestamp oppure un datatime con valore impstato a getdate()??

- no notato che viene spesso usato InnoDB.... per quale motivo??

- per il salvataggio dei trigger è meglio usare una notazione del tipo tr_tabella_azione oppure tr_azione?? in sintesi vorrei capire se il nome utilizzato per una tabella entra in conflitto con quello usato in un'altra oppure no

- come posso cambiare l'ordine della disposizione dei campi di una tabella?? (io uso PhpMyAdmin e Workbech ma non mi sembra possibile)

Grazie infinite!!!

alx_81 Profilo | Guru

>Ciao a tutti, avrei alcune domande relative a MySQL (dato che
>sono abituato a creare strutture dati con Sql Server):
Ciao

>- è corretto usare varchar(num_char) per campi di testo e text
>per campi di testo senza limite (quello che in SQL server sarebbe
>varchar(MAX)???
leggi qui: http://dev.mysql.com/doc/refman/5.0/en/blob.html

>- è corretto usare il campo TinyInt(1) per gestire valori boolean
sì, sono sinonimi:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

>- dato che dovrò sincronizzare le tabelle ho creato un GUID varchar(36),
>come posso generare automaticamente questo valore ad ogni inserimento
>di records nelle tabelle
leggi qui: http://forums.mysql.com/read.php?20,9430,9695

>- oltre al mio caso, quando è consigliabile usare un GUID e quando un ID?
in generale per ragioni di performance e di occupazione spazio in memoria, se ti basta un progressivo meglio ID Autonumber:
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

>- per ogni record vorrei memorizzare la data dell'ultima operazione
>sul record: voi preferite usare un timestamp oppure un datatime
>con valore impstato a getdate()??
per sql server: http://www.sqlteam.com/article/timestamps-vs-datetime-data-types
per mysql: http://dev.mysql.com/doc/refman/5.5/en/datetime.html

>- no notato che viene spesso usato InnoDB.... per quale motivo??
innoDB è uno storage engine: http://dev.mysql.com/doc/refman/5.0/en/innodb-storage-engine.html
uno storage engine è un pattern che esprime il livello di isolamento delle transazioni, il supporto per varie funzionalità del motore, ecc.
Leggi qui per maggiori info: http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html

>- per il salvataggio dei trigger è meglio usare una notazione
>del tipo tr_tabella_azione oppure tr_azione?? in sintesi vorrei
>capire se il nome utilizzato per una tabella entra in conflitto
>con quello usato in un'altra oppure no
In generale un trigger è legato ad una tabella ma non puoi duplicarne il nome. Almeno su sql server. Puoi ripetere lo stesso nome se cambi schema.
Su mysql credo proprio che sia lo stesso.

>- come posso cambiare l'ordine della disposizione dei campi di
>una tabella?? (io uso PhpMyAdmin e Workbech ma non mi sembra possibile)
L'orine dei campi in tabella non è che un informazione VISUALE. Non conta nulla poi nella struttura della tabella. Di conseguenza, se proprio ti dà noia quello che hai e lo vuoi cambiare, dovrai droppare e ricreare la tabella con tanto di eventuali indici, fk, trigger, ecc. Ah, e ricordati i dati

>Grazie infinite!!!
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5