본문 바로가기
코딩 공부/web & Java

데이터 베이스 설계

by 현장 2022. 9. 2.

▶ 데이터 베이스 설계

  → 사용자의 다양한 요구사항을 고려하여 데이터베이스를 생성하는 과정

 

 

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