Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 유노코딩
- TiL
- 99클럽
- redis
- 코딩테스트
- HTML
- 데이터베이스시스템
- 코드잇
- node.js
- Git
- 코딩테스트준비
- aws
- Cookie
- 개발자취업
- 중간이들
- 꿀단집
- 프로그래머스
- 파이썬프로그래밍기초
- CSS
- Python
- 방송대
- MySQL
- SQL
- 파이썬
- presignedurl
- 엘리스sw트랙
- JavaScript
- 방송대컴퓨터과학과
- nestjs
- 항해99
Archives
- Today
- Total
배꼽파지 않도록 잘 개발해요
[엘리스sw] 프로젝트로 배우는 데이터베이스 본문
◆ 데이터베이스 준비하기
◆ 정규화(Normalization)
◆ 뷰(View)
◆ 데이터베이스 준비하기
데이터베이스
관계형 데이터베이스 (RDB) | 비관계형 데이터베이스 (NoSQL) |
MySQL, MariaDB, postgreSQL | JSON |
각 테이블 간 관계 O | 각 테이블 간 관계 X |
스키마 O | 스키마 X |
구조적으로 안정적이나 유연하지 못함 | 유연성을 가지고 있으나 구조 결정이 어려움 |
상황과 조건에 맞춰 적절한 데이터베이스를 선택하는 것이 중요함.
데이터모델링
데이터모델링 효율적으로 데이터베이스를 구축하기 위해 데이터베이스의 뼈대를 세우는 작업
- 요구 사항 정리 : 데이터가 어떠한 형태, 어떤 목적을 가지고 있는지 정리
- 개념적 데이터 모델 설계 : 핵심 개체를 찾고, 각 개체 간의 관계를 정리
- 논리적 데이터 모델 설계 : 실제 데이터베이스로 구현하기 위한 모델링
- 물리적 데이터 모델 설계 : 데이터가 어떻게 컴퓨터에 저장될 지 설계
데이터베이스 네이밍 규칙
유지보수와 의미의 명확성을 전달하기 위해 네이밍 규칙을 설정
공통 규칙
줄임말 사용을 최소화한다. (단, 사용할 경우 범용적으로 사용되는 줄임말을 사용한다.)
- kb_image (X) → kickboard_image (O)
- tb_KickboardInfo (△) (Info: Information의 줄임말)
테이블 네이밍 규칙
1. 테이블 명을 작성할 때는 파스칼 표기법을 사용한다.
- kickboard_rental (X) → kickboardRental (O)
- customer_info (X) → CustomerInfo (O)
2. 테이블, 뷰(View)임을 한 눈에 확인할 수 있도록 테이블 명 앞에는 'tb_', 'v_'를 붙인다.
- tb_KickboardRental (킥보드 대여와 관련된 테이블)
- v_KickboardInfoForAnalysis (데이터 분석을 위해 필요한 정보만 모아 둔 가상 테이블)
속성 네이밍 규칙
1. 속성 명을 작성할 때는 스네이크 표기법을 활용한다.
- customerID (X) → customer_id (O)
- CustomerTel (X) → customer_tel (O)
2. 유일키, 외래키 등은 한 눈에 알아 볼 수 있도록 속성 명 앞에 'pk_', 'fk_'를 붙인다.
(단, 중복으로 설정되어 있는 경우 외래키 > 유일키 순으로 작성한다.)
- pk_kickboard_id
- fk_pk_customer_id
데이터 타입
- varchar : 문자형 타입, 괄호 안 의미는 해당 문자열의 크기(byte)
- 영문자 기준 1글자 당 1byte를 사용함.
- 한글은 한 글자 당 2byte가 필요함. - int : 정수형 타입, varchar과 달리 괄호로 크기를 작성해주지 않음.
유일키(Primary Key)
- 데이터베이스에서 튜플(레코드, 행) 간 구분을 위한 값(속성)
- 유일키, 복합키, 외래키 등 다양한 종류가 존재함.
- 테이블에서 튜플(레코드, 행)을 구분지어주는 고유 식별 값(속성)
- 유일키 값은 중복될 수 없으며, NULL 값 또한 불가능함.
복합키(Composite Key)
- 두 개 이상의 속성을 활용하여 튜플(레코드, 행)을 구분지어주는 방법
외래키(Foreign Key)
- 다른 테이블의 키와 연결을 해주는 키이며, 참조의 무결성을 유지하기 위해 활용함.
- 참조의 무결성 : 외래키 값이 참조 중인 테이블의 값과 일관성을 가지는 것을 의미함.
정규화(Normalization)
정규화
- 테이블 간 데이터 조작 (삽입, 수정, 삭제) 시 발생할 수 있는 이상 현상을 줄이기 위해 하는 작업
- 대부분 1~3차 정규화까지 진행하면 대부분의 이상현상을 없앨 수 있음.
1차 정규화(1NF)
- 각 속성마다 값이 1개씩 존재하도록 하는 과정 (원자화)
2차 정규화(2NF)
- 복합키로 구성 되어있을 때 고려해야하며 모든 속성이 완전 함수 종속이 되도록 하는 작업
완전 함수 종속
- A, B, C, D가 있을 때 B가 A에 의해 종속되는 경우
- B는 다른 내용(C, D)에 의해 종속이 되지 않는 경우
3차 정규화(3NF)
- 테이블 내에서 이행적 요소를 제거하는 작업
뷰(View)
- 하나 이상의 테이블에서 여러 정보를 토대로 만들어지는 가상의 테이블
- 필요한 정보만 추출하여 하나의 뷰를 만들 수 있음.
View는 실제 존재하지 않는 가상의 테이블
해당 테이블을 삭제하더라도 원본 테이블에는 영향이 없음.
728x90
'교육 > 엘리스 SW 학습 내용' 카테고리의 다른 글
[엘리스sw] 실습으로 배우는 AWS - ① AWS 시작하기 (0) | 2024.05.19 |
---|---|
[엘리스sw] SQL로 데이터 다루기 Ⅱ (0) | 2024.05.09 |
[엘리스sw] SQL로 데이터 다루기 Ⅰ (0) | 2024.04.29 |
[엘리스sw] MongoDB - 개요, CRUD, 쿼리 연산자, 고급 활용 기능 (0) | 2024.04.07 |
[엘리스sw] 13주차 3일 - styled-component (0) | 2024.03.26 |