Datamodel for web applications


I would like to know your suggestions about datamodeling, when developing web applications. I suppose the datamodel should be similar to an operational database, but maybe you can share your experience about:
- primary keys (should be autoincrement, or composed on data fields);
- technical fields for data like (insert_date, modify_date);
- history/changes -> keep them in the application table, or in a separate one in the same schema , or separately in DWH.

Thank you very much in advance!