DB

데이터베이스 정의 및 특징, 데이터 모델링(개념, 논리, 물리), ERD, 정규화

빵아지 2023. 2. 11. 15:43

 

데이터베이스
(=데이터들의 모임)

#What

- 여러 데이터들을 한 곳에 모아 통합적으로 관리하는 기술

- 데이터를 여러 사람들이 사용 + 공유+저장 가능

 

#How

- 네이버 로그인

(아이디랑 비밀번호를 치면 데이터 공간에 회원들의 정보가 있으면 로그인 성공)

- 계좌 잔액조회

(잔액을 조회하면 계좌 정보가 있는 데이터 공간을 통해 알려줌)

 

#Why

- 데이터를 다루는 것(조회, 등록, 삭제)은 개발자의 역할

- 데이터베이스는 거의 모든 프로젝트에 존재

- 중요한 데이터를 저장하는 공간인만큼 중요함

 

 

 

데이터 모델링

=현실 대상을 데이터베이스로 저장할 수 있도록 설계 및 구축하는 과정

 

 

 

개념적 데이터 모델링

 

= 복잡한 현실세계의 대상을 단순화, 추상화, 명확화 하는 작업

 

<방법>

1. 엔터티와 속성 도출

2. 엔터티 간의 관계를 설정

3. ERD로 그려내기

 

엔터티(Entity) = 정보 저장을 위한 집합 개념 ex)주류, 영상, 회원 등

- 엔터티 안에는 두개 이상의 인스턴스 필요

- 하나 이상의 속성 있어야 함

- 하나 이상의 관계 가짐

 

 속성 = 엔터티의 공통적인 특징을 설명 , 이후 우리가 얻고자 하는 정보(열)

- 하나 속성에는 하나의 속성값을 가짐 

 

 인스턴스 = 엔터티 안의 개별적인 것(행)

- 각각의 대상

 

관계 = 엔터티 사이의 관계

 

예시

 

예시 2

 

 

 

 

ERD = 엔터티와 엔터티 간의 관계를 발견하고 이를 그림으로 표현 (의사소통에 용이함)

*Entity + Relationship + Diagram

방법

- 엔터티를 그릴 때 속성은 제외

- 서로 관계가 있는 것끼리 선으로 이어줌 ex)직원-부서

- 관계명 기술은 생략해도 됨 ex)소속되다-보유하다

- 참여도 : 엔터티 안의 인스턴스들이 얼마나 참여하는지를 의미

   ex)1:1, 1:N, N:N, / N쪽으로 까치발(>) 표시

- 필수여부 : 엔터티 안의 인스턴스들이 반드시 참여하는지를 의미

  ex)최소 참여 (l), 선택 참여는 (0) 로 표시 

참여도 예시
필수여부 예시
ERD 예시

* 위계 설정 : 엔터티-> 속성-> 인스턴스

- erd에 꼭 속성을 그릴 필요가 없다 기억하기!!!

 

 

 

 

 

논리적 데이터 모델링

 

= ERD를 기준으로 보다 상세한 설계도 작성

   속성입력, 식별자 선택, 정규화, 관계설정

   프로젝트에서 데이터베이스가 어떻게 만들어졌는지 참고함!

 

 

1. 속성을 모두 입력

 

- 논리적 데이터 베이스에서는 속성 모두 적는거 잊지말기!!!

- 속성을 세로로 적어주는 게 더 직관적임

 

 

 

2. 식별자 선택

식별자 : 엔터티 내에서 특정한 인스턴스를 식별할 수 있는 속성 집합

- 식별자에 직원 id는 가능/ but 성별은 안 됨

 

 

3. 정규화 실시

 

정규화 : 중복되는 데이터가 저장되지 않도록 엔터티 쪼개기

- 인스턴스별로 각 속성에는 하나의 속성값만 입력하기

   ex) 직원id가 hello1234인 인스턴스 연락처 한 칸에 집주소+회사주소? 안 돼

- 행*열 형태는 반드시 유지되어야 함! 

  ex) 열만 있어도 안 되고, 행만 있어도 안 됨, 가독성이 좋아야 하니깐

 

- 이런 식으로 인스턴스별 각 속성에는 하나의 속성값 입력해주기

- 중복되는 데이터 파악

 

- 정규화 과정에서는 중복되는 데이터 저장 안 하는게 핵심임

- 일단 직원에서 중복되는 데이터 -> 하나의 인스턴스로 만들어주기

 

- 직원 연락처도 중복되는 인스턴스는 제거

- 직원id-주소를 따로 분리한 이유는 주소만 보면 누구인지 모름

 

- 정규화를 완료한 후의 모델링 모습

 

 

 

4. 관계설정 (정규화로 쪼개진 대상들을 연결하기 위해 식별자 빌려오기)

관계설정이 중요한 이유

- 직원연락처와 직원 주소를 직원id로 식별하기 어려움

- 구분코드(속성)를 추가해줌

 

논리적 데이터모델링 완성본

 

 

 

 

 

물리적 데이터 모델링

 

= 상세하게 설계된 논리적 데이터 모델링 결과를 가지고 실제로 DB 구축을 실시