[데이터베이스와 DBMS 기초] 관계형 데이터베이스의 기본 구조
관계형 데이터베이스와 RDBMS
관계형 데이터베이스
개념
관계(Relation) = 관계 모델에서 데이터를 표현하는 기본 단위 (주로 테이블 형태로 표현)
데이터를 행과 컬럼으로 구성된 테이블 형태로 표현하고 관리하는 데이터베이스
같은 종류의 데이터를 일정한 속성을 가진 행의 집합으로 관리
ex)
users
+----+----------+------------------+
| id | name | email |
+----+----------+------------------+
| 1 | 박개발 | a@example.com |
| 2 | 김개발 | b@example.com |
+----+----------+------------------+
특징
| 특징 | 의미 |
| 테이블 구조 | 데이터를 행과 컬럼으로 표현 => id | name | email | status |
| 정해진 스키마 | 어떤 컬럼과 데이터 타입으로 저장할지 구조를 미리 정의 |
| 관계 표현 | 기본키와 외래키를 통해 데이터를 연결한다 |
| SQL 사용 | 데이터를 선언적인 방식으로 조회하고 변경 |
| 무결성 관리 | 제약조건을 통해 저장되는 데이터가 규칙을 지키도록 제한 |
| 트랜잭션 | 여러 데이터 변경을 하나의 작업으로 처리 |
RDBMS (Relational Database Management System)
개념
관계형 데이터베이스를 관리하는 소프트웨어
ex) MySQL, MariaDB
데이터베이스와 테이블 구조
데이터베이스
└─ 테이블
├─ 컬럼: 데이터의 속성과 규칙
└─ 행: 실제 데이터 한 건
└─ 값: 각 컬럼에 저장된 개별 데이터
데이터베이스
특정 서비스나 업무에서 사용하는 데이터를 모아 관리하는 단위.
일반적으로 하나의 테이블에는 하나의 주제에 해당하는 데이터를 저장.
ex) 쇼핑몰 shop 데이터베이스에 포함된 테이블 - users, products, orders,...
테이블
같은 종류의 데이터를 일정한 구조로 모아 놓은 단위
일반적으로 하나의 테이블에는 하나의 주제에 해당하는 데이터를 저장한다.
컬럼
테이블에 저장되는 데이터가 어떤 속성을 가지는지 정의하는 항목
=> 컬럼 이름, 데이터 타입, 값의 필수 여부, 기본값, 중복 허용 여부, 값에 적용할 제약조건 등
ex) email
- 문자열
- 반드시 값이 있어야 함
- 다른 회원과 중복될 수 없음
행
테이블에 저장된 하나의 실제 데이터 단위
ex) users테이블 → 한 행이 회원 한 명
값
행과 컬럼이 만나는 위치에 저장된 실제 데이터
ex) users 테이블
id | name | status
---|--------|--------
1 | 이개발 | active
- name 컬럼의 값 : 이개발
- status 컬럼의 값 : active
스키마
개념
데이터베이스에 데이터를 어떤 구조와 규칙으로 저장할지 정의한 설계
ex) 어떤 테이블이 존재하는가, 각 테이블에 어떤 컬럼이 있는가, 각 컬럼에는 어떤 타입의 값을 저장하는가
cf) 스키마 vs 데이터
| 구분 | 의미 | 예시 |
| 스키마 | 데이터를 저장하는 구조와 규칙 | 이메일은 문자열이며 필수이고 중복 불가 |
| 데이터 | 스키마에 따라 실제로 저장된 값 | a@example.com |
스키마에 포함되는 요소
- 테이블
- 컬럼
- 데이터 타입
- 기본키와 외래키
- 제약조건
- 인덱스
- 테이블 사이의 관계
- 뷰 등이 데이터베이스 객체