# Application Database Design
## Overview of design process
characterize the data needs of prospective database users
- discuss functional / non-functional requirements with [domain experts (if exists)](https://softwareengineering.stackexchange.com/questions/339656) or users who know part of the domain.
#### Conceptual-design phase
Collected requirements -> select a data model -> a set of relational schemas.
Requirement ?
- describe data and relationships aligned with business decision
- what attributes to capture in each type of entities
- how to group attributes to an entity
How to translate ? -> [Entity-Relationship Model](https://hackmd.io/LCzkGjMuStGSgzI3_gfq2A?view), and [Normalization](https://hackmd.io/xklMfiTsRFq9VO5tj_QI5w?view)
#### Logical-design phase
translate the conceptual schemas to system-specific database tables ([DDL](https://en.wikipedia.org/wiki/Data_definition_language) part in SQL)
#### Physical-design phase
Enable features in the specific database in the dev / production environment.
- file organization, data structures for records or indices, query optimization, etc.
###### tags: `database`