Constraints in the physical database are not to be used. The main reason for this is that in a 24/7 environment, they can complicate upgrades and alterations to the database. Any data validations should be handled programmatically instead of leaving the responsibility of data validation on the database.
Referential Integrity should not be implemented in the database. There are a number of advantages to this. Firstly, in a development environment, not having RI implemented means that tables can be dropped and recreated and data loaded and deleted without the overhead of having to get the order of operations correct. In the longer term RI has the effect of slowing up inserts and updates, although the overhead on performance has not yet been quantified.
Primary keys should not have any business meaning and they should only be used to identify each row uniquely in the table.
Ну и как Вам?