db owners, sys admins and ddl admins can create, drop or modify objects. When you control the database, make sure you don't grant these permissions or make a user a member of roles with those permissions. You can also encrypt Stored procedure definitions, User-defined function definitions, View definitions, Trigger definitions, Default definitions, and Rule definitions to prevent modifications to those objects.
Even the use of triggers will not stop DBOs and Sys Admins from changing the data. Triggers can be disabled.
If you send a database to a client site to load on their server, they will be in control. They will have a sys admin account. They will setup logins, users, and permissions. They can do whatever they want to a database (except encrypted objects). So the question is, "Why would they want to invalidate or break the database by changing the structure or deleting lookup entries?" We use databases purchased from other companies and would never consider making schema changes or modifying lookup data provided by the vendor.
One vendor, however, insists that its database must be the only DB on the server. The installation script secures the sa account, adds new sys admin , db owner and user accounts, In this case all permissions are controlled by the vendor. Not many customers will want to purchase a Server to run one application. If you want more control over the database, that may be your only option. But even this is not totally secure. Bottom line is, you have to trust that a client doesn’t want to break an application or a database.
Terry L. Broadbent - DBA
Computing Links:
faq183-874 contains "Suggestions for Getting Quick and Appropriate Answers" to your questions.