Unless your app is a single form with a DBGrid, there are usually areas of your program where the tables do not need to be open, like when the user is in a menu, for example. Most DB demo programs show opening the tables in OnCreate, the close the tables in OnDestroy, where in real life, this is a bad practice for the very reason you have described.
To protect your data, as a general rule, if a table doesn't need to be open in your code, close it.
I've gone as far as to put a timer on a DBGrid to close it if left open by a user. There nothing like a novice banging random keys to wake a suspended monitor with live data on the screen.
Roo
Delphi Rules!