Database of survey information
Just a quick thing:  int(1) probably does not mean what you think it means.

mysql&gt; create table int_length (x int(1));
Query OK, 0 rows affected (0.04 sec)

mysql&gt; INSERT INTO int_length VALUES (1234);
Query OK, 1 row affected (0.05 sec)

mysql&gt; SHOW WARNINGS;
Empty set (0.00 sec)

mysql&gt; SELECT x FROM int_length;
+------+
| x    |
+------+
| 1234 |
+------+
1 row in set (0.00 sec)


int(x) is basically used for zerofill and nothing else.  If you want a smaller data type, you'll need to use a small data type (tinyint, etc).  (Note that this doesn't apply to var types.  varchar(5) is &lt;= 5 characters, and varchar(10) is &lt;= 10 characters.