2026/07/01 4

Ch10. 물리적 모델링 - 테이블 정의서

물리적 모델링의 최종 산출물 중 하나는 바로 테이블 정의서(Table Definition Document)다. 테이블 정의서는 데이터베이스의 각 테이블과 컬럼이 무엇을 의미하고, 어떤 규칙을 가지고 있는지 상세하게 설명하는 "설계 명세서"와 같다. 테이블 정의서, 왜 필요한가?문제 상황: 당신은 새로운 프로젝트에 투입된 개발자다. 데이터베이스 스키마를 파악하기 위해 DDL(CREATE TABLE ...) 코드를 열어보았다.CREATE TABLE order_item ( oi_id BIGINT NOT NULL AUTO_INCREMENT, o_id BIGINT NOT NULL, p_id BIGINT NOT NULL, price INT NOT NULL, qty INT NOT NULL,..

Ch10. 물리적 모델링 - 역정규화

역정규화가 필요한 이유: 성능정규화의 가장 큰 단점은 테이블이 잘게 분리된다는 점이다. 예를 들어, 사용자의 주문 내역과 각 주문에 포함된 상품명 리스트를 조회하려면 어떻게 해야 할까?SELECT o.order_id, o.ordered_at, m.member_name, p.product_name, oi.order_quantity, oi.order_priceFROM orders oJOIN member m ON o.member_id = m.member_idJOIN order_item oi ON o.order_id = oi.order_idJOIN product p ON oi.product_id = p.product_idWHERE m.login_id = 'user123';이처럼 ..

Ch10. 물리적 모델링 - 날짜와 시간 타입

날짜 및 시간 타입날짜와 시간 정보를 저장하는 데 사용되는 타입은 매우 중요하다. 문자열로 저장하면 날짜 계산이나 비교가 매우 어렵기 때문이다.DATE: 날짜만 저장한다. "YYYY-MM-DD" 형식. (예: 2025-08-21)DATETIME: 날짜와 시간을 함께 저장한다. "YYYY-MM-DD HH:MI:SS" 형식. (예: 2025-08-21 11:30:00)TIME: 시간만 저장한다. "HH:MI:SS" 형식.실무 가이드회원 가입일, 주문일, 게시물 작성일 등 대부분의 경우 "DATETIME"을 사용한다.생년월일처럼 시간 정보가 필요 없는 경우에는 "DATE"를 사용한다.특별한 이유가 없다면 "TIMESTAMP" 대신에 "DATETIME"을 사용하는 것이 더 직관적이고 안전하다.데이터베이스 입문편..

Ch10. 물리적 모델링 - 문자, 숫자, PK 타입

논리적 모델의 "속성"을 물리적 모델의 "컬럼"으로 바꿀 때, 가장 먼저 해야 할 일은 각 컬럼에 어떤 종류의 데이터가 들어갈지 정의하는 것이다. 이것이 바로 데이터 타입을 지정하는 작업이다. 데이터 타입을 잘못 선택하면 다음과 같은 문제가 발생한다.저장 공간 낭비필요보다 큰 데이터 타입을 사용하면 디스크 공간이 낭비된다.데이터가 수백만, 수천만 건이 되면 이 낭비는 무시할 수 없는 수준이 된다.성능 저하데이터베이스는 디스크에서 메모리로 데이터를 읽어와 처리한다.데이터 타입이 크면 한 번에 읽어올 수 있는 데이터의 양이 줄어든다.이는 더 많은 I/O(입출력)를 유발하고, 결국 쿼리 속도를 느리게 만든다.데이터 무결성 훼손데이터의 성격에 맞지 않는 타입을 사용하면 잘못된 데이터가 입력될 수 있다.예를 들어..