5.1. Designing a Database5.1.1. Step 1: Defining objects5.1.2. Step 2: Identifying tables and columns5.1.3. Step 3: Defining tables5.1.4. Domains, character sets, collations, and translations5.1.5. Getting into your database fast with keys5.1.5.1. Primary keys5.1.5.2. Foreign keys5.2. Working with Indexes5.2.1. What's an index, anyway?5.2.2. Why you should want an index5.2.3. Maintaining an index5.3. Maintaining Data Integrity5.3.1. Entity integrity5.3.2. Domain integrity5.3.3. Referential integrity5.3.3.1. Trouble between parent and child tables5.3.3.2. Cascading deletions — use with care5.3.3.3. Alternative ways to control update anomalies5.3.4. Just when you thought it was safe . . .5.3.4.1. Adding a column to an existing table5.3.4.2. Deleting a column from an existing table5.3.5. Potential problem areas5.3.5.1. Bad input data5.3.5.2. Operator error5.3.5.3. Mechanical failure5.3.5.4. Malice5.3.5.5. Data redundancy5.3.5.6. Exceeding the capacity of your DBMS5.3.6. Constraints5.3.6.1. Column constraints5.3.6.2. Table constraints5.3.6.3. Assertions5.4. Normalizing the Database5.4.1. Modification anomalies and normal forms5.4.2. First normal form5.4.3. Second normal form5.4.4. Third normal form5.4.5. Domain-key normal form (DK/NF)5.4.6. Abnormal form