1. I would use a web service for data access, and a win app for the front end. This will reduce the horse power needed for your web server, and you'll have the added functionality of using a windows app.

2. .NET provides setup wizards specifcally for deployment, I would look into these.

3. Its best to give your variables the least scope necessary. A variable accessed in one method should not be declared at the class level. If you need a variable at the class level, but you don't want calling programs messing with it, set it private. If the variable gives functionality to the calling program, declare it public. That being said, you should look into using properties to expose those variables to a calling program.

4. Putting information in a table, and joining with a relationship usually saves space, and allows for a good data base design. For example, if that person has more than one address, you wouldn't want two person records with different addresses, you would want one person record linked to two address records.