데이터베이스
(=데이터들의 모임)
#What
- 여러 데이터들을 한 곳에 모아 통합적으로 관리하는 기술
- 데이터를 여러 사람들이 사용 + 공유+저장 가능
#How
- 네이버 로그인
(아이디랑 비밀번호를 치면 데이터 공간에 회원들의 정보가 있으면 로그인 성공)
- 계좌 잔액조회
(잔액을 조회하면 계좌 정보가 있는 데이터 공간을 통해 알려줌)
#Why
- 데이터를 다루는 것(조회, 등록, 삭제)은 개발자의 역할
- 데이터베이스는 거의 모든 프로젝트에 존재
- 중요한 데이터를 저장하는 공간인만큼 중요함
데이터 모델링
=현실 대상을 데이터베이스로 저장할 수 있도록 설계 및 구축하는 과정
개념적 데이터 모델링
= 복잡한 현실세계의 대상을 단순화, 추상화, 명확화 하는 작업
<방법>
1. 엔터티와 속성 도출
2. 엔터티 간의 관계를 설정
3. ERD로 그려내기
엔터티(Entity) = 정보 저장을 위한 집합 개념 ex)주류, 영상, 회원 등
- 엔터티 안에는 두개 이상의 인스턴스 필요
- 하나 이상의 속성 있어야 함
- 하나 이상의 관계 가짐
속성 = 엔터티의 공통적인 특징을 설명 , 이후 우리가 얻고자 하는 정보(열)
- 하나 속성에는 하나의 속성값을 가짐
인스턴스 = 엔터티 안의 개별적인 것(행)
- 각각의 대상
관계 = 엔터티 사이의 관계
ERD = 엔터티와 엔터티 간의 관계를 발견하고 이를 그림으로 표현 (의사소통에 용이함)
*Entity + Relationship + Diagram
- 엔터티를 그릴 때 속성은 제외
- 서로 관계가 있는 것끼리 선으로 이어줌 ex)직원-부서
- 관계명 기술은 생략해도 됨 ex)소속되다-보유하다
- 참여도 : 엔터티 안의 인스턴스들이 얼마나 참여하는지를 의미
ex)1:1, 1:N, N:N, / N쪽으로 까치발(>) 표시
- 필수여부 : 엔터티 안의 인스턴스들이 반드시 참여하는지를 의미
ex)최소 참여 (l), 선택 참여는 (0) 로 표시
* 위계 설정 : 엔터티-> 속성-> 인스턴스
- erd에 꼭 속성을 그릴 필요가 없다 기억하기!!!
논리적 데이터 모델링
= ERD를 기준으로 보다 상세한 설계도 작성
속성입력, 식별자 선택, 정규화, 관계설정
프로젝트에서 데이터베이스가 어떻게 만들어졌는지 참고함!
1. 속성을 모두 입력
- 논리적 데이터 베이스에서는 속성 모두 적는거 잊지말기!!!
- 속성을 세로로 적어주는 게 더 직관적임
2. 식별자 선택
식별자 : 엔터티 내에서 특정한 인스턴스를 식별할 수 있는 속성 집합
- 식별자에 직원 id는 가능/ but 성별은 안 됨
3. 정규화 실시
정규화 : 중복되는 데이터가 저장되지 않도록 엔터티 쪼개기
- 인스턴스별로 각 속성에는 하나의 속성값만 입력하기
ex) 직원id가 hello1234인 인스턴스 연락처 한 칸에 집주소+회사주소? 안 돼
- 행*열 형태는 반드시 유지되어야 함!
ex) 열만 있어도 안 되고, 행만 있어도 안 됨, 가독성이 좋아야 하니깐
- 이런 식으로 인스턴스별 각 속성에는 하나의 속성값 입력해주기
- 중복되는 데이터 파악
- 정규화 과정에서는 중복되는 데이터 저장 안 하는게 핵심임
- 일단 직원에서 중복되는 데이터 -> 하나의 인스턴스로 만들어주기
- 직원 연락처도 중복되는 인스턴스는 제거
- 직원id-주소를 따로 분리한 이유는 주소만 보면 누구인지 모름
- 정규화를 완료한 후의 모델링 모습
4. 관계설정 (정규화로 쪼개진 대상들을 연결하기 위해 식별자 빌려오기)
- 직원연락처와 직원 주소를 직원id로 식별하기 어려움
- 구분코드(속성)를 추가해줌
물리적 데이터 모델링
= 상세하게 설계된 논리적 데이터 모델링 결과를 가지고 실제로 DB 구축을 실시
'DB' 카테고리의 다른 글
WHERE, 비교조건, 논리조건, 부정연산, NULL조건, IN연산자 (0) | 2023.02.14 |
---|---|
내장형 함수, 형변환 함수, NULL함수 (1) | 2023.02.13 |
SQL의미 및 종류, SQL실행순서, 자료형과 리터럴, SELECT 연결연산 및 사칙연산 (0) | 2023.02.11 |