I use a simple binary style text field with one char per day.
Records in the db are as follows:
field Value
year 2003
avail YYYYNNNNNNNNNNNNYYY.....
Each year starts on jan 1 so:
if (substr($avail,31,1) ="Y") {
// feb 1 is available
}
This will cut your db down to size.
I also use this for a rolling calander of availabitiy on one of my sites by replacing the year with the start date of the availability data. This is useful where you do not need to know historic data (as in say holiday rentals for a booking system).