Negation by Constraints: A Sound and Efficient Implementation of Negation in Deductive Databases