용어정리
DBMS → DB를 관리하는 프로그램
↓
Database → 실제 데이터 저장소
↓
Schema → 구조 설계
↓
Table → 데이터 저장 단위
↓
Column → 속성 (열)
Row → 실제 데이터 (행)
↓
Domain → 값의 제한
↓
Instance → 현재 데이터 상태
1. DBMS (Database Management System)
- 데이터베이스를 관리하는 프로그램으로 쉽게 말하면 DB를 다루는 소프트웨어
- 단순히 "관리"를 넘어, 여러 사용자가 동시에 데이터에 접근할 때 충돌이 나지 않도록 제어하는 역할
- 데이터 저장, 조회, 수정, 삭제를 도와주는 시스템
- 비유: 도서관의 사서 선생님 (책(데이터)을 정리하고, 빌려주고, 훼손되지 않게 관리함)
- MySQL, PostgreSQL, Oracle
2.Database (데이터베이스)
- 데이터를 모아놓은 저장소, 통합되어 관리되는 운영 데이터로 중복을 최소화하고 효율성을 극대화 시킴.
- 엑셀 파일 여러 개 모아둔 “폴더” 같은 개념
- 예: 환자정보, 진단명, 주치의 등
3. Schema (스키마)
- 데이터 구조 설계도
- 데이터베이스의 구조와 컬럼, 타입 등을 정의한 것 = 테이블 구조 정의서
- 쉽게 말하면 DB의 뼈대 설계
- 환자 테이블에는 이름, 나이, 성별이 있음
4. Table (테이블)
- 데이터를 저장하는 기본 단위 (표)
- 모든 테이블은 고유한 이름을 가져야 하며, 테이블 내의 행들은 서로 중복되지 않는 것이 원칙
- 예) 등록번호 이름 나이
- 엑셀 시트 하나라고 생각하면 됨
5. Column (컬럼)
- 열 (속성, 필드)으로 이름, 나이, 주소 같은 “항목”
- 같은 종류의 데이터 모음
- = Attribute (속성) = Field (필드)
6. Row (행)
- 실제 데이터 한 줄 (레코드)
- 한 사람의 정보 즉, 한 개의 데이터 묶음
- = Tuple (튜플) = Record (레코드)
7. Domain (도메인)
- 컬럼에 들어갈 수 있는 값의 범위
- '원자성(Atomicity)': 한 칸(Cell)에는 더 이상 쪼개질 수 없는 하나의 값만 들어와야 한다는 규칙
- “이 칸에는 어떤 값만 들어올 수 있다”라는 규칙
- 예: 나이 → 0 ~ 120, 성별 → 남 / 여
자료형
1. 정수형
| 타입 | 용량 | 범위 | 사용 예 |
|---|
| TINYINT | 1 byte | -128~127 | 성별, 범주형 |
| SMALLINT | 2 byte | +- 32k | 혈액, 키 |
| INT | 3 byte | +- 21억 | user_id |
| BIGINT | 4 byte | 매우 큼 | 방문 로그 ID |
2. 자료형: 실수/정밀형
● FLOAT / DOUBLE
- 소수점 7~8번째 자리부터 유실 될 가능성 큼
- 빠르지만 정확도 낮음
- 의료데이터에서 거의 금지
● DECIMAL (실무에서 거의 decimal사용을 더 선호함.)
3.자료형: 문자열/날짜/논리형
-
CHAR(n): 길이가 항상 n으로 고정 -> 메모리 공간이 효율적이지 못함.
(예) char(5) -> 1x5 칸이 생기고 이 안에 문자열을 저장함.
만약 3글자를 저장했을 때 2칸이 남고, 데이터 낭비가 됨.
(예) 주민번호, 우편번호처럼 길이가 항상 같은 값
-
VARCHAR(n): 실제 데이터 길이만큼만 저장 -> char을 보완, 대신 CHAR보다 약간 느릴 수 있음
-
TEXT: 긴 문자열, 길이 제한 거의 없음 (예) 환자 경과기록
-
DATE: 날짜만
-
DATETIME: 날짜+시간
-
TIMESTAMP: 날짜 + 시간 (자동 관리 + 시간대 영향 있음), 서버 시간대(Timezone)에 따라 값이 바뀔 수 있음
-
BOOLEAN/TINYINT: 논리값 저장(True and False)
-
ENUM(‘Y’, ‘N’) :정해진 값만 저장 가능 (예) 'Y', 'N'/'남', '여'
4.Index 인덱스
- '책의 목차' 같은 느낌
- PK는 자동 인덱스로 설정이 됨
- 데이터 검색 및 조합에서 속도 향상
- 너무 많으면 데이터 삽입, 업데이트가 느려짐
- 잘못된 인덱스는 성능 장애 1순위