We are proficient at taking a data model and creating a corresponding database design. We favor two notations — the UML class model for conceptual/logical modeling followed by IDEF1X for logical/physical details. We pay attention to indexes and enforce business rules including referential integrity.
Careful indexing is essential if a relational database is to deliver good performance. Indexes enable fast searches for common queries. Indexes are also important for combining (joining) tables.
Referential integrity ensures that references to data (foreign keys) really exist and are not stale. For example, the customer number in a sales table must be found in the customer table. If properly defined, referential integrity seldom shows performance.
When possible, we also define miscellaneous business rules that are unlikely to change. For example, a school database could enforce that the only valid grades are ‘A’, ‘B’, ‘C’, ‘D’, and ‘F’ (or some other set of values, depending on the requirements). For fast development and ease of maintenance, the database must enforce business rules; they should not be buried in programming code.