Wow, thanks for the speedy responses guys :).
Ok, let me elaborate.
Database rules are all columns are not allowed to be null and MUST have a default value (usually this is just 0, or '', or false to satisfy the data type).
The table "Employee" can reference a "Department", but "Department" table has a static row in there named "-None-".
[Employee] - ID, Name, FK_Department
[Department] ID, Name
Employee's dont have to be assigned to a department but must have a valid value in the foreign key to the department table. So the department contains a row in there with the name "-None-". This is simply to satisy the foreign key constraint.
Now, there are other "system" type departments that always exist in the dpeartment tables too like application defaults such as "Finance, Marketting, Production" etc. However, the user can create new custom departments which also go along side that data in the departments table.
We currently have a column on the department table called "Locked" and is set to true if this value is "Locked". This row ID is recorded in a tabled called "LockedRows" which contains TableName, RowID, and RowName. So say the user wants to create an employee without a department, we have a helper class that does GetLockedRowID("TableName", "RowName") and it gives back the ID...
- Absolute nightmare! When it comes to replication....oh the pain......
So would you guys say it would be more correct to move out the static departments in to a seperate table and keep user generated data in another table? Would imagine that would be difficult to enforce as a foreign key in the Employee table...