I have little to contribute on teh DB design but I like the content I am seeing! Ill be anxious to see the final result Thomas, I am a fly fisherman too.
“Database Design for Mere Mortals” is a good recommendation as are the Wiki page(s) on Database Normalization. Those should get you started.
General rule of thumb: each table should be a concept. For example:
Customer
Order
Product
etc.
For repeating elements, like addresses, those become either child tables or intersection tables.
If you are not validating addresses and making sure that they are unique then you likely should make it a child table:
Customer Address
Customer Address Id (Primary Key)
Address Type Code (Foreign Key from Address Type table ~ you would have things like “Mailing”, Shipping", “Seasonal”, etc.)
Customer Id (Foreign Key from Customer table)
Address Line 1 Text
Address Line 2 Text
City Name
Zip Code
State Code (Foreign Key from State Province table ~ you might be able to get away with calling it just the State table, but you need to check the database platform to make sure it is not reserved key word. A more obvious example of a database reserved key word would be “table”. You never want to name a table “table” as it creates all kinds of issues and funky SQL you just don’t want to have to deal with.)
Start Date
End Date (people move more than you might think or realize.)
I didn’t mean for anyone to take the ER diagram I posted as something I was actually going to build. That was from a stream of consciousness kind of thing. Sorry.
Again, thanks tons for leads. I have ordered some books!