The practical reason is that this turns out to be a quite useful behavior. Suppose s represents a social security number on a person record. In some cases that person has declined to provide is SSN, in which case we must put a null in that column. So two or more people can provide null for their social security number, thus many rows can have null there; but if two people provide the SAME SSN, that's an error.
Or you could normalize the data. If you're expecting missing SSN's from multiple people, a separate SSN table would be required. This table would contain two columns - PersonID and SSN. A person without a SSN listed would not be included in the table, thus solving the multi-null problem.
Or you could normalize the data. If you're expecting missing SSN's from multiple people, a separate SSN table would be required. This table would contain two columns - PersonID and SSN. A person without a SSN listed would not be included in the table, thus solving the multi-null problem.