⚡ 데이터베이스
📌 기본 용어
🔷 데이터베이스(DataBase)
- 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음
- 해당 데이터베이스를 제어, 관리하는 통합 시스템을
DBMS(DataBase Management System)
이라고 한다.
🔷 엔터티(entity)
- 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사
- 서비스의 요구 사항에 맞춰 속성이 정해진다.
약한 엔터티와 강한 엔터티
-> 어떤 엔터티가 다른 엔터티의 존재 여부에 따라 종속적이라면 어떤 엔터티는 약한 엔터티이고 다른 엔터티는 강한 엔터티이다.
🔷 릴레이션(relation)
- 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
- 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리한다.
💡 보통 관계형 DB에서는 테이블
이라고 하고, NoSQL DB에서는 컬렉션
이라고 한다.
🔷 속성(attribute)
- 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보
- 서비스의 요구 사항을 기반으로 관리해야 할 필요가 있는 속성들만 엔터티의 속성이 딘다.
🔷 도메인(domain)
- 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합
🔷 필드(field)
🔷 레코드(record)
-
테이블에 쌓이는 행(row) 단위의 데이터
💡 튜플(tuple)이라고도 한다.
🔷 필드 타입(field type)
🔷 관계
🔷 키
- 테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치
-
기본키(Primary key)
- 주로 PK라고 부르며
유일성
과 최소성
을 만족하는 키이다.
💡 유일성
: 중복되는 값이 없는 것
💡 최소성
: 최소 필드만 써서 키를 형성할 수 있는 것
- 테이블의 데이터 중 고유하게 존재하는 속성이며 기본키의 데이터는 중복되어서는 안된다.
-
자연키
- 중복된 값들을 제외하며 중복되지 않는 것을 자연스레 뽑다가 나오는 키
- 언젠가는 변하는 속성을 가지고 있다.
-
인조키
- 고유 식별자(기본키) 생성을 위해 인위적으로 생성한 키
- 자연키와 다르게 변하지 않는다.
-
외래키(Foreign Key)
- FK라고 부르며, 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계 식별 시 사용
- 중복될 수 있다.
-
후보키(candidate key)
- 기본키가 될 수 있는 후보들
유일성
과 최소성
을 만족한다.
-
대체키(alternative key)
- 후보키가 두 개 이상일 경우 어느 하나를 기본키로 지정하고 남은 후보키들
-
슈퍼키(super key)
- 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키
📌 ERD
- 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것
- 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축한다.
- 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용하다.
- 다만,
비정형 데이터
는 충분히 표현할 수 없다.
💡 비정형 데이터
: 비구조화 데이터, 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 데이터
🔷 정규화 과정
- 릴레이션 간의 잘못된 종속 관계로 인해
데이터베이스 이상 현상
이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정
💡 데이터베이스 이상 현상
: 한 튜플이 갑자기 여러 개의 같은 필드의 여러 값을 갖거나, 데이터 삭제 시 엉뚱한 데이터가 함께 삭제되고, NOT NULL 제약 때문에 데이터 삽입이 꼬이는 등 여러모로 사람 빡치게 한다.
🔷 정규화 원칙
- 같은 의미를 표현하는 릴레이션이어도 좀 더 좋은 구조로 만들어야 한다.
- 자료의 중복성은 감소해야 한다.
- 독립적인 관계는 별개의 릴레이션으로 표현한다.
- 각각의 릴레이션은 독립적인 표현이 가능해야 한다.