After many years of database development I can say there are some no goes and some question that you should answer before you begin:
questions:
- Do you want use in the future another DBMS? If yes then does not use to special SQL stuff of the current DBMS. Remove logic in your application.
Does not use:
- white spaces in table names and column names
- Non Ascii characters in table and column names
- binding to a specific lower case or upper case. And never use 2 tables or columns that differ only with lower case and upper case.
- does not use SQL keywords for tables or columns names like "FROM", "BETWEEN", "DELETE", etc
recomendations:
- Use NVARCHAR or equivalents for unicode support then you have no problems with codepages.
- Give every column a unique name. This make it easer on join to select the column. It is very difficult if every table has a column "ID" or "Name" or "Description". Use XyzID and AbcID.
- Use a resource bundle or equals for complex SQL expressions. It make it easer to switch to another DBMS.
- Does not cast hard on any data type. Another DBMS can not have this data type. FOr example Oracle daes not have a SMALLINT only a number.
I hope this is a good starting point.