What would happen if your company decided to dump its R & D department? If you where to update your DEPARTMENT_CODE table to reflect this new organzition you would have records in the DEPARTMENT table that would not have parent keys! Or you could keep the R & D department's code but you won't be able to catch data entry errors! Both are bad. I think you should use triggers or something else to implement business rule to enforce data validation.