▶ 데이터 베이스 설계
→ 사용자의 다양한 요구사항을 고려하여 데이터베이스를 생성하는 과정
1. 요구사항 분석
→ 사용자의 요구 사항을 수집 분석하여 개발할 데이터베이스의 용도 파악
☞ 결과물 : 요구 사항 명세서
2. 개념적 설계
→ DBMS에 독립적인 개념적 스키마 설계, 요구사항 명세서를 개념적 구조로 표현
- 개체와 속성 추출
→ 저장할만한 가치가 있는 중요 데이터를 가진 사람이나 사물
개 체 | 속 성 |
회 원 | 회원아이디, 비밀번호, 이름, 나이, 직업, 등급, 적립금 |
상 품 | 상품번호, 상품명, 재고량, 단가 |
제 조 업 체 | 제조업체명, 전화번호, 위치, 담당자 |
게 시 글 | 글번호, 글제목, 글내용, 작성일자 |
- 개체와 관계 추출
관계 : 개체간의 의미 있는 연관성
관 계 | 관계에 참여하는 개체 |
관계 유형 | 속 성 |
주 문 | 회원(선택) 상품(선택) |
다대다 | 주문번호, 주문수량, 배송지, 주문일자 |
공 급 | 상품(필수) 제조업체(선택) |
일대다 | 공급일자, 공급량 |
작 성 | 회원(선택) 게시글(필수) |
일대다 |
3. 논리적 설계
→ DBMS에 적합한 논리적 스키마 설계 (개념적 스키마 → 논리적 구조)
결과물 : 릴레이션 스키마
- E-R 다이어그램 → 릴레이션 스키마
RULE 1. 모든 개체는 릴레이션으로 변환
-
개체의 이름 : 릴레이션의 이름
-
개체의 속성 : 릴레이션의 속성
-
개체의 키 속성 : 릴레이션의 식별자
상품번호 | 상품명 | 재고량 | 단가 |
.......... | .......... | .......... | .......... |
.......... | .......... | .......... | .......... |
RULE 2. 다대다 관계는 릴레이션으로 변환한다
→ E-R 다이어그램의 각 개체를 하나의 릴레이션으로 변환
- 관계의 이름 : 릴레이션의 이름
- 관계의 속성 : 릴레이션의 속성
-
관계에 참여하는 개체를 규칙1에 따라 릴레이션으로 변화한 후 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고 외래키들을 조합하여 관계 릴레이션의 기본키로 지정
RULE 3. 일대다 관계는 외래키로 표현한다
→ 일대다 관계에서 일측 개체 릴레이션의 기본키를 다측 개체 릴레이션에 포함, 관계의 속성들도 다측 개체 릴레이션에 포함시킴
-
약한개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정
-
다측 개체 릴레이션은 외래키를 포함하여 기본키를 지정
- 약한 개체는 주 개체에 따라 존재 여부가 결정되므로 주 개체의 기본키를 포함해서 기본키 지정 (Tip. 주 개체 : 강한 개체 / 종속 개체 : 약한 개체)
한 개체 타입(weak entity type) : 자기 자신의 애트리뷰트 만으로는 키를 명세할 수 없는 개체 타입
※ 약한개체가 참여하는 일대다 관계는 외래키 포함해서 기본키 지정
RULE 4. 모든 개체는 릴레이션으로 변환
- 일반적인 일대일 관계는 외래키를 서로 주고 받는다.
-
일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다
-
모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션을 하나로 합친다
예시 1)
예시 2)
예시 3)
- 결과물 : 테이블 명세서
테이블 이름 | 회 원 | |||||
속성이름 | 데이터타입 | 널 허용 | 기본값 | 기본키 | 외래키 | 제약조건 |
회원아이디 | VARCHAR | N | PK | |||
비밀번호 | VARCHAR | N | ||||
이름 | VARCHAR | N | ||||
나이 | INT | N | 21 이상 | |||
직업 | VARCHAR | N | ||||
등급 | VARCHAR | N | Silver | |||
적립금 | INT | N | 0 |
RULE 5. 모든 개체는 릴레이션으로 변환
4. 물리적 설계
→ DBMS로 구현 가능한 물리적 구조 설계
-
결과물 : 물리적 스키마
5. 구현
→ 데이터베이스 생성
'코딩 공부 > web & Java' 카테고리의 다른 글
HTML(Hyper Text Markup Language)관련 (0) | 2022.09.07 |
---|---|
[JAVA] 변수관련 (0) | 2022.09.05 |
스키마 (0) | 2022.09.02 |
JOIN문, JOIN 종류 (0) | 2022.09.02 |
SELECT문 조건 연산자와 SQL 변수 선언 (0) | 2022.09.01 |