It is common to use SQL Scripts to create or initialize a DB from a setup program. For example TS DB Pro integrates with SQLCMD variable syntax.
One issue with this is that an MSI may need access to SQLCMD.exe. I've picked up the bits from a local SQL Server 2005 installation, but you don't have to do that. Feature Pack for Microsoft SQL Server 2005 provides a redistributable package for just SQLCMD:
Microsoft SQL Server 2005 Command Line Query Utility
The SQLCMD utility allows users to connect, send Transact-SQL batches, and output rowset information from SQL Server 7.0, SQL Server 2000, and SQL Server 2005 instances. SQLCMD is a replacement for ISQL and OSQL, but can coexist with installations that have ISQL or OSQL installed.
Note: Microsoft SQL Server 2005 Command Line Query Utility requires Microsoft SQL Server Native Client, also available on this page.
Audience(s): Customer, Partner, Developer
Assume everything is implicit unless you are told otherwise.
I generally consider it bad practice to have encoded fields in tables and implicit rules in objects. You should generally make your rules explicit by creating calculated columns, views, & etc for databases and creating properties for classes that encode the rules.
Example:
public bool IsBest { get { return rating >= 3; } }