 
is bad.  If you have instead a formal ontology that defines

(=&gt;
   (parent ?X ?Y)
   (not
     (parent ?Y ?X))

as part of the formal definition of the parent relation, then an automated 
process could catch the problem.  I'm sure you could find some existing 
database constraint language that could handle this particular constraint, 
but not all the constraints that are easily specified in logic, unless of 
course the database constraint language is a particular syntax for logic 
(which many language