Originally posted by akhadar
There are some cases where child table is permitted to have a orphan.This depends on the business requirement and it is clearly defined.The following link will show some cases where u can have this.
http://216.239.59.104/search?q=cache...ll+value&hl=en
I agree - its what the business model requires. The value may be null as at the time the record is created as its unknown, or not aplicable at that stage. But when a value is entered then it must be a value in the parent table. The nullable PK-FK relationship is the best way to implement this I feel; rather than using application code or a DB trigger do the checking.

example: Help Desk records calls from a user:

Not Nullable fields might be: Call Id, UserName, Call Description, Priority... etc

The 'Allocated to' field may not be known when the call is entered, but when the Call is assigned to a technician then the value must match a valid value in 'Technicians'. A nullable FK is ideal for this.

Alternatively - add a 'Not Known' row in Technicians and make the FK field NOT NULL.