I'm using Visual Studio 2013, .Net 4.5 and SQL Management Studio 2012. I have a table that tracks offices in my database. On the application side there are a some display rules regarding the layout of offices. If a building is remodeled, offices are renamed, and the old offices can become inactive. It is important to not delete inactive offices for tracking the history items.
I was going to put a boolean column in my database table to decide whether an office is active. If the column isActive
equals True
then the office will be able to be selected to have items added to it.
One of my colleagues is very much against using boolean fields in the database, but has failed to provide any solid reasons as to why they should not be used. I have been told "don't do it" and "it's hard to use", but nothing that I consider to be really substantial. I think he has run into a situation before where the database was initially setup to have booleans and they customer has added options to a field(something that was true false, can now be A, B or C). It has been suggested that I use a varChar(1)
with a "Y" or "N" instead of boolean values.
So what I'm wondering is, given the scenario where there is no way an office can be anything other then "active" or "inactive", is there any reason that representing this value as a boolean should be avoided?