코딩항해기
[DBMS/Oracle] 데이터 모델링 본문
데이터 모델링
현실 세계를 단순화하여 표현하는 기법
[요약]
모델링 순서 : 요구사항 분석 > 개념 모델링 > 논리 모델링 > 물리 모델링 > 구현
모델링의 특징
추상화 (Abstraction) | 현실 세계를 일정한 형식으로 표현 |
단순화 (Simplication) | 복잡한 현실 세계를 정해진 표기법으로 단순하게 표현 |
명확화 (Clarity) | 불분명함을 제거하고 명확하게 해석할 수 있도록 기술 |
모델링의 관점
데이터 관점 | 어떤 데이터가 업무와 얽혀있는지, 그 데이터 간에는 어떤 관계가 있는지에 대하여 모델링하는 방법 |
프로세스 관점 | 이 업무가 실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지를 모델링하는 방법 |
데이터와 프로세스의 상관관점 | 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링하는 방법 |
모델링의 단계
개념적 모델링 (Conceptual) | 추상화 레벨이 가장 높은 모델링으로 이 단계에서는 업무 중심적이고 포괄적인 수준의 모델링이 진행된다. |
논리적 모델링 (Logical) | 재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 key, 속성, 관계 등을 모두 표현하는 단계이다. |
물리적 모델링 (Physical) | 실제 데이터베이스로 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계이다. |
모델링 예시
[요구사항]
도서관에서 회원의 정보와 책의 정보가 필요하다.
회원의 정보는 회원번호, 이름, 나이, 폰번호, 주소가 필요하고,
책의 정보는 도서번호, 책이름, 장르가 필요하다.
단, 장르는 인문학, 추리, IT만 있으며, 한 명의 회원의 여러 권의 책을 빌릴 수 있다.
(책은 한 권씩만 존재한다.)
1. 요구사항 분석
회원 테이블과 책 테이블이 존재하며, 책 테이블은 회원테이블의 주식별자(PK)를 일반 속성으로 참조한다.따라서, 부모 테이블은 회원 테이블이 된다.
2. 개념적 설계
회원 | 회원번호, 이름, 나이, 폰번호, 주소 |
책 | 도서번호, 책이름, 장르 |
3. 논리적 설계
회원 | 책 |
회원번호(PK), 이름, 나이, 폰번호, 주소 |
도서번호(PK), 책이름, 장르(장르제한:인문학, 추리,IT) +(FK:회원번호) |
4. 물리적 설계
TBL_MEMBER | TBL_BOOK |
MEMBER_NUMBER NUMBER : PK ---------------------------------------------------- MEMBER_NAME VARCHAR2(1000) MEMBER_AGE NUMBER MEMBER_PHONE VARCHAR2 : NOT NULL, UNIQUE MEMBER_ADRESS VARCHAR2(1000) : NOT NULL |
BOOK_NUMBER NUMBER : PK ---------------------------------------------------- BOOK_NAME VARCHAR2(1000) BOOK_GENRE VARCHAR2(1000) BAN_BOOK CHECK (인문학, 추리,IT) ,NOT NULL MEMBER_NUMBER NUMBER : FK |
5. 구현
CREATE TABLE TBL_MEMBER(
MEMBER_NUMBER NUMBER,
MEMBER_NAME VARCHAR2(1000),
MEMBER_AGE NUMBER,
MEMBER_PHONE VARCHAR2 NOT NULL,
MEMBER_ADRESS VARCHAR2(1000) NOT NULL,
CONSTRAINT PK_MEMBER PRIMARY KEY(MEMBER_NUMBER),
UNIQUE(MEMBER_PHONE)
);
CREATE TABLE TBL_BOOK(
BOOK_NUMBER NUMBER,
BOOK_NAME VARCHAR2(1000),
BOOK_GENRE VARCHAR2(1000) NOT NULL ,
MEMBER_NUMBER NUMBER ,
CONSTRAINT PK_BOOK PRIMARY KEY(BOOK_NUMBER),
CONSTRAINT FK_BOOK FOREIGN KEY(BOOK_GENRE) REFERENCES TBL_MEMBER(BOOK_GENRE),
CONSTRAINT CHECK_BOOK CHECK(BOOK_GARGE IN('인문학', '추리','IT')
);
'DBMS > Oracle' 카테고리의 다른 글
[DBMS/Oracle] WHERE절과 연산자 (0) | 2024.07.28 |
---|---|
[DBMS/Oracle] SELECT문 (+DISTINCT, AS, ORDER BY) (0) | 2024.07.27 |
[DBMS/Oracle] 식별자 (0) | 2024.07.08 |
[DBMS/Oracle] 시퀀스 SEQUENCE (0) | 2024.07.07 |
[DBMS/Oracle] 무결성 (0) | 2024.06.24 |