---
# System prepended metadata

title: Application Database Design
tags: [database]

---

# 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`