[SQL] 데이터베이스 설계(3)

업데이트:     Updated:

카테고리:

태그:

🚀 데이터베이스 설계 단계

  • 관계 데이터 모델의 데이터베이스 설계 방법 중 2번 째 방법인 E-R 모델과 릴레이션 변환 규칙을 이용한 데이터베이스 설계에 대해 알아본다.
  1. 요구 사항 분석
  2. 개념적 설계
  3. 논리적 설계
  4. 물리적 설계
  5. 구현

1️⃣ 요구 사항 분석


  • 데이터베이스에 대한 사용자들의 요구 사항이 무엇인지를 분석하고 분석된 내용을 기반으로 요구 사항 명세서로 작성한다.

❌ 1.1 요구 사항 명세서의 예

  • 1. 한빛 마트에 회원으로 가입하려면 회원아이디, 비밀번호, 이름, 나이, 직업을 입력해야 한다.
  • 2. 가입한 회원에게는 등급과 적립금이 부여된다.
  • 3. 회원은 아이디로 식별한다.
  • 4. 상품에 대한 상품번호, 상품명, 재고량, 단가 정보를 유지해야 한다.
  • 5. 상품은 상품번호로 식별한다.
  • 6. 회원은 여러 상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있다.
  • 7. 회원이 상품을 주문하면 주문에 대한 주문번호, 주문수량, 배송지, 주문일자 정보를 유지해야 한다.
  • 8. 각 상품은 한 제조업체가 공급하고, 제조업체 하나는 여러 상품을 공급할 수 있다.
  • 9. 제조업체가 상품을 공급하면 공급일자와 공급량 정보를 유지해야 한다.
  • 10. 제조업체에 대한 제조업체명, 전화번호, 위치, 담당자 정보를 유지해야 한다.
  • 11. 제조업체는 제조업체명으로 식별한다.
  • 12. 회원은 게시글을 여러 개 작성할 수 있고, 게시글 하나는 한 명의 회원만 작성할 수 있다.
  • 13. 게시글에 대한 글번호, 글제목, 글내용, 작성일자 정보를 유지해야 한다.
  • 14. 게시글은 글번호로 식별한다.

2️⃣ 개념적 설계


  • (개념적 모델링)사용자 요구 사항 분석 단계의 결과물인 요구 사항 명세서개념적 데이터 모델을 이용하여 표현한다.
  • 일반적으로 개념적 데이터 모델로 E-R 모델을 많이 이용한다.
  • 데이터베이스에 저장해둘 필요가 있다고 판단되는 데이터 요소를 추출하고 데이터 요소 간의 관계를 파악하여 이를 표현한다.

2.1 개념적 모델링 과정

  1. 개체와 속성 추출
  2. 관계 추출
  3. E-R 다이어그램 작성
2.1.1 개체와 속성 추출

  • 일반적으로 개체는 요구 사항 명세서에 명사로 표현된다. 단, 업무 처리와 관련이 깊은 의미 있는 명사만 추출해야 한다.
  • 명사 중에는 개체가 아닌 속성으로 분류되는 단어도 존재한다. 따라서 찾아낸 명사를 개체와 속성으로 정확히 분류해야 한다.
✔️ Check-Point!!
  • 1. 한빛 마트회원으로 가입하려면 회원아이디, 비밀번호, 이름, 나이, 직업을 입력해야 한다.
    • -> 한빛 마트는 조직 자체를 표현하는 일반적이고 광범위한 의미의 명사이므로 제외한다.
    • -> 회원아이디·비밀번호·이름·나이·직업은 회원이 가진 중요한 데이터로 볼 수 있다. 그러므로 회원을 개체로하고 나머지는 속성으로 분류한다.
  • 2. 가입한 회원에게는 등급적립금이 부여된다.
    • -> 등급·적립금도 회원이 가진 중요한 데이터로 볼 수 있으므로 회원 개체가 가지고 있는 속성으로 분류한다.
  • 3. 회원은 회원아이디로 식별한다.
    • -> 회원아이디는 회원을 식별하는 역할을함으로 키 속성으로 지정한다.
  • 4. 상품에 대한 상품번호, 상품명, 재고량, 단가 정보를 유지해야 한다.
    • -> 상품번호·상품명·재고량·단가정보는 상품이 가진 중요한 데이터로 볼 수 있다. 그러므로 상품을 개체로하고 나머지는 속성으로 분류한다.
  • 7. 회원상품을 주문하면 주문에 대한 주문번호, 주문수량, 배송지, 주문일자 정보를 유지해야 한다.
    • -> 회원과 상품은 개체로 분류했다.
    • -> 주문번호·주문수량·배송지·주문일자는 회원이 상품을 주문해야 생기는 정보이기 때문에 속성으로 분류한다.
    • -> 하지만 주문을 해야 생기는 정보이므로 회원이나 상품 개체에 항상 속새 있는 속성으로 보기는 어렵다.
    • -> 이런 속성들은 이후에 추출할 특정 관계의 속성으로 판단할 가능성이 높으므로 특정 개체에 속하지 않는 속성으로 분류한다.
  • 8. 각 상품은 한 제조업체가 공급하고, 제조업체 하나는 여러 상품을 공급할 수 있다.
    • -> 제조업체는 개체로 분류한다.
  • 9. 제조업체가 상품을 공급하면 공급일자공급량 정보를 유지해야 한다.
    • -> 주문 속성과 마찬가지로 공급일자·공급량은 제조업체에서 상품을 공급해야 생기는 정보이기 때문에 특정 관계의 속성으로 분류한다.
  • 10. 제조업체에 대한 제조업체명, 전화번호, 위치, 담당자 정보를 유지해야 한다.
    • -> 제조업체명·전화번호·위치·담당자는 제조업체 개체의 속성으로 분류한다.
  • 12. 회원은 게시글을 여러 개 작성할 수 있고, 게시글 하나는 한 명의 회원만 작성할 수 있다.
    • -> 게시글은 개체로 분류한다.
  • 13. 게시글에 대한 글번호, 글제목, 글내용, 작성일자 정보를 유지해야 한다.
    • -> 글번호·글제목·글내용·작성일자는 게시글의 속성으로 분류한다.
2.1.2 관계 추출

  • 개체와 속성을 추출하고 나면 개체 간의 관계를 결정할 수 있다. 관계는 개체 간의 의미 있는 연관성이다.
  • 일반적으로 관계는 요구 사항 명세서에 동사로 표현된다. 단, 업무처리와 관련하여 개체 간의 연관성을 의미 있게 표현한 동사만 선택한다.
  • 관계를 추출한 후에는 추출한 관계에 대한 매핑 카디널리티(각 개체간의 관계를 맺고 있는 인스턴스 개수)와 참여 특성을 결정한다.
  • 먼저 매핑 카디널리티를 기준으로 추출한 관계를 1:1, 1:다, 다:다 중 하나로 분류한다.
  • 그리고 개체과 관계에 필수적으로 참여하고 있는지 선택적으로 참여하고 있는지를 의미하는 참여 특성을 결정한다.
✔️ Check-Point!!
  • 1. 한빛 마트에 회원으로 가입하려면 회원아이디, 비밀번호, 이름, 나이, 직업을 입력해야 한다.
    • -> 1번 문장의 ‘입력해야 한다’는 회원 개체의 속성인 회원아이디·비밀번호·이름·나이·직업에 대해 설명하는 것이다.
    • -> 따라서 개체와 개체의 관계를 표현하는 동사로 볼 수 없으므로 제외한다.
  • 2. 가입한 회원에게는 등급과 적립금이 부여된다.
    • -> 2번 문장의 ‘부여된다’ 역시 회원 개체의 속성인 등급·적립금에 대해 설명하는 것으로 같은 이유로 제외된다.
  • 3. 회원은 회원아이디로 식별한다.
    • -> 3번 문장의 ‘식별한다’도 회원 개체를 설명하는 것이므로 제외한다.
  • 6. 회원은 여러 상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있다.
    • -> 6번 문장에서 ‘주문할 수 있다’는 회원 개체와 상품 개체가 맺는 관계를 설명하므로 이를 통해 회원 개체와 상품 개체가 맺고 있는 주문 관계를 추출할 수 있다.
    • -> 회원 한 명이 여러 상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있으므로 다대다 관계가 된다.
    • -> 회원이 상품을 반드시 주문해야 하는 것은 아니므로 회원 개체는 주문 관계에 선택적으로 참여한다.
    • -> 회원이 주문하지 않은 상품이 존재할 수 있으므로 상품 개체도 주문 관계에 선택적으로 참여한다.
  • 7. 회원이 상품을 주문하면 주문에 대한 주문번호, 주문수량, 배송지, 주문일자 정보를 유지해야 한다.
    • -> 7번 문장에서 ‘유지해야 한다’는 회원 개체와 상품 개체가 주문 관계를 맺으면 생기는 주문번호·주문수량·배송지·주문일자 속성을 설명하므로 관계를 표현하는 동사로 볼 수 없다.
    • -> 하지만 주문번호·주문수량·배송지·주문일자는 주문 관계를 설명하는 속성이므로 이를 주문 관계의 속성으로 분류한다.
  • 8. 각 상품은 한 제조업체가 공급하고, 제조업체 하나는 여러 상품을 공급할 수 있다.
    • -> 8번 문장에서 ‘공급할 수 있다’는 상품 개체와 제조업체 개체가 맺는 관계를 설명하므로 이를 통해 공급 관계를 추출할 수 있다.
    • -> 하나의 상품은 제조업체 하나가 공급하고, 제조업체 하나는 여러 상품을 공급할 수 있으므로 제조업체(1):상품(다) 관계가 된다.
    • -> 상품은 제조업체가 반드시 공급해야 하므로 상품 개체는 공급 관계에 필수적으로 참여한다.
    • -> 상품을 공급하지 않는 제조업체가 존재할 수 있으므로 제조업체 개체는 공급 관계에 선택적으로 참여한다.
  • 9. 제조업체가 상품을 공급하면 공급일자와 공급량 정보를 유지해야 한다.
    • -> 9번 문장에서 ‘유지해야 한다’는 상품 개체와 제조업체 개체가 공급 관계를 맺으면 생기는 공급일자·공급량 속성을 설명하므로 관계를 표현하는 동사라고 볼 수 없다.
    • -> 하지만 공급일자·공급량은 공급 관계를 설명하는 속성이므로 이를 공급 관계의 속성으로 분류한다.
  • 12. 회원은 게시글을 여러 개 작성할 수 있고, 게시글 하나는 한 명의 회원만 작성할 수 있다.
    • -> 12번 문장에서 ‘작성할 수 있다’는 회원 개체와 게시글 개체가 맺는 관계를 설명하므로 이를 통해 회원 개체와 게시글 개체가 맺고 있는 작성 관계를 추출할 수 있다.
    • -> 회원 한 명이 게시글을 여러 개 작성할 수 있고, 게시글 하나는 한 명의 회원만 작성할 수 있으므로 회원(1):게시글(다) 관계가 된다.
    • -> 회원이 게시글을 반드시 작성해야 하는 것이 아니므로 회원 개체는 작성 관계에 선택적으로 참여한다고 볼 수 있다.
    • -> 게시글은 반드시 회원이 작성을 해야 하므로 게시글 개체는 작성 관계에 필수적으로 참여한다고 볼 수 있다.

2.1.3 E-R 다이어그램 작성


  • 개체는 사각형으로, 속성은 타원형으로, 그리고 키 속성은 이름에 밑줄을 그어 표시한다.
  • 회원, 상품, 제조업체, 게시글 개체에 대한 E-R 다이어그램은 아래와 같이 그릴 수 있다.
  • 관계는 마름모로 표현하고, 사각형으로 표현된 개체와 선으로 연결한다.
  • 일대일, 일대다, 다대다 관계는 선 위에 레이블로 표시한다.
  • 필수적으로 참여하는 개체는 개체와 관계를 이중선으로 연결한다.

2.1.4 결론

이로써 한빛 마트의 데이터베이스에 대한 요구 사항 명세서를 개념적으로 모델링하여 표현했다. 즉 개념적 설계 단계의 결과물인 개념적 스키마가 완성되었다.
다음 포스트에서는 데이터베이스 설계의 3번째 단계인 논리적 설계 방법에 대해 알아보도록 하겠다.

📌 출처

[데이터베이스 개론2판_한빛아카데미_김연희 지음_page 356~384]


👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄

맨 위로 이동하기

SQL 카테고리 내 다른 글 보러가기

댓글남기기