면접을 위한 CS 전공지식 노트를 읽고 중요하다고 생각되는 부분을 정리합니다.
데이터베이스란 ?
데이터베이스는 일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음
이런 DB 를 관리하는 통합 시스템을 DBMS (DataBase Management System) 이라고 하며 여러 DBMS 마다 정의된 쿼리 문법을 통해
CRUD 를 수행할 수 있다.
1.필드 타입
필드는 항상 타입을 갖는데 여러가지 타입이 있지만 날짜 타입과 문자 타입을 정리해보자.
1-1. 날짜 타입
3 가지의 타입이 있고 가장 많은 시간대를 지원하고 가장 큰 용량을 차지하는 타입은 DATETIME 이다.
DATA | 시간범위 미포함 1000-01-01 ~ 9999-12-31 3Byte |
DATETIME | 날짜 및 시간범위 모두 포함 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 까지 지원 8Byte |
TIMESTAMP | 날짜 및 시간범위 모두 포함 1970-01-01 00:00:00 ~ 2038-01-19 03:14:07 까지 지원 4Byte |
1-2. 문자 타입
CHAR, VARCHAR, TEXT, BLOB, ENUM, SET 타입이 존재한다.
ENUM, SET 타입은 다른 타입에 비해 사용 빈도가 적으므로 그런게 있다 정도만 알고 넘어가기로 했다.
CHAR, VARCHAR | CHAR 은 테이블을 생성할 때 선언한 길이로 고정된다. 길이는 0 ~ 255 사이의 값을 가질 수 있다. |
VARCHAR 은 고정이 아닌 가변 길이 문자열이다. 즉, 입력된 데이터에 따라 용량을 가변시켜 저장하는 타입 길이는 0 ~ 65,535 사이의 값을 가질 수 있다. 글자에 해당하는 Byte + 길이기록용 1Byte 로 저장한다. |
|
TEXT, BLOB |
BLOB 은 이미지, 동영상 등 큰 데이터 저장에 사용 AWS S3 를 사용하는 경우 이미지 경로 등을 VARCHAR 에 저장해서 자주 사용하지는 않는다. |
TEXT 는 큰 문자열 저장에 쓰며 주로 게시판의 본문을 저장할 때 사용 |
2. 키 (KEY)
테이블 간의 관계를 명확히 하고 테이블 자체의 인덱스를 위해 설정된 장치 (인덱스에 대해선 다른 포스팅에 따로 기록)
슈퍼키, 후보키, 기본키, 대체키, 외래키 가 존재한다.
키를 알아보기 전에 자주나오는 용어인 유일성, 최소성에 대해 먼저 알아보자.
2-1. 유일성이란 ?
하나의 키 값으로 레코드를 유일하게 식별할 수 있는 성질을 뜻한다.
예를들어 유저라는 엔티티가 있다고 가정했을 때, 이름, 나이, 취미, 주민번호 등의 속성을 가질 수 있고 여기서 주민번호를 제외한 다른
속성들은 충분히 중복될 수 있는 여지가 있는데, 여기서 주민번호 속성만이 유일성을 가지는 속성이라고 할 수 있다.
2-2. 최소성이란 ?
키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질을 뜻한다.
쉽게말해 키를 구성하는 각 속성들이 각 레코드를 구별하는데 꼭 필요한 속성들로만 구성되어있는가 ? 를 뜻한다.
위와 똑같은 속성을 가진 엔티티를 예시로 본다면, 주민번호를 통해 레코드를 식별할 수 있는데 굳이 중복될 수 있는 이름, 나이, 취미 등을
섞어서 키를 만들 필요가 없다. 이 때 주민번호는 최소성을 가지는 속성이라고 할 수 있다.
2-3. 기본 키 (Primary Key)
흔히 PK 라고 말하는 키이며 유일성과 최소성을 만족하는 키.
기본 키는 단일 기본키, 복합 기본키가 있으며 모두 유일성과 최소성을 만족해야 한다.
또한 기본 키는 자연키와 인조키로 구분할 수 있다. 조금 더 알아보자.
자연키 | 자연 키는 언젠가는 변하는 속성을 지닌다. 이름, 나이, 취미, 주민번호 속성 중 주민번호가 기본 키가 될 수 있는데, 이처럼 중복된 값들을 제외하며 중복되지 않는 것을 자연스레 뽑아 나온 키라고 해 자연 키 라고 한다. |
인조키 | 인조 키는 자연 키와 다르게 변하지 않는다. 따라서 보통 기본 키는 안전하게 인조 키로 설정하는 경우가 많다. MySQL 기준 Auto_Increment 를 사용, 인위적으로 생성한 키를 인조 키라고 한다. |
2-4. 외래 키 (Foreign Key)
흔히 FK 라고 말하는 키이며 다른 테이블의 기본 키를 그대로 참조하는 값으로, 개체와의 관계를 식별하는 사용한다.
A 와 B 라는 테이블이 있다고 했을 때, A 테이블의 속성이긴 하지만 B 테이블의 기본 키를 참조하고 있는 키이다.
아래 User, Car 테이블을 참고하면 Car 테이블은 User 테이블의 기본 키인 ID 를 참조하여 자신의 외래 키 User_Id 로 설정한 것을 확인 할 수 있다. 이걸 Car 테이블은 User 테이블을 참조하고 있다고 하며, 보다 싶이 외래 키는 중복되어도 상관 없다.
User Table
ID | Name | PhonNumber |
A_1 | 김철수 | 010-1234-5678 |
A_2 | 김영희 | 010-3232-4555 |
Car Table
ID | User_Id | CarName |
1 | A_1 | BMW 5 |
2 | A_1 | 아우디 A6 |
3 | A_2 | 미니쿠페 |
2-5. 후보 키 (Candidate Key)
후보 키는 기본 키가 될 수 있는 기본 키의 후보들이며 기본 키의 조건을 만족하고 있는 키를 말한다.
따라서 당연히 유일성과 최소성을 동시에 만족한다.
2-6. 대체 키 (Alternate Key)
대체 키는 후보 키가 두 개 이상일 경우 어느 하나를 기본 키로 지정하고 남은 후보 키를 말한다.
A Key 와 B Key 두 개의 후보 키가 있고 B Key 를 기본 키로 지정했을 때, 남은 A Key 가 대체 키가 된다.
역시 유일성과 최소성을 동시에 만족한다.
2-7. 슈퍼 키 (Super Key)
슈퍼 키는 각 레코드를 유일하게 식별할 수 있는 유일성만을 갖춘 키를 말한다.
후보 키와 동일하나 최소성은 상관하지 않는 특징이 있다.
'CS' 카테고리의 다른 글
ERD와 정규화 과정 (0) | 2022.09.15 |
---|---|
Web Server 와 Web Application Server (0) | 2022.09.08 |