<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://www.designmagick.com/templates/newdesign/rssdisplay.xslt" type="text/xsl" ?>
<rss version="2.0">
  <channel>
	<title>PostgreSQL &amp; PHP Tutorials - Rss Articles Feed</title>
	<link>http://www.designmagick.com/rss.php?article</link>
	<description />
	<language>en-us</language>
	<generator>MyCMS (copyright DesignMagick)</generator>
	<webMaster>chris@designmagick.com</webMaster>
	<lastBuildDate>Thu, 09 Sep 2010 19:27:52 -0400</lastBuildDate>
	<ttl>20</ttl>

	<item>
  <title>Group Concat In PostgreSQL</title>
  <link>http://www.designmagick.com/article/38/Group-Concat-In-PostgreSQL</link>
  <description>Group Concat is a useful mysql function, but how do we get the same results in PostgreSQL?&lt;br /&gt;
</description>
  <pubDate>Sat, 16 Jun 2007 07:55:49 -0400</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/38/Group-Concat-In-PostgreSQL</guid>
</item>
<item>
  <title>Database Design Issues</title>
  <link>http://www.designmagick.com/article/36/Database-Design-Issues</link>
  <description>Database normalization and design issues is a difficult topic to write about. A lot of it depends on the application you are writing and how you want to access the data.&lt;br /&gt;
&lt;br /&gt;
Whilst writing my forum, I decided to do things slightly differently to a normalized setup to speed things up.&lt;br /&gt;
&lt;br /&gt;
Here's a look at how to achieve some nice improvements by adjusting a database design and using some postgresql features like triggers and functions.&lt;br /&gt;
</description>
  <pubDate>Thu, 20 Apr 2006 08:54:51 -0400</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/36/Database-Design-Issues</guid>
</item>
<item>
  <title>Introduction to Database Joins</title>
  <link>http://www.designmagick.com/article/32/Introduction-to-Database-Joins</link>
  <description>Database joins are an essential skill to learn, whether it's using PostgreSQL or any other database management system.</description>
  <pubDate>Sun, 02 Apr 2006 08:34:24 -0400</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/32/Introduction-to-Database-Joins</guid>
</item>
<item>
  <title>Creating a Cache</title>
  <link>http://www.designmagick.com/article/31/Creating-a-Cache</link>
  <description>I decided to create a simple cache system for this site, to cut down on the number of database queries being run.&lt;br /&gt;
&lt;br /&gt;
Here's a look at how I did it, what it caches and how simple it is to get up and running.&lt;br /&gt;
</description>
  <pubDate>Sun, 02 Apr 2006 07:08:32 -0400</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/31/Creating-a-Cache</guid>
</item>
<item>
  <title>PostgreSQL Enum Types</title>
  <link>http://www.designmagick.com/article/29/PostgreSQL-Enum-Types</link>
  <description>An enum datatype allows only certain values to be entered into a particular field (for example - 'red', 'blue', 'yellow', 'purple' for favourite colours).&lt;br /&gt;
&lt;br /&gt;
Postgresql doesn't have an enum datatype, but we can emulate it quickly and easily.&lt;br /&gt;
&lt;br /&gt;
Instead of an enum type we can set up a CHECK CONSTRAINT - this tells postgresql to make sure that the value we are entering is valid.&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE person (&lt;br /&gt;
  personid int not null primary key,&lt;br /&gt;
  favourite_colour varchar(255) NOT NULL,&lt;br /&gt;
  CHECK (favourite_colour IN ('red', 'blue', 'yellow', 'purple'))&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
Now that's done, let's check it works:&lt;br /&gt;
&lt;br /&gt;
test=# insert into person(personid, favourite_colour) values (1, 'red');&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
&lt;br /&gt;
Now for something not in the list:&lt;br /&gt;
&lt;br /&gt;
test=# insert into person(personid, favourite_colour) values (2, 'green');&lt;br /&gt;
ERROR:  new row for relation &quot;person&quot; violates check constraint &quot;person_favourite_colour_check&quot;&lt;br /&gt;
&lt;br /&gt;
Done! Nice and easy!</description>
  <pubDate>Sun, 26 Mar 2006 07:22:55 -0500</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/29/PostgreSQL-Enum-Types</guid>
</item>
<item>
  <title>Introduction to Full Text Indexing</title>
  <link>http://www.designmagick.com/article/27/Introduction-to-Full-Text-Indexing</link>
  <description>Full text indexing in postgresql is a little more complicated to set up compared to other databases.&lt;br /&gt;
&lt;br /&gt;
This is a quick introduction on how to install it, how to set it up and how to keep it up to date.&lt;br /&gt;
</description>
  <pubDate>Sun, 26 Mar 2006 07:00:14 -0500</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/27/Introduction-to-Full-Text-Indexing</guid>
</item>
<item>
  <title>Using Explain</title>
  <link>http://www.designmagick.com/article/23/Using-Explain</link>
  <description>Now that you've set up a database, you need to check it's being utilized properly.&lt;br /&gt;
&lt;br /&gt;
Using 'Explain' to check your queries are using an index is a good way to do it. Here's a quick introduction in to reading the output.&lt;br /&gt;
</description>
  <pubDate>Sun, 05 Mar 2006 07:31:47 -0500</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/23/Using-Explain</guid>
</item>
<item>
  <title>PostgreSQL and FreeBSD</title>
  <link>http://www.designmagick.com/article/20/PostgreSQL-and-FreeBSD</link>
  <description>PostgreSQL can be installed using on FreeBSD using the ports that all *BSD systems use.&lt;br /&gt;
&lt;br /&gt;
Check out this &lt;a href=&quot;http://www.freebsddiary.org/postgresql.php&quot; target=&quot;_blank&quot;&gt;install guide&lt;/a&gt;.</description>
  <pubDate>Sun, 26 Feb 2006 00:41:05 -0500</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/20/PostgreSQL-and-FreeBSD</guid>
</item>
<item>
  <title>Calculating database size</title>
  <link>http://www.designmagick.com/article/19/Calculating-database-size</link>
  <description>Postgresql creates directories to keep each database in. These directories aren't names, they are kept as the 'OID's of each database (oid's are &quot;object identifiers&quot;). This saves issues when you rename databases etc.&lt;br /&gt;
&lt;br /&gt;
How then do you find out a databases size?&lt;br /&gt;
&lt;br /&gt;
There is a &quot;contrib&quot; module called 'dbsize' which can do it for you. These modules don't get installed by default but allow extra functionality quite easily.&lt;br /&gt;
&lt;br /&gt;
See the documentation for details on how to use it.&lt;br /&gt;
</description>
  <pubDate>Sat, 25 Feb 2006 02:57:40 -0500</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/19/Calculating-database-size</guid>
</item>
<item>
  <title>Introduction to Object Oriented Programming</title>
  <link>http://www.designmagick.com/article/18/Introduction-to-Object-Oriented-Programming</link>
  <description>Object oriented programming is a little different to procedural programming.&lt;br /&gt;
&lt;br /&gt;
Here's an introduction to &quot;OOP&quot; and a proper example of where it can come in handy.&lt;br /&gt;
</description>
  <pubDate>Sun, 19 Feb 2006 07:13:06 -0500</pubDate>
  <author>chris@designmagick.com (Chris Smith)</author>
  <guid>http://www.designmagick.com/article/18/Introduction-to-Object-Oriented-Programming</guid>
</item>


  </channel>
</rss>
