ERD
데이터 베이스 설계 과정에서 중요한 역할
- Entity : 개체
- Relationship : 관계
- Attribute : 속성
필요성
- 요구사항의 체계적 이해
- 요구사항을 분석
- 개체와 개체간의 관계 파악
- 데이터 구조의 시각화
- 데이터 정규화
- 중복 최소화, 데이터 무결성 유지
구성요소
Entity
- 개체 : 데이터베이스에서 독립적으로 관뢰할 가치가 있는 대상 또는 실체
- 데이터베이스의 테이블
판단 기준
- 독립성
- 로직 상 독립적으로 존재
- 하나의 테이블로 따로 관리할 가치가 있는지
- Primary Key
- 고유한 식별자로 삼을만한 속성을 보유하는지
- 속성의 집합
- 여러 속성 대상을 상세하게 표현해야 하는지
- 비지니스 가치
- 데이터베이스로 관리할 비지니스적 가치
- 중요한 정보, 필수적인 정보
- 관계성
- 다른 개체와의 관계를 가지고 있는지
Attribute
- 개체의 특성, 정보
- Colum으로 표현
Key 개념
- Primary Key
- 해당 테이블의 대표 식별자
- 기본키를 통해 데이터베이스 엔진은 특정 행을 식별
- 고유하게 식별하기 위해 반드시 유일해야 함
- NULL값을 허용하지 않음
- 예: 고객(Customer) 테이블의
Customer_ID
- Candidate Key
- 식별자의 집합
- 고유하게 식별하기 위해 반드시 유일해야 함
- NULL값을 허용하지 않음
- 하나의 테이블에는 여러 후보키가 존재하며 하나를 선정 해 기본키로 사용
- Alternate Key
- 후보키 중 기본키로 선택되지 않은 나머지 후보키
- 보조적인 식별자 역할
- Foreign Key
- 단른 테이블의 기본키 또는 후보키를 참조하는 경우
- 두 테이블 간의 관계 Relationship와 참조 무결성 Referential Integrity를 보장
- 예: 주문(Order) 테이블에서
Customer_ID
컬럼이 고객(Customer) 테이블의Customer_ID
를 참조
- Composite Key
- 두 개 이상의 속성을 합쳐서 하나의 키로 사용하는 경우
- 단일 속성으로는 유일하게 식별하기 어려운 경우 여러 속성을 조합하여 유일성을 확보
- 예: 수강 기록(Enrollment) 테이블에서
(Student_ID, Course_ID, Semester_ID)
를 합쳐 복합키로 사용
Key의 고려사항
- 유일성(Unique)
- 테이블 내에서 각 행을 고유하게 식별
- 중복, NULL값을 허용하지 않음
- 간결성(Simplicity)
- 단순한 속성을 사용
- 향후 관리와 성능에 유리
- 변경 빈도 최소화(Minimal Variability):
- 키로 사용되는 속성은 자주 바뀌지 않도록 설정
- 성능(Performance)
- 효율적인 키 선정은 데이터 조회, 정렬, 조인 등의 효율에 영향
- 관계(Relationship)
- 두 개체 간의 연관성
- 개체가 어떻게 연결되는지 표현
ERD Tools
MySQL Workbench
- MySQL 공식 툴, 연동
- 무료, 직관적인 인터페이스
- MySQL 특화로 다른 DBMS와 호환성 우려
ERwin Data Modeler
- 다양한 DBMS 지원
- 고급 기능 보유
- 유료
ER/Studio Data Architect
- ERwin Data Modeler 비슷한 급
- 양방향 동기화(Reverse/Forward Engineering) 가능
- 유료
Lucidchart, Draw.io, Creately 등 클라우드 기반 다이어그램 툴
- 웹 기반
- 간단한 인터페이스
- 실시간 협업
- 전문적 기능은 제한적
PgModeler
- PostgreSQL 전용
- 오픈소스
Oracle SQL Developer Data Modeler
- Oracle 전용
- 다른 DBMS 환경은 제한적