✅ 데이터베이스 용어 정리
1. 데이터베이스(Database)
- 데이터를 조직적으로 저장하고 다룰 수 있게 해주는 저장소.
- 보통은 DBMS(Database Management System)를 통해 조작.
- ✅ 관계형 데이터베이스(RDBMS) vs 비관계형(NoSQL)
2. 테이블(Table) = 릴레이션(Relation)
- 관계형 모델에서 데이터를 표현하는 핵심 단위.
- 행(Row)와 열(Column)로 구성됨.
- 하나의 테이블은 하나의 엔터티(Entity)를 표현 (예: 고객, 주문 등).
✅ MySQL vs Oracle
- MySQL은 테이블 명 대소문자 구분 여부가 OS에 따라 다름 (Linux는 구분, Windows는 구분 안 함).
- Oracle은 항상 대소문자 구분 안 함.
3. 행(Row) = 튜플(Tuple)
- 테이블의 한 줄. 하나의 데이터 레코드를 의미함.
- 예: 고객 테이블의 한 행 = 한 명의 고객 정보.
✅ 용어 비교
개념 | 관계형 모델 용어 | 일반 용어 |
테이블 | 릴레이션(Relation) | Table |
행 | 튜플(Tuple) | Row, Record |
열 | 속성(Attribute) | Column |
4. 열(Column) = 속성(Attribute)
- 각 열은 특정 속성을 나타냄.
- 예: 고객명, 이메일주소, 가입일 등
5. 도메인(Domain)
- 하나의 열이 가질 수 있는 값의 범위 또는 타입
- 예: 고객 나이라는 열의 도메인은 1~120의 정수
- 실제 구현에서는 데이터 타입(Data Type)으로 표현됨 (INT, VARCHAR 등)
✅ MySQL vs Oracle 차이
- MySQL: TINYINT, MEDIUMINT 등 정수 타입 세분화되어 있음
- Oracle: NUMBER(p, s)로 정수/실수 등 범용 커버
6. 스키마(Schema)
- 데이터베이스 구조의 논리적 정의
- 테이블, 뷰, 인덱스, 프로시저 등 구성 요소들을 포함하는 이름 공간
✅ MySQL vs Oracle
- MySQL: 스키마 = 데이터베이스 (동의어처럼 사용)
- Oracle: 스키마는 하나의 사용자 계정에 속한 오브젝트 집합
7. 속성(Attribute)
- 테이블의 열(column)을 의미
- 같은 이름으로 쓰일 수 있으나, 이론적 표현은 attribute, 실제 DB에서는 column이 더 자주 쓰임.
8. 기본 키(Primary Key)
- 행을 고유하게 식별하는 속성
- 중복 ❌, NULL ❌
- 보통 AUTO_INCREMENT 또는 SEQUENCE와 같이 자동 생성
✅ MySQL vs Oracle
- MySQL: AUTO_INCREMENT 사용
- Oracle: SEQUENCE + TRIGGER 또는 Oracle 12c 이후 IDENTITY
9. 외래 키(Foreign Key)
- 다른 테이블의 기본 키를 참조하는 열
- 테이블 간 관계(1:N, N:M 등)를 표현할 때 사용
10. 제약 조건(Constraint)
- 데이터 무결성을 위한 규칙
- 종류:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK (MySQL은 v8.0부터 공식 지원)
11. 뷰(View)
- 테이블처럼 사용할 수 있는 가상의 테이블
- 하나 이상의 테이블에서 데이터를 SELECT한 결과를 저장한 것처럼 보여줌
- 실질적인 데이터는 저장하지 않음
12. 인덱스(Index)
- 테이블 검색 속도를 빠르게 하기 위한 구조
- 책의 목차 같은 역할
- ✅ 성능을 위해 반드시 필요한 요소지만 무분별한 생성은 오히려 성능 저하
13. 정규화(Normalization)
- 데이터의 중복을 제거하고, 데이터 무결성을 유지하는 구조로 테이블을 나누는 과정
- 단계: 제1정규형(1NF), 제2정규형(2NF), ... 보이스-코드 정규형(BCNF) 등
- 반대 개념: 반정규화(Denormalization)
14. ERD(Entity Relationship Diagram)
- 테이블과 그 관계를 시각적으로 표현한 다이어그램
- 개발 설계에서 반드시 작성되는 문서
'CS > Database' 카테고리의 다른 글
[Database] FROM DUAL 구문 (0) | 2025.04.03 |
---|---|
[MySQL] SELECT 절의 처리 순서 (0) | 2025.04.01 |
[DB] DB 접속 정보 (0) | 2025.03.17 |
[MySQL/Oracle] MySQL과 Oracle 데이터베이스 및 스키마 구조 비교 (0) | 2025.03.12 |
[MySQL] MySQL 데이터베이스 생성, 권한 부여 (0) | 2025.03.10 |
댓글