😺Data Base/😻 SQLD

[RDBMS] 관계형 데이터 모델링 1

디카페인라떼 2022. 9. 14. 00:59

더보기 - 참고한 강의 

데이터 모델링 이란?
  • 문제를 현실로부터 뜯어내서 고도의 추상화 과정을 통해 컴퓨터라는 새로운 현실로 옮긴것

 

데이터 모델링의 순서
  1. 업무파악
  2. 개념적 데이터 모델링
     - 어떠한 개념들이 서로 어떻게 상호작용하는가
  3.  논리적 데이터 모델링 
      - 표로 만들기 (erd)
  4. 물리적 데이터 모델링
      - 어떤 걸 사용할 것인가

업무파악 
  •  ui를 직접 같이 그려보기!
    • 말의 기능을 불신하세요 : 내가 한 말을 상대가 바로 이해했을거라 믿지마세요
  • 기획서 같이 만들어보기
    • 기획자와 구현자가 서로 다를 경우 최소 데이터 모델링까지는 함께 해야함!
        

<기획서 예시>

 


개념적 데이터 모델링 = Entity Relationship Diagram (ERD)
  • 우리가 파악한 업무에서 개념을 뽑아내는 것
  • 관계형 모델링 프로세스의 극치.... 혼자 할 수 없는게  정상임 : 물리적모델링까지 다 듣고 다시들어보기 ! 언젠가 되겠지.. 알게되겠지.. 란 마인드로 하기
  • 개념적 데이터 모델링의 효용
    • 현실에서 개념을 추출하는 일종의 필터
    • 개념에 대해서 다른 사람과 대화하게 해주는 언어
  • ERD : 현실을 3개의 관점으로 보라볼 수 있는 finder를 제공
    1. 정보 : 정보를 발견하고 다른 사람에게 표현할 수 있게 도움
    2. 그룹 : 서로 연관된 정보를 그루핑해서 인식하고 다른 사람에게 표현할 수 있게 함
    3. 관계 : 정보, 그룹사이의 관계를 인식하고 다른 사람에게 표현할 수 있게 함
    4. (추가) ERD로 만들고 나면 표로 만들기 쉬움

 

ERD를 만드는 방법
  • 연관된 정보들을 묶어주는 큰 덩어리부터 끄집어 내기!
    • 글 / 댓글 / 저자

 

 

  • 왜 아래쪽 모델이 더 관계형 데이터 베이스 다운가?
    • 표로만들면 이해하기 쉬움!

  1. 주제에 따라 데이터를 그루핑 가능 -> 컴퓨터의 자원을 아낄 수 있음.
  2. JOIN을 할 수 있음 

🚩즉, 포함관계보다 평면적인 관계로 뽑아내는 것이 좀더 관계형 데이터베이스와 어울린다!!

 

ERD (개념적 모델링)의 구성요소 : 개념에 집중!
  • Entity (그루핑된 것) => 글 / 저자 / 댓글 => Table
  • Attribute (속성) => 본문 / 제목 / 날짜 => Column
  • Relation (관계) => 저자 - [쓰다] - 글 - [소속] - 댓글 - [쓰다] - 저자 => PK / FK / Join
  • Tuple => raw (행)

 

Entity
  • 기획서에서 먼저 찾아보기!
    • 연관된 내용을 그루핑하기
    • ex) 쓰기 화면을 보면 엔티티가 드러남.

 

Attribute
  • 각각의 엔티티의 속성 (원으로 표현)
    •   글
      • 제목 본문 날짜
    • 저자
      • 이름 자기소개 가입일
    • 댓글
      • 본문 작성일

 

글의 속성

 

전체 속성

Primary Key (식별자) 지정
  • 엔티티에 있는 속성 중 하나를 식별자로 지정
  • 원하는 대상을 정확히 타겟팅
  • 그 대상을 제외한 누구도 같은 값은 안됨! ( ex . 주민등록번호 )
  • PK = 기본 키

  • 인조키
    • 기본키가 될 항목이 없을 경우 임의의 식별자를 지정하여 넣어주는 것
    • ex) user_id

  • 중복키
    • 키값 2개로 중복하여 식별하는 경우
    • ex ) 직원번호  +부서번호 2개로 식별하는 경우 

 

 

엔티티 간의 연결
  • PK : 유일무이 식별자
  • Foreign Key : 외래에 있는 테이블과 연결하는 열쇠 (외래키)

🚩relationship은 프라이머리 키와 외래키가 연결되는 걸 통해서 실제로 구현

 

  • PK : 저자아이디 / 글아이디 / 댓글 아이디
  • Relation  : 작성 / 작성 / 소속

 

Cardinality : 특정 데이터 집합의 유니크한 값의 개수
  • 까다로운거 맞음 ...^^ 쫄지말기..
  • 관계성? 일대일 관계 / 일대다 관계 / 다대다 관계
  • 일대일 관계

  • 일대다 관계

  • 다대다 관계

✔ 실제로 다대다 관계는 성립이 안되기 때문에 관계 테이블 하나를 추가하여 일대다 관계로 수정하여 사용

 

Optionality : 있을 수도 있고 없을 수도 있다
  • Mandatory 와 Optional
  • Optional

  • Mandatory

 


ERD 완성

  • 저자 vs 글
    • 저자 는 글 이 필수가 아니다 (optional)
    • 저자 는 글 을 여러개 가질 수 있다 (n)
    • 글 은 저자 가 필수다 (Mandatory)
    • 글 은 저자 를 여러개 가질 수 있다 (m)
  • 저자 vs 댓글
    • 저자 는 댓글 이 필수가 아니다 (optional)
    • 저자 는 글 을 여러개 가질 수 있다 (n)
    • 댓글 은 저자 가 필수다 (Mandatory)
    • 댓글 은 저자 가 하나 뿐이다 (1)
  • 글 vs 댓글
    • 글은 댓글 이 필수가 아니다 (optional)
    • 글 은 댓글을 여러개 가질 수 있다 (n)
    • 댓글 은 글 이 필수다 (Mandatory)
    • 댓글 은 글 이 하나 뿐이다 (1)
더보기

관계성을 쉽게 정리 하기 위한 사이트

http://erd.yah.ac/

 

http://erd.yah.ac/

 

erd.yah.ac

 

'😺Data Base > 😻 SQLD' 카테고리의 다른 글

[DB] Index  (0) 2022.09.17
[RDBMS] 관계형 데이터 모델링 2  (0) 2022.09.16
[DB] 트랜잭션 Transaction 이란?  (0) 2022.09.10
[SQL] 기초 SQL 문법  (0) 2022.09.08
[DB] SQL 과 NoSQL  (0) 2022.09.08