데이터베이스(Database)
일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음을 뜻한다.
데이터베이스의 특징
- 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(Database Management System)라고 하며 해당 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다.
- 데이터베이스는 실시간 접근과 동시 공유가 가능하다.
- 데이터베이스 위에 DBMS가 있고 그 위에 응용 프로그램이 있으며 이러한 구조를 기반으로 데이터를 주고받는다.
엔티티(Entity)
엔티티는 여러 개의 속성을 지닌 명사를 의미하는 것으로 서비스의 요구 사항에 맞춰 속성이 정해진다.
약한 엔티티와 강한 엔티티
어떤 데이터가 혼자서는 존재하지 못하고 다른 데이터의 존재 여부에 따라 종속적이라면 해당 데이터는 약한 엔티티이고 대상이 되는 데이터는 강한 엔티티가 된다.
강한 엔티티
강한 엔티티는 스키마의 다른 엔티티에 종속되지 않는다. 즉, 어떤 데이터가 혼자서도 존재할 수 있고 다른 데이터에 종속을 받는다면 강한 엔티티이다.
강한 엔티티는 항상 기본 키를 갖게 된다.
약한 엔티티
약한 엔티티는 어떤 데이터가 혼자서는 존재하지 못하고 다른 데이터의 존재 여부에 따라 종속적인 것을 의미한다.
약한 엔티티는 기본 키가 없다.
릴레이션
릴레이션은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다.
엔티티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리한다.
릴레이션은 RDBMS에서는 테이블이라고 하며 NoSQL에서는 컬렉션이라고 한다.
데이터가 쌓여서 테이블이 되고 테이블이 쌓여서 데이터베이스가 된다.
속성(Attribute)
릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보를 뜻한다.
서비스의 요구 사항을 기반으로 관리해야 할 필요가 있는 속성들만 엔티티의 속성이 된다.
도메인(Domain)
릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합을 말한다.
필드와 레코드
테이블에는 여러 가지 속성들이 있는데 해당 속성들을 가지고 필드를 만들게 된다.
각 필드는 타입을 갖는데 DBMS마다 다르다. (숫자, 날짜, 문자 등)
레코드는 테이블에 쌓이는 행 단위의 데이터를 뜻하며 튜플이라고도 한다.
관계
데이터베이스에는 여러 개의 테이블이 존재하는데 서로의 관계가 정의되어 있고 관계 화살표로 나타낸다.
1:1 관계
테이블을 두 개의 테이블로 나눠 테이블의 구조를 더 이해하기 쉽게 만들어 준다.
유저당 유저 이메일을 하나씩 가지고 있기 때문에 1:1 관계이다.
1:N 관계
한 개체가 다른 많은 개체를 포함하는 관계를 말한다.
한 명의 유저가 여러 가지 상품을 담을 수 있기 때문에 1:N 관계이다. 여기서 생각해야 될 점은 상품을 하나도 고르지 않을 수 있기 때문에 관계 화살표를 잘 표현해줘야 한다.
N:M 관계
테이블 두 개를 직접적으로 연결해서 구축하지 않고 1:N, 1:M이라는 관계를 갖는 테이블 두 개로 나눠서 설정한다.
학생은 여러 개의 강의를 수강할 수 있고, 강의도 여러 명의 학생을 포함할 수 있기 때문에 N:M 관계이다.
키(Key)
키는 관계형 데이터베이스 모델의 기본 요구 사항 중 하나로 테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치이다.
기본키(Primary Key)
PK 또는 프라이머리키라고 많이 부르며 유일성과 최소성을 만족하는 키이다.
테이블의 데이터 중 고유하게 존재하는 속성이며 기본키에 해당하는 데이터는 중복되어서는 안 된다.
기본키는 자연 키, 인조 키 혹은 후보 키 중에 골라 설정해야 한다.
한 번에 하나의 튜플만 식별할 수 있다.
기본키 값으로 NULL일 수 없다.
자연키(Natural Key)
중복된 값들을 제외하며 중복되지 않는 것을 자연스레 뽑다가 나오는 키를 뜻한다.
자연키는 언젠가는 변하는 속성을 가지기 때문에 기본키로 설정하기에는 무리가 있다.
인조키(Artificial Key)
인위적으로 생성한 키를 뜻한다.
자연키와는 반대로 변하지 않는 속성을 가지기 때문에 보통 기본키를 인조키로 설정한다.
외래키(Foreign Key)
FK라고 하며 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는 데 사용한다.
외래키는 참조해서 사용하는 값이므로 중복되어도 괜찮다.
후보키(Candidate Key)
기본키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족하는 키이다.
튜플을 고유하게 식별할 수 있는 최소 속성 집합을 후보키라고 하는데 이를 위해서 고유한 값이 포함되어야 한다.
기본키와는 다르게 NULL 값을 포함할 수 있다.
모든 테이블에는 최소한 하나의 후보 키가 있어야 한다.
주의할 점으로는 테이블에 기본 키는 하나만 가질 수 있지만, 후보 키는 여러 개를 가질 수 있다.
대체키(Alternate Key)
후보키가 두 개 이상일 경우 어느 하나를 기본키로 지정하고 남은 후보키들을 말한다.
슈퍼키(Super Key)
각 레코드를 유일하게 식별할 수 있는 유일성을 만족하지만 최소성을 만족하지 못하는 키이다.
따라서 모든 슈퍼키는 후보키가 될 수 없지만, 모든 후보키는 슈퍼키가 될 수 있다.
슈퍼키에도 NULL값이 있을 수도 있다.
참고 자료
- CS전공지식노트(주홍철)
- https://www.geeksforgeeks.org/dbms/?ref=ghm
'DB' 카테고리의 다른 글
MySQL - SELECT (1) | 2023.11.09 |
---|---|
MySQL - SQL (0) | 2023.11.09 |
MySQL (0) | 2023.11.08 |
데이터베이스 - 트랜잭션과 무결성 (2) | 2023.10.28 |
데이터베이스 - ERD와 정규화 (0) | 2023.10.28 |