목차
1. 데이터베이스
2. SQL
데이터베이스
데이터베이스
데이터베이스
- 체계화된 데이터의 집합체
- 중복된 데이터를 없애고, 자료를 구조화하는 효율적인 처리
- DBMS: 데이터베이스를 관리하는 미들웨어
- SQL 사용 O ->RDB
- SQL 사용 X -> NOSQL
서버는 데이터베이스에 접근하여 데이터들을 읽고 쓴다.
Relational DataBase
key-value들의 간단한 관계를 테이블화 시킨 데이터베이스
구조
- 하나의 집합체는 테이블
- 열은 칼럼, 지정할 필드 값을 지칭
- 행은 로우 혹은 인스턴스, 실제 데이터의 한 단위
Primary Key(기본 키)
다른 데이터와 구별할 수 있는 식별자
한 테이블에는 하나 혹은 그 이상의 기본 키가 있어야 한다.
기본 키는 널값을 넣을 수 없으면서 유니크한 값이어야 한다.
Index(인덱스)
데이터의 색인 기능
관계형 데이터베이스에서 검색 속도를 높이기 위한 도구
인덱스는 유니크하면서 특정 데이터를 대표하는데 사용 -> 인덱스를 주로 기본 키로 사용
Foreign Key(외래 키)
한 테이블의 칼럼 중 다른 테이블의 인스턴스를 식별할 수 있는 키
"Relational" Database
-> 테이블과 테이블 간의 관계가 형성되어 있는 데이터베이스
Relational DataBase Relation(RDB의 관계)
종류
- 1:1 관계
- 1:N 관계
- N:M 관계
1:1 관계
어느 엔티티 쪽에서 상대 엔티티와 반드시 단 하나의 관계를 가지는 것
이름과 주민등록번호와 같이 상대 테이블(엔티티)와 본인 엔티티가 정확하게 하나씩으로 맞아 떨어진다.
상대 엔티티와 두 개 이상을 매칭할 수 없다.
1:N 관계
한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것
실제 디비에서 자주 쓰이는 관계로 디비를 구성할 때 가장 많이 나타나는 관계이다.
개인과 이메일과 같이 한 사람이 여러 개의 상대 엔티티의 인스턴스와 매칭이 가능하지만 반대로 상대 엔티티는 하나의 인스턴스에 종속되는 것을 뜻한다.
이러한 관계는 N의 속성을 갖는 엔티티가 1의 속성을 갖는 엔티티의 기본 키를 외래 키로 받으면 형성이 된다.
N:M 관계
관계를 가진 양쪽 엔티티 모두에서 1:N관계를 가지는 것
서로가 서로를 1:N 관계로 보고 있는 것이다.
논리적 설계 때는 이 관계를 직접적으로 서술하지만 물리적 구현단계에서는 중간에 양 엔티티가 1:N의 관계를 갖는 중간 다리 테이블을 생성한다.
정규화(Normalization)
"RDB를 논리적이고 직관적으로 만드는 과정"
정규화는 이상 현상이 있는 테이블을 분해하여 이상 현상을 없애는 과정이다.
이상 현상이 존재하는 테이블을 분해하여 여러 개의 작은 테이블을 생성하게 된다.
이를 단계별로 구분하여 높아질 수록 이상 현상은 줄어들게 된다.
개발 중 데이터의 변화가 생겨도 설계를 재구성할 필요성이 감소한다.
장점
- 데이터 베이스 변경 시 이상 현상(Anomaly)을 제거할 수 있다.
- 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.
- 데이터베이스와 연동된 응용프로그램(어플리케이션)에 최소한의 영향 만을 미치게 되어 응용프로그램의 생명을 연장시킨다.
단점
- 테이블의 분해로 인해 테이블 간의 조인 연산이 많아진다. 즉 기본키 - 외래키 이렇게 건너가는 단계가 늘어난다.
- 이로 인해 쿼리에 대한 응답 시간이 느려질 수도 있다. 데이터의 중복 속성을 제어하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
- 따라서 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있다.
- 만약 조인이 많이 발생하여 성능 저하가 나타나면 반정규화(De-normalization)를 적용할 수도 있다.
이상 현상(Anomaly)
삽입이상: 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
갱신이상: 중복되는 데이터 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
삭제이상: 데이터를 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
제 1 정규형
규칙
- 각 칼럼이 하나의 속성만을 가져야한다.
- 하나의 칼럼은 같은 종류나 타입의 값을 가져야한다.
- 각 칼럼이 유일한 이름을 가져야한다.
- 칼럼의 순서가 상관 없어야한다.
제 2정규형
규칙
- 제 1정규형을 만족해야한다.
- 모든 칼럼이 다른 칼럼의 부분적 종속이 없어야한다. => 모든 칼럼이 완전 함수 종속을 만족해야한다.
제 3정규형
규칙
- 제 2정규형을 만족해야한다.
- 기본키를 제외한 속성들 간의 이행 종속성이 없어야 한다.
역 정규화
정규화된 테이블의 중복을 허용하고, 다시 통합하거나 분할하여 구조를 재조정하는 과정
정규화된 모델은 저장된 자료를 검색하는 시간을 증가시키기 때문에 성능을 저하
물리적 설계과정에서 성능을 향상시키기위해 역정규화를 실행
SQL
SQL
데이터베이스에서 테이블을 처리하는 방식
종류
- 데이터 생성 CREATE -> INSERT
- 데이터 조회 READ -> SELECT
- 데이터 수정 UPDATE -> UPDATE
- 데이터 삭제 DELETE -> DELETE
- 조회 중 join -> 테이블 결합
- 조회 중 where -> 조회 조건 추가
- 조회 중 order by -> 오름차순, 내림차순
'GDSC Kookmin 22 - 23 Backend Study' 카테고리의 다른 글
11/21 GDSC 백엔드 스터디 정리 (0) | 2022.11.26 |
---|---|
11/14 GDSC 백엔드 스터디 정리 (0) | 2022.11.20 |
11/01 GDSC 백엔드 스터디 정리 (0) | 2022.11.05 |
10/11 GDSC 백엔드 스터디 정리 (0) | 2022.10.23 |
10/04 백엔드 스터디 정리 (2) | 2022.10.08 |