I read some of the other replies.
I don't use transactions. I don't use the tables directly. I use views only. The views are not in a DBC; which means you can create them from a free table.
The big pluses of the DBC to me are the field defaults (auto-increment), stored procedures (auto-increment) and long field names. Other than the long field names, the others can be worked around.
The problem with a DBC is simple. When the table changes, the DBC must change. This may not be a problem if you always send a new DBC with each EXE. This leaves the same problem you would have with a free table, adding/deleting/changing the field.
I HAVE NEVER HAD AN INDEX OR TABLE CORRUPTION! (Knock on wood) My users frequently use CTRL+ALT+DELETE to exit the application. Don't ask me why. (My guess is a slow network.)