반응형
*일반적으로 MySQL을 기준으로 학습함.
데이터 베이스란?
일정한 규칙과 규약을 통해 구조화되어 저장되는 데이터의 모음
실시간 접근과 동시 공유 가능
DBMS란?
DB를 제어, 관리하는 통합 시스템
정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행
4.1.1 엔터티(Entity)
- 정의: 사람, 장소, 물건 등 여러 개의 속성을 가진 명사.
예) 회원(Entity): 이름, 아이디, 주소, 전화번호 (속성: Attribute) - 약한 엔터티와 강한 엔터티:
- 강한 엔터티: 독립적으로 존재할 수 있는 엔터티.
- 약한 엔터티: 다른 엔터티에 종속적으로 존재하는 엔터티.
4.1.2 릴레이션(Relation)
- 정의: 데이터베이스에서 정보를 구분하여 저장하는 기본 단위.
- SQL에서는 테이블로, NoSQL에서는 컬렉션으로 표현됨.
- 테이블과 컬렉션:
- 관계형 데이터베이스(SQL)와 NoSQL의 차이:
- MySQL(SQL): 레코드 - 테이블 - DB
- MongoDB(NoSQL): 도큐먼트 - 컬렉션 - DB
- 관계형 데이터베이스(SQL)와 NoSQL의 차이:
4.1.3 속성(Attribute)
- 정의: 릴레이션에서 관리하는 구체적이고 고유한 이름을 가진 정보.
- 서비스의 요구 사항 중 관리 필요성이 있는 정보만 속성으로 정의.
4.1.4 도메인(Domain)
- 정의: 릴레이션에 포함된 각 속성들이 가질 수 있는 값의 집합.
예) 성별(Attribute): {남, 여} (Domain)
4.1.5 필드와 레코드
- 필드(Field): 테이블의 열(Column), 특정 속성을 표현.
예) 이름, 나이, 성별. - 레코드(Record): 테이블의 행(Row), 필드에 따라 저장된 데이터.
예) 홍길동, 25, 남.
숫자 타입
타입 | 크기 | 범위 (부호 있음) | 범위 (부호 없음) | 특징 |
TINYINT | 1byte | -128 ~ 127 | 0 ~ 255 | 작은 정수 저장에 적합 |
SMALLINT | 2byte | -32,768 ~ 32,767 | 0 ~ 65,535 | 중간 크기 정수 저장 |
MEDIUMINT | 3byte | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 | SMALLINT보다 큰 정수 저장 |
INT | 4byte | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | 일반적인 정수 저장 |
BIGINT | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
0 ~ 18,446,744,073,709,551,615 | 매우 큰 정수 저장 |
날짜 타입
타입 | 크기 | 형식 | 특징 |
DATE | 3 바이트 | YYYY-MM-DD | 날짜만 저장 (연, 월, 일) |
DATETIME | 8 바이트 | YYYY-MM-DD HH:MM:SS | 날짜와 시간 저장, UTC와 무관하게 저장됨 |
TIMESTAMP | 4 바이트 | YYYY-MM-DD HH:MM:SS | 날짜와 시간을 저장하며, UTC 기준으로 저장 및 변환 가능 |
문자 타입
타입 | 최대 길이 | 저장 크기 | 특징 |
CHAR | 0~255자 | 고정 길이, 1~255 바이트 | 고정 길이 문자열, 짧은 정적 문자열에 적합 |
VARCHAR | 0~65,535자 | 가변 길이, 문자 수에 따라 다름 | 가변 길이 문자열, 데이터 길이에 따라 유동적으로 저장 |
TEXT | 2^16 - 1자 (65,535자) |
최대 64KB | 매우 긴 문자열 저장, 정렬 불가능, 인덱스 부분적으로 사용 가능 |
BLOB | 최대 64KB | 최대 64KB | 이진 데이터 저장, 이미지, 파일 등 바이너리 데이터를 다룸 |
ENUM | 최대 65,535 개의 값 | 1~2 바이트 | 선택 가능한 값의 집합, 값 하나만 선택 가능 |
SET | 최대 64 개의 값 | 1~8 바이트 | 선택 가능한 값의 집합, 값 여러 개 선택 가능 |
4.1.6 관계
테이블 간의 관계를 화살표로 표시
1:1 관계, 1:N 관계, N:M 관계
4.1.7 키
테이블 간의 관계를 명확성, 테이블 자체의 인덱스를 위해 설정된 장치
유일성 (Uniqueness)
- 키 값이 반복되지 않음을 보장.
- 테이블 내의 모든 레코드가 고유한 키 값을 가짐.
예) 주민등록번호, 사번 등.
최소성 (Minimality)
- 키가 가장 적은 속성으로 구성되어야 함.
- 불필요한 속성이 포함되지 않아야 함.
예) {이름, 생년월일}이 고유하다면 {이름, 생년월일, 성별}은 최소성을 만족하지 않음.
- 기본키 (Primary Key, PK)
- 각 행(레코드)을 고유하게 식별하는 데 사용되는 키.
- 유일성과 최소성을 만족해야 함.
- NULL 값을 허용하지 않음.
- 외래키 (Foreign Key, FK)
- 다른 테이블의 기본키를 참조하여 관계를 정의하는 키.
- 참조 무결성을 보장.
- 후보키 (Candidate Key, CK)
- 기본키가 될 수 있는 모든 속성의 집합.
- 유일성과 최소성을 만족.
- 기본키는 후보키 중 하나로 선택됨.
- 대체키 (Alternate Key, AK)
- 후보키 중 기본키로 선택되지 않은 나머지 키.
- 슈퍼키 (Super Key, SK)
- 한 테이블 내에서 특정 행을 유일하게 식별할 수 있는 속성이나 속성들의 집합.
- 유일성을 만족하지만, 최소성은 만족하지 않을 수 있음.
- 자연키 (Natural Key)
- 현실 세계의 속성을 그대로 반영한 키. (예: 주민등록번호, 이메일 주소 등)
- 인조키 (Surrogate Key)
- 자연키가 존재하지 않거나 복잡할 경우 생성된 대체 키. (예: 자동 증가 숫자 ID)
반응형
'SW > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
4.3 트랜잭션과 무결성 (0) | 2025.01.21 |
---|---|
4.2 ERD와 정규화 과정 (0) | 2025.01.21 |
참고. 가상 메모리, 페이징 기법, Segmentation Fault (0) | 2025.01.17 |
3.4 CPU 스케줄링 알고리즘 (1) | 2025.01.15 |
3.3 프로세스와 스레드 (0) | 2025.01.15 |