1.
Selecting a RDBMS is largely a matter of preference. You seem to be leaning towards MySQL already. That's okay, because MySQL is cheap and popular. However, you are left with not having an engine that can do transactions and full-text search at the same time (between MyISAM and InnoDB). Fulltext Search with InnoDB
2.
(and 4) MyISAM vs InnoDB and datatypes
- MyISAM for: full-text search and table level locking
- InnoDB for: transactions, FKs, and row level locking (but no full-text search)
- Also, InnoDB will probably perform better with large number of rows because of row level locking versus table level locking
3.
CREATE TABLE
? I prefer to use a database IDE, like Toad for MySQL
5.
(and 6) Review of DB normalization/PKs/FKs (You'll need to use InnoDB for FKs.)
7.
You forgot indexes! Very important factor in a database.
Yes MySQL is a good fit if you have the above requirements.
However, as I said, with MySQL/MyISAM/InnoDB, you don't have an engine that can do full-text search AND transactions/FKs. A simple option is to have a 2nd copy (in MyISAM) of the InnoDB tables that need full-text search capability. You can do this because you can mix the 2 engines in the same database. Or, maybe you don't even need full-text search because LIKE
is sufficient for your application.
On the other hand, with SQL Server, you can have all the features, including full-text, transactions, and FKs all in one engine.
Yet another option, is to use a separate technology for indexed full-text searches. There's a plugin for MySQL:
Example: