[취업을 위한 CS 지식] 38강. 데이터베이스 설계
- 데이터베이스 설계의 핵심은 ER 다이어그램(ERD)과 정규화입니다. 💡
- ER 다이어그램은 엔티티 간의 관계를 시각적으로 모델링하여 데이터베이스의 유지보수 및 확장을 용이하게 합니다. 🗺️
- 실무에서는 전통적인 피터 첸 표기법보다 까마귀 발(Crow's Foot) 표기법이 더 자주 사용됩니다. 👣
- 까마귀 발 표기법은 엔티티, 속성, 기본/외래 키, 그리고 1:1, 1:N, 0:N과 같은 관계를 직관적으로 표현합니다. 🔗
- ERD에서 실선은 식별 관계(참조 엔티티 필수), 점선은 비식별 관계(참조 엔티티 없이도 존재 가능)를 나타냅니다. 🤝
- draw.io와 같은 다양한 도구를 사용하여 ERD를 쉽게 그릴 수 있습니다. ✍️
- 정규화는 올바른 테이블 설계를 위한 원칙으로, 데이터 중복, 불일치, 성능 저하와 같은 잠재적 문제를 방지합니다. 🧹
- 정규화는 테이블 필드를 구성하고 필요한 경우 테이블을 나누는 작업을 포함하며, 1NF, 2NF, 3NF, BCNF 등의 정규형이 있습니다. 🪜
- 제1 정규형(1NF)은 모든 속성이 더 이상 쪼갤 수 없는 '원자값'을 가져야 합니다. ⚛️
- 제2 정규형(2NF)은 1NF를 만족하며, 기본 키가 아닌 모든 필드가 기본 키 전체에 '완전히 종속'되어야 합니다 (부분 함수 종속성 제거). 🎯
- 제3 정규형(3NF)은 2NF를 만족하며, 기본 키가 아닌 모든 필드가 기본 키에 대해 '이행적 종속성'이 없어야 합니다 (간접적 유추 관계 제거). ↔️
- 보이스-코드 정규형(BCNF)은 3NF를 만족하며, 모든 '결정자'가 '후보 키'여야 합니다. 🔑
- 실무에서는 보통 BCNF 수준까지의 정규화가 주로 사용되며, 4NF, 5NF는 과도한 경우가 많습니다. ⚖️
- 정규화는 테이블을 쪼개어 조인 연산을 증가시키고 성능 저하를 야기할 수 있으므로, 무조건적인 미덕은 아닙니다. 📉
- 성능 향상을 위해 의도적으로 정규화를 완화하고 테이블을 합치는 '역정규화' 기법도 사용됩니다. 🔄
- 데이터베이스 설계 시 정규화의 이점과 부작용을 이해하고 적절한 균형을 찾는 것이 중요합니다. ✅
데브허브 | DEVHUB | [취업을 위한 CS 지식] 38강. 데이터베이스 설계