데이터베이스 애플리케이션 개발 프로젝트 진행 과정
데이터베이스 설계(데이터 모델링)
- 데이터 모델링: 현실 세계의 데이터를 데이터베이스에 효과적으로 저장하고 관리할 수 있도록 현실 세계를 추상화하고 체계적으로 구조화하는 과정
- 데이터 모델: 데이터 모델링, 즉 데이터베이스 설계를 위한 도구(방법론)
-> 데이터 추상화 및 구조화하는 방법론
-> 저장될 데이터의 구조, 관계, 의미, 제약조건 등에 대한 명세
- 데이터 모델링의 시각화 산출물: E-R 다이어그램, 스키마 다이어그램
데이터베이스 구축
1. 스키마 생성(create.sql)
2. 초기 데이터 삽입(insert.sql)
데이터베이스 설계와 개체-관계 모델
개념적 모델 단계에 해당한다.
개체-관계 모델: 개념적 데이터 모델링 도구(개념적 설계를 위한 데이터 모델)
개체-관계 모델의 구성 요소
구성 요소 | 설명 | 데이터베이스에서의 구현 | 예시 | ||
Entity 개체 |
- 업무 상 관리가 필요한 어떤 것 - 데이터베이스에 저장할 어떤 것 - 인스턴스의 집합 |
테이블 스키마 (인스턴스: 테이블 투플) |
- 엔터티: 과목 - 인스턴스: 수학, 영어 |
||
Attribute 속성 |
- 그 어떤 것이 갖는 성격 -> PK 속성, FK 속성, 일반속성 |
테이블 컬럼 | 과목 ID, 과목명, 개설학과 ID, 학점 | ||
Relationship 관계 |
그 어떤 것들 간 관계 | 1:1 | 외래키 | 한쪽 테이블에 외래키 설정 | 사용자-프로필 |
1:N | N쪽 테이블에 외래키 설정 | 학과-소속교수 | |||
N:N | 관계 테이블 따로 생성 후, 각 테이블에 외래키 설정 | 학생-수강과목 |
개체/속성/관계 시각화
<IE 표기법>
보통 IE 표기법을 쓴다. IE 표기법은 추상화 수준을 조절할 수 있다. 또한 어떤 관계인지 상세하게 표기 가능함
<ER 다이어그램>
:관계 상세 표기
1. 차수와 필수 참여 여부
2. 식별자/비식별자 관계
- 식별자 관계(강한 연결관계): 외래키가 곧 기본키
: 고객 번호 없는 주문은 존재하지 않음
: 회원 번호 없는 희망 도서 신청은 존재하지 않음
-> 부모 엔터티 인스턴스가 삭제될 때, 관련된 자식 엔터티 인스턴스도 삭제돼야 함.
(-) 부모 PK가 생성되면 자식 PK도 생성되어야 하고, 조인도 해줘야 하기 때문에 불편
- 비식별자 관계(약한 연결관계): 외래키가 일반 속성
: 부서 없는 사원 존재 가능
: 회원번호 없는 열람 존재 가능(열람석 미리 세팅 등)
-> 부모 엔터티 인스턴스와 자식 엔터티 인스턴스가 독립적 생명주기 가질 수 있음.
=> 부모테이블의 PK가 자식테이블의 PK에 있으면 강한 연결관계,
부모테이블의 PK가 자식테이블의 일반 속성에 있으면 약한 연결관계
=> 일단 모두 식별자로 놓고 필요한 경우 비식별자로 수정할 것.
<예시1: M:N 관계는 별도의 관계테이블로 빼줌 (일반적)>
ER 다이어그램 그리면서 관계 테이블 세부 속성 미리 결정(개념적 설계) -> 정규화를 통해 결정 및 재확인(논리적 설계)
<예시2: 인조식별자 도입 가능>
조인 성능 향상을 위해 본질 식별자들 대신 인조 식별자 하나를 만들어 사용 -> 기존 본질 식별자에 인덱스 따로 생성
반정규화에 해당 -> 정규화를 통해서는 생성x, 정규화 끝난 후 논리적 설계 단계에서 도입 여부 결정
PK도, FK도 아닌, 조회에 자주 사용되는 속성에 걸어주면 best, 아니면 그냥 FK에 걸어줘도 ok
'백엔드 > SQL' 카테고리의 다른 글
트랜잭션 (0) | 2025.05.31 |
---|---|
관계 데이터베이스 설계 - 함수 종속성과 정규화 (0) | 2025.05.28 |
SQL을 활용한 데이터 집계와 분석(2) (0) | 2025.05.26 |
SQL을 활용한 데이터 집계와 분석(1) (0) | 2025.05.24 |
JOIN (0) | 2025.04.17 |