SQLD 핵심 이론 강의 1강 정리

고기호·2024년 10월 7일
1

SQLD 자격증

목록 보기
1/2
post-custom-banner

이 글은 이기적 영진닷컴의 SQL 개발자 이론+기출 강의를 정리한 내용입니다.

데이터모델링의 이해

00. 그전에 데이터베이스가 뭔지 알아봅시다.


데이터베이스

  • 여러 데이터들을 모아 통합적으로 관리하는 기술이다.
  • 여러 사람들이 함께 사용하고 공유할 수 있다.

데이터베이스가 없었을 때는?

  • 사람들 각자 여러 파일을 가지고 있다.
    • 한 사람이 파일을 바꾸면 다른 파일들도 똑같이 수정해야함.

데이터베이스의 출시

  • 데이터를 한 곳에 모아 저장하고 공유를 할 수 있게 되었다.
    • 한 사람이 파일을 바꾸면 다른 사람들은 바꿀 필요없이 똑같은 데이터베이스의 데이터를 볼 수 있어 편하다

데이터베이스가 어떻게 쓰이지?

  • 로그인 구현
    1. 로그인 페이지에서 아이디와 패스워드 입력
    2. 데이터베이스에 저장된 아이디와 패스워드를 찾음
    3. 로그인 성공 or 실패 결과 반환

SQLD라는 것은 근본적으로 무슨 역할인가?

  • 데이터베이스에서 원하는 정보를 조회하거나 조작하는 것

데이터 모델이란?

  • 현실세계의 대상을 추상화, 단순화, 명확화하여 데이터베이스로 표현한 것
    • ex) 직원들의 이름, 연락처, 주소, 재직 여부, 부서 정보 등

데이터 모델링

  • 집을 만드는 과정과 같이 데이터 모델링에도 과정이 있다.
    1. 요구 사항 접수(집을 만들고 싶어)
    2. 개념적 데이터 모델링(단순한 설계도를 일단 그려보자)
    3. 논리적 데이터 모델링(좀 더 상세한 설계도를 만들자)
    4. 물리적 데이터 모델링(실제로 구축해보자)
    5. 데이터베이스에 저장할 수 있게 세팅(집을 만들었다)

01. 엔터티(ENTITY) 이해하기


엔터티(ENTITY, 개체)란?

  • 업무에 필요한 정보를 저장/관리하기 위한 집합적인 명사 개념
    • A 회사의 직원들(업무에 필요한 정보) → 직원(직원들을 아우르는 집합적인 명사 개념)
    • A 회사의 부서들(업무에 필요한 정보) → 부서(부서들을 아우르는 집합적인 명사 개념)

인스턴스(INSTANCE)란?

  • 엔터티 집합 내에 존재하는 개별적인 대상
    • 직원 → 직원A씨, 직원B씨, 직원C씨, 직원D씨, …
    • 부서 → 노사협의부, 인사부, 급여부, 인터넷서비스부, …

엔터티의 특징

  1. 반드시 업무에서 필요한 대상이고 업무에 사용될 것
    • 요구사항에서 직원, 부서를 뽑듯이 업무에 필요한 대상이여야 함
  2. 유일한 식별자로 식별이 가능할 것
    • 직원의 이름 X → 동명이인, 주민등록번호 O → 유일함
  3. 인스턴스가 2개 이상 존재할 것
  4. 속성이 반드시 2개 이상 존재할 것
  5. 관계가 하나 이상 존재할 것

엔터티의 분류 ( 유무형에 따라 분류 )

  • 유형
    • 물리적 형태가 있는 엔터티
    • ex) 직원, 주류, 강사, 고객
  • 개념
    • 물리적 형태가 없는 엔터티
    • ex) 부서, 과목, 계급
  • 사건 ( 제일 많이 발생 )
    • 업무 수행 중에 발생하는 엔터티
    • ex) 강의, 매출, 주문, 상담

엔터티의 분류 ( 발생시점에 따라 분류 )

  • 기본/키
    • 본래 업무에 존재하는 정보
      • 요구사항 분석시 바로 추출되는 것들
    • 독립 생성 가능, 주식별자 보유
    • ex) 직원, 고객, 상품
  • 중심
    • 기본 엔터티로부터 발생
    • 업무에 있어 중심 역할
    • ex) 주문, 매출, 계약
  • 행위
    • 2개 이상 엔터티로부터 발생
    • ex) 주문이력 ( 직원이 고객으로부터 주문을 받아서 주문이력이 생겼다 )

엔터티의 명명(naming) 규칙

  1. 가능한 현업(도메인) 용어를 쓴다.
    • ex) 사람 → 고객, 전봇대 → 전주
  2. 가능하면 약어를 사용하지 않는다.
    • ex) 일별매출정보 → 일매목
  3. 단수 명사를 사용한다.
    • ex) 직원들 → 직원, 주문 내역들 → 주문내역
  4. 엔터티 이름은 유일해야 한다.
  5. 엔터티 생성의미대로 이름을 부여한다
    • ex) 연락처목록 → 직원연락처목록? 고객연락처목록? 어떤 것이지?

02. 속성


속성(ATTRIBUTE) 이란?

  • 업무상 관리하기 위해 의미적으로 더는 분리되지 않는 최소의 데이터 단위
    • 엔터티가 가지는 공통적인 특징을 표현한다.
      • ex) 직원ID, 패스워드, 연봉, 이름, 부서, 입사일시, 생년월일 등
      • 이름나이 X → 최소의 데이터 단위가 아니기 때문에 이름과 나이로 나눈다.
  • 이후 속성은 우리가 관리하고자 하는 정보가 된다.

엔터티, 인스턴스, 속성의 관계

  1. 하나의 엔터티는 2개 이상의 인스턴스를 가진다.
  2. 하나의 엔터티는 2개 이상의 속성을 가진다.
  3. 속성은 각 인스턴스를 설명해줄 수 있다.
  4. 하나의 속성에는 하나의 속성값만 들어간다.

식별자란?

  • 엔터티 내 유일한 인스턴스를 식별할 수 있는 속성의 집합
    • 프론트엔드에서 userId를 body에 넣어서 보낸다 → 데이터베이스에서 userId를 이용해 유일한 인스턴스를 찾는다
    • 유저 이름 → 동명이인이 있을 가능성 때문에 식별자가 아니다.

속성의 분류(특성에 따른 분류)

  • 기본
    • 업무로부터 추출한 속성
      • 요구사항 분석시 바로 추출
    • 제일 많이 발생
  • 설계
    • 설계시 규칙화 등이 필요해 만든 속성
    • 코드성이나 일련번호 등
      • 부서명으로 부서코드(일련번호)를 만든 것
  • 파생
    • 다른 속성들로부터 계산/변형되어 만들어진 속성
    • 실무에서 지양
      • 데이터가 추가될 때마다 기존 데이터가 변경돼야함
    • ex) 부서별연봉합

속성의 분류(구성방식에 따른 분류)

  • PK, FK, 일반속성, 복합속성
    • 나중에 이야기 할 것

속성 명명(Naming) 규칙

  • 가능한 현업 용어를 쓴다.
  • 가능하면 약어를 사용하지 않는다.
  • 명사형을 쓰고 서술식이나 수식어 등을 제한한다.
    • ex) 오늘배송된상품 → 일배송상품
  • 가능한 속성 이름은 전체 데이터 모델에서 유일해야 한다.
    • 실무에서 그렇게 지키지는 않는듯?
    • ex) 직원 엔터티의 연락처 속성과 고객 엔터티의 연락처 속성

도메인(DOMAIN)이란?

  • 각 속성이 입력 받을 수 있는 값의 정의 및 범위를 의미
  • 보통 테이블을 만들 때 각 속성마다 자료형 및 제약조건을 줄 때 결정된다.
    • ex) 나이는 숫자만 입력받을 수 있고, 입력값은 0~999까지로 한다.
    • ex) 이름은 문자형으로 입력받을 수 있고, 최대 5자리까지로 한다.

Reference

https://www.youtube.com/watch?v=lxiEiAjp7d0&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn

profile
웹 개발자 고기호입니다.
post-custom-banner

0개의 댓글