<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>davideferrero.com &#187; Database</title>
	<atom:link href="http://blog.davideferrero.com/tag/database/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.davideferrero.com</link>
	<description>&#62; Web developer for passion</description>
	<lastBuildDate>Sun, 13 Nov 2011 15:55:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Differenze tra il tipo char e il varchar in MySQL</title>
		<link>http://blog.davideferrero.com/2010/05/differenze-char-varchar-mysql/</link>
		<comments>http://blog.davideferrero.com/2010/05/differenze-char-varchar-mysql/#comments</comments>
		<pubDate>Sun, 30 May 2010 17:28:34 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Char]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Varchar]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=451</guid>
		<description><![CDATA[Prosegue il mio lavoro insieme a MySQL, ormai lo sto usando intensamente in molti programmi non solo in php, ma anche nella programmazione in java. Usandolo così massicciamente sto continuando a scoprire cose interessanti. Probabilmente quella di cui vi parlo oggi, non è una novità per qualcuno, ma credo sia bene chiarirla per chi non [...]]]></description>
			<content:encoded><![CDATA[<p>Prosegue il mio lavoro insieme a MySQL, ormai lo sto usando intensamente in molti programmi non solo in php, ma anche nella programmazione in java.</p>
<p>Usandolo così massicciamente sto continuando a scoprire cose interessanti. Probabilmente quella di cui vi parlo oggi, non è una novità per qualcuno, ma credo sia bene chiarirla per chi non lo sapesse.</p>
<p>Qualche giorno fa stavo lavorando su un database che non ho creato io e mi sono imbattuto in un campo <strong>CHAR</strong>. Subito non ci ho fatto caso, ma poi mi è venuto in mente che di solito quando devo dichiarare un campo stringa, uso il tipo <strong>VARCHAR</strong>. Mi sono così documentato un po&#8217;, cercando su google ho trovato diverse spiegazioni su forum, ma come sapete di quello che viene detto sui forum è sempre meglio non fidarsi troppo. Ho fatto quindi direttamente riferimento alla <a title="MySQL reference manual" href="http://dev.mysql.com/doc/refman/5.1/en/" target="_blank">guida ufficiale MySQL (in inglese)</a> e ho scoperto quello che mi interessava.</p>
<p>Innanzitutto prima di MySQL 5.0.3 sia il tipo <strong>char</strong> sia il <strong>varchar</strong> potevano essere dimensionati da 0 a 255 caratteri. Da MySQL 5.0.3 in poi il tipo <strong>varchar</strong> supporta lunghezza da 0 a 65535 caratteri. Oltre a questa differenza di dimensionamento c&#8217;è un&#8217;altra sostanziale differenza: quando dimensionate un campo con il tipo <strong>char</strong>, ad esempio char(4) verrà effettivamente occupato spazio per 4 caratteri, anche se il valore che inserirete nel campo sarà di un solo carattere. Lo spazio rimanente verrà riempito con degli spazi. A differenza del <strong>char</strong>, il <strong>varchar</strong> invece utilizza solamente lo spazio necessario, richiesto dal valore inserito nel campo più un byte (non sono riuscito a trovare il motivo, ma credo sia il famoso &#8220;tappo&#8221; in stile C).</p>
<p>Riepilogando quindi:</p>
<table border="1">
<tbody>
<tr>
<td><strong>Valore</strong></td>
<td><code>CHAR(4)</code></td>
<td><strong>Spazio richiesto<br />
</strong></td>
<td><code>VARCHAR(4)</code></td>
<td><strong>Spazio richiesto<br />
</strong></td>
</tr>
<tr>
<td><code>''</code></td>
<td><code>'    '</code></td>
<td>4 bytes</td>
<td><code>''</code></td>
<td>1 byte</td>
</tr>
<tr>
<td><code>'ab'</code></td>
<td><code>'ab  '</code></td>
<td>4 bytes</td>
<td><code>'ab'</code></td>
<td>3 bytes</td>
</tr>
<tr>
<td><code>'abcd'</code></td>
<td><code>'abcd'</code></td>
<td>4 bytes</td>
<td><code>'abcd'</code></td>
<td>5 bytes</td>
</tr>
<tr>
<td><code>'abcdefgh'</code></td>
<td><code>'abcd'</code></td>
<td>4 bytes</td>
<td><code>'abcd'</code></td>
<td>5 bytes</td>
</tr>
</tbody>
</table>
<p>Per finire, come si può vedere nell&#8217;ultima riga dell&#8217;esempio, per tutti e due i tipi, se il valore supera la lunghezza effettiva dichiarata, esso verrà troncato.</p>
<p>In sostanza se sapete che nel campo che state dichiarando dovrete inserire valori sempre della stessa lunghezza, senza eccezioni, potrebbe essere intelligente dichiararlo <strong>char</strong> mentre invece se, come succede nella stragrande maggioranza dei casi, il campo che state dichiarando conterrà stringhe generiche, allora vi converrà utilizzare il tipo <strong>varchar</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2010/05/differenze-char-varchar-mysql/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Un tool open source per la progettazione dei database</title>
		<link>http://blog.davideferrero.com/2009/12/un-tool-open-source-per-la-progettazione-dei-database/</link>
		<comments>http://blog.davideferrero.com/2009/12/un-tool-open-source-per-la-progettazione-dei-database/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 15:15:05 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[ER]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SQL Progettazione]]></category>

		<guid isPermaLink="false">http://blog.davideferrero.com/?p=311</guid>
		<description><![CDATA[Ogni buon programmatore che si rispetti sa che non si può creare un database dal nulla. Proprio i database sono alla base di qualsiasi software degno di nota, e sono indispensabili per la realizzazione di un sito web. Da buon fanatico di progetti open source, ma soprattutto dell&#8217;ambiente php-mysql per la creazione di web application [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="MySQL Workbench" src="http://lh4.ggpht.com/__IYVAt3JPe8/SyUR8pcbT6I/AAAAAAAAB6I/7ONtTszU-x4/s400/workbench.png" alt="" width="400" height="209" /></p>
<p>Ogni buon programmatore che si rispetti sa che non si può creare un database dal nulla. Proprio i database sono alla base di qualsiasi software degno di nota, e sono indispensabili per la realizzazione di un sito web.</p>
<p>Da buon fanatico di progetti open source, ma soprattutto dell&#8217;ambiente php-mysql per la creazione di web application mi sono dato da fare nel <a href="http://en.wikipedia.org/wiki/Google_%28verb%29" target="_blank">mio sport preferito</a> e ho trovato un tool davvero interessante.</p>
<p>Si chiama <a href="http://wb.mysql.com/" target="_blank">MySQL workbench</a> e proviene dagli stessi laboratori dai quali ci viene fornito uno dei DBMS open source più conosciuti al mondo. E&#8217; da qualche mese che lo uso ogni volta in cui ho bisogno di realizzare un db, a lavoro o a casa e lo trovo davvero utile e funzionale. Che cos&#8217;è workbench? Semplice! Un sw che consente di progettare un database, partendo dalla realizzazione dello schema E-R e risparmiando molto lavoro a noi poveri programmatori.</p>
<p style="text-align: center;"><img class="aligncenter" title="ER Schema" src="http://lh4.ggpht.com/__IYVAt3JPe8/SzOEiLMikpI/AAAAAAAAB7Q/AuFJmsTAgrU/s400/workbench_visual_design_linux.png" alt="" width="400" height="296" /></p>
<p>In sostanza basta disegnare lo schema del database inserendo tabelle, chiavi primarie, chiavi esterne, indici, trigger, viste e chi più ne ha più ne metta, e workbench farà per noi tutto il resto. Una volta disegnato lo schema infatti, sarà possibile esportare la struttura del db creato e reimportarla nel nostro DBMS. Io uso abitualmente MySQL e workbench mi permette di esportare in un file .sql le query di creazione della mia base dati, pienamente compatibili con questo DBMS, e di creare con una <em>import</em> il database vero e proprio.</p>
<p>Esiste in due versioni, la community e la standard, la prima rilasciata gratuitamente sotto licenza GPL mentre la seconda a pagamento (e con alcune funzionalità in più) al costo di 79$ per svillupatore per anno. Ovviamente non mi sono potuto permettere di acquistare la versione standard, ma la community svolge il suo egregio lavoro in maniera impeccabile.</p>
<p>Dimenticavo, workbench è multipiattaforma ossia esiste nella versione per Linux (comodo pacchetto debian autoinstallante, o rpm), nella versione per Mac OS X e nella versione per Windows in modo che nessuno possa lamentarsi e tutti possano progettare in tutta serenità i propri database sul proprio sistema preferito.</p>
<p>Direi che non vi resta che <a href="http://dev.mysql.com/downloads/workbench/5.0.html" target="_blank">provarlo</a>!<br />
[ad]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davideferrero.com/2009/12/un-tool-open-source-per-la-progettazione-dei-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

