Nah, transactional tableshave tha ability to use transations
- begin transaction
- do some sql (can be 1 or more statements)
- end transaction
Using transactions says that if any of the sql statements fail, the entire set of sql statements is rolled back and nothing is changed. This way, you get around the ACID nature of the MyISAM engine, where partial DML is allowed (ie some fields are updated but not all). In many operations, like ecommerce or banking, you want an all or nothing set of operations.
foreign keys are there for referential integrity, where a child record can not exist without the parent.