[프로젝트] 데이터 모델링 하기
요구사항을 뽑아냈으니 이제 실제로 데이터 모델링을 통해 데이터베이스를 설계하는 과정이 필요합니다.
데이터베이스 모델링은 개념적, 논리적, 물리적 데이터 모델링 세 가지가 있습니다.
보통은 요구사항 > 개념적 > 논리적 > 물리적 데이터 모델링을 거쳐 설계를 진행합니다.
1. 개념적 데이터 모델링(Conceptual Data Modeling)
이 단계에서는 객체, 속성, 관계를 시각화 하기 위해서 ERD 다이어그램을 많이 사용합니다.
자주 봤을 것 같은 이 모양은 피터 첸 표기법이고.
이 링크로 들어가보시면 실제 웹에서 ERD를 그려볼 수 있습니다.
요구사항 분석에서는 회원 가입, 로그인만 적었지만 ERD에서는 실제 서비스에 필요한 회원, 숙소, 예약, 결제 등을 추가합니다.
여기서 객체는 회원 정보, 예약 정보, 리뷰, 결제 내역, 숙소 정보이며.
관계는 리뷰 작성, 결제, 예약입니다.
속성은 객체나 관계가 가지는 특징을 말합니다.
이렇게 ERD를 그려보면 간단하게 객체와 관계, 속성을 파악할 수 있고
1:1이나 1:N 관계를 표현하기도 쉽습니다.
2. 논리적 데이터 모델링 (Logical Data Modeling)
그리고 위에 개념적 모델을 DBMS에 적합한 형태로 변환하는 게 논리적 데이터 모델링입니다.
엔티티를 테이블로 매핑하고, 속성은 컬럼으로 정의합니다.
여기에 데이터타입, 키, 제약 조건을 추가하여 아래와 같은 형태로 만들 수 있습니다.
이 링크로 들어가시면 온라인에서 쉽게 ERD를 작성할 수 있습니다.
3. 물리적 데이터 모델링 (Physical Data Modeling)
그럼 이제 실제적으로 데이터베이스를 생성해야겠죠.
위 ERD를 바탕으로 SQL을 작성하여 물리적으로 구현합니다.
논리적 모델링 단계에서 키, 제약 조건 등을 추가했던 것처럼
물리적 데이터 모델링에서는 인덱스, 뷰를 츄가할 수 있습니다.
예시로 users 테이블과 reviews 테이블을 만들어 봅니다.
CREATE TABLE users (
user_id SERIAL PRIMARY KEY, -- user_id는 자동 증가하는 primary key로 설정
user_name VARCHAR(255), -- user_name 컬럼은 최대 255자까지 저장 가능
email VARCHAR(255), -- email 컬럼도 최대 255자까지 저장 가능
password VARCHAR(255), -- password 컬럼도 최대 255자까지 저장 가능
phone VARCHAR(20) -- phone 컬럼은 최대 20자까지 저장 가능
);
CREATE TABLE reviews (
review_id SERIAL PRIMARY KEY, -- review_id는 자동 증가하는 primary key
comment TEXT, -- comment 컬럼은 긴 텍스트를 저장할 수 있음
user_id INTEGER, -- user_id는 users 테이블의 user_id를 참조하는 외래 키
rating INTEGER, -- rating은 정수형으로 평가 점수를 저장
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- created_at은 레코드가 생성된 시간을 자동으로 저장
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users(user_id) -- 외래 키 제약 조건 추가
);
참고할만한 포스팅