정의 / 기본구조 / 구성 요소
정의
표 형태로 데이터를 구조화하고 관리하는 데이터베이스
관계형 데이터베이스는 데이터를 테이블 형태로 구조화하는 방식
: 2차원 테이블을 사용하여 데이터를 정의하고 표현하는 데이터 모델
- 여기서 데이터는 속성(Attribute)과 해당 속성에 대응하는 데이터 값(Attribute Value)으로 구성
즉, 데이터를 정리하고 설명하기 위해 속성과 데이터 값 간의 관계를 찾아내어 이를 테이블 형태로 나타낸다. 이 테이블은 열(Column)과 행(Row)으로 이뤄져 있으며, 각 열은 데이터의 속성을 나타내고 각 행은 해당 속성에 대응하는 데이터 값을 포함한다.
기본구조
Database → Table → Column, Row
-
Database = 구조화된 데이터의 집합
: 데이터 저장, 검색, 수정, 삭제할 수 있게 해주는 시스템
-
Table = DB 내 데이터 저장소
: 행(Row)과 열(Column)의 격자 형태로 구성
-
Column = Attribute = Field (컬럼)
: 테이블 내의 특정 카테고리 또는 데이터 유형
-
Row = Record = Tuple (행)
: 테이블 내의 개별 데이터 항목으로, 각 행은 하나의 데이터 항목 또는 개체를 나타낸다.
- 스키마(Schema)
: 데이터베이스 구조 정의. 테이블, 행, 열, 인덱스, 관계 등 데이터베이스 구조 명시.
- SQL (Structured Query Langugage)
: 데이터베이스에서 데이터 관리 위해 사용하는 표준 프로그래밍 언어. 데이터베이스에 질의, 업데이트, 삭제 등 작업 수행.
- 인덱스 (Index)
: DB에 데이터 검색 속도를 빠르게 하기 위해 사용하는 객체. 특정 열에 대한 포인터를 포함하여 데이터 건ㅁ색 시간 단축.
- 데이터베이스 관리 시스템(DBMS)
: 데이터베이스를 관리하는 소프트웨어. 예시 종류 링크 참고
- 트랜잭션 (Transaction)
: 데이터베이스 상태를 변화시키는 하나의 작업 단위. 데이터 무결성을 유지하는 데 중요한 역할.
RDBMS는 데이터의 구조화와 안정성 측면에서 강력하며, 일반적인 업무 응용에 적합하다. 그러나 성능이나 유연성 등의 측면에서 고려해야 할 부분도 있다.
구성요소
- 데이터 베이스 (학교)
- 테이블=모델 (학생, 교실, 선생님(급여), 행사, 급식, 동아리, 방과후활동, 과목, 시험, 비품)
- 행 : 하나의 데이터
- 열 : 컬럼
- (테이블) 학생 - (컬럼) 나이, 성별, 주소, 성적
- 교실 - 학생수, 평균성적
- 선생님 - 나이, 성별, 주소, 급여
- 키 : ID
- PK (Primary Key) id or pk
- 테이블 내에서 중복이 절대 불가능 (고유값으로 사용이 가능)
- 행(=하나의 데이터)을 식별할 수 있는 유일한 값
- 유니크한 값이면 가능
- 주민등록번호
- 국가 코드 (+82, +1, +86 …)
- 학번 (2010+119+09)
- 군번
- FK (Foreign Key)
- 다른 테이블의 기본키로 지정된 키
대표적인 RDBMS
- MySQL: 개방 소스 RDBMS, 다양한 용도로 활용됨.
- PostgreSQL: 객체 관계형 데이터베이스 시스템, 확장 가능하고 다양한 기능 제공.
- Microsoft SQL Server: Microsoft에서 제공하는 RDBMS, 엔터프라이즈 급 데이터베이스 솔루션.
- Oracle Database: 대규모 엔터프라이즈용 RDBMS, 뛰어난 성능과 안정성 제공.
- SQLite: 경량 로컬 RDBMS, 임베디드 시스템과 모바일 애플리케이션에 활용.
- MySQL과 PostgreSQL: 오픈 소스, 무료 사용 가능, 다양한 용도에 활용
- Microsoft SQL Server와 Oracle Database: 주로 기업 환경에서 사용
- SQLite: 경량 환경과 모바일 애플리케이션에 간단한 데이터베이스 요구에 사용
DB Schema
데이터베이스 스키마
- 데이터베이스의 구조. 청사진이자 설계도.
- 논리적 스키마와 물리적 스키마가 있는데 논리적 스키마가 더 중요.
- 데이터베이스 내 테이블 간 어떻게 연결되었는지 보여준다.
SQL (Structured Query Language)
- 관계형 데이터베이스에서 데이터를 처리, 제어하는 데 사용하는 표준화된 언어
- 주로 DBMS에서 상호 작용을 위해 설계
- 데이터 정의 언어(DDL - Data Definition Language)
: DB의 구조 정의 및 관리에 사용.
주요 명령어:
1. CREATE : DB 객체 생성 (CREATE TABLE, CREATE INDEX 등)
2. ALTER: DB 객체 수정 (ALTER TABLE 등)
3. DROP: DB 객체 삭제 (DROP TABLE 등)
4. TRUNCATE: 테이블의 모든 레코드를 삭제하나, 테이블은 유지
- 데이터 처리 언어 (DML - Data Manipulation Language)
: 데이터 검색, 삽입, 수정, 삭제에 사용.
주요 명령어:
1. SELECT: DB에서 정보 검색
2. INSERT : 새로운 이터를 테이블에 삽입
3. UPDATE: 테이블의 기존 데이터 수정
4. DELETE: 테이블에서 데이터 삭제
- 데이터 제어 언어(DCL - Data Control Language)
: 데이터베이스에 대한 액세스 제어에 사용.
주요 명령어:
1. GRANT:
2. REVOKE