Arnie Rowland
From a qualitative analysis perspective, there can be major differences between a NULL and zero (0), or 'empty string'.
For example:
A NULL value could indicate that the field has NEVER held a response, and
an 'empty string' could indicate that there has been a response and it was deleted.
Use NULLs where it the NULL value adds meaning to the data, use DEFAULT values in all other fields. NULL values increase code on the development side, with the constant need for NULL validation (dbNULL) before displaying the field value on the screen or report. IF NULL is not required, DEFAULT values ease the 'hassle' factor for the DEV staff.
HOWEVER, remember that DEFAULT zero (0) values may have adverse affects for certain aggregations. Using COUNT(), AVG(), StDEV(), VAR(), as well as some other perhaps desired mathematical capabilites could be substaintly skewed by DEFAULT zero (0) values.
So carefully consider if using a DEFAULT value is a help or a hinderance.