데이터와 데이터베이스, DBMS
데이터베이스 : 효율적인 관리와 검색을 위해 구조화한 데이터 집합
DBMS : Database Management System = 데이터베이스 관리 시스템
데이터 : 필요에 의해 수집했지만 아직 특정 목적을 위해 평가하거나 정제하지 않은 값이나 사실 또는 자료 자체
정보 : 수집한 데이터를 어떤 목적을 위해 분석하거나 가공해 가치를 추가하거나 새로운 의미를 이끌어 낼 수 있는 결과
효율적인 데이터 관리를 위한 조건
- 데이터를 통합하여 관리
- 일관된 방법으로 관리
- 데이터 누락 및 중복 제거
- 여러 사용자(응용 프로그램 포함)가 공동으로 실시간 사용 가능
파일 시스템과 DBMS
파일 시스템 : 서로 다른 응용 프로그램이 제공하는 기능에 맞게 필요한 데이터를 각각 저장하고 관리. 각 파일에 저장한 데이터는 서로 연관이 없고 중복 또는 누락 발생할 수 있음
데이터베이스 : 여러 응용 프로그램이 사용할 데이터를 한 곳에서 관리하기 위한 방법
DBMS : 데이터베이스의 데이터 조작과 관리를 극대화한 시스템 소프트웨어
데이터 모델
컴퓨터에 데이터를 저장하는 방식을 정의해 둔 개념 모형
대표적인 데이터 모델 : 계층형, 네트워크형, 관계형, 객체 지향형 등
계층형 데이터 모델과 네트워크형 데이터 모델
1960년대 말부터 1980년대 말까지 상업용 데이터베이스 시장에서 많이 사용한 데이터 모델
- 계층형 데이터 모델
- 트리(tree) 구조
- 일대다(1:N) 관계의 데이터 구조 파악해야 함
- 상위 개념에 하위 개념이 포함
- 자식 개체가 여러 부모를 가진 관계는 표현할 수 X
- 네트워크형(망형) 데이터 모델
- 그래프(graph) 구조 기반
- 자식 개체가 여러 부모 개체 가질 수 O
객체 지향형 데이터 모델
1980년대 후반에 등장한 모델
객체 개념을 기반으로 한 데이터 모델
데이터베이스에 객체 지향형 모델 개념을 완전히 적용하는 것이 쉽지 않아서 이를 적용한 상용 DBMS는 많지 않음
관계형 데이터 모델
1970년 에드거 프랭크 커드가 제안한 모델로, 현대에 가장 많이 사용하는 관계형 데이터베이스의 바탕이 되는 모델
데이터 간 관계(relationship)에 초점
각 데이터 독립 특성만 규정하여 데이터 묶음을 나눈 후 중복이 발생할 수 있는 데이터는 별개의 릴레이션(relation)으로 정의. 분리한 릴레이션과 기존 릴레이션을 연결할 수 있는 코드를 추가하여 두 릴레이션을 연결
- 개체(entity)
- 데이터베이스에서 데이터화하려는 사물, 개념의 정보 단위
- 관계형 데이터베이스의 테이블(table) 개념과 대응. 테이블은 릴레이션(relation)으로 표기하기도 함
- 속성(attribute)
- 개체를 구성하는 데이터의 가장 작은 논리적 단위
- 관계형 데이터베이스의 열(column) 개념과 대응
- 관계(relationship)
- 개체와 개체 또는 속성간 연관성을 나타내기 위해 사용
- 관계형 데이터베이스에서는 테이블 간 관계를 외래키(foreign key) 등으로 구현해 사용
위 핵심 구성 요소를 활용해 데이터의 독립성(independency)과 무결성(integrity) 같은 데이터를 안전하게 관리하기 위해 필요한 개념들을 정의
관계형 데이터베이스와 SQL
관계형 데이터베이스 : 관계형 데이터 모델 개념을 바탕으로 데이터를 저장·관리하는 데이터베이스
SQL(Structured Query Language) : 데이터를 다루고 관리하는데 사용하는 데이터베이스 질의 언어
- DQL(Data Query Language) : RDBMS에 저장한 데이터를 원하는 방식으로 조회하는 명령어
- DML(Data Manipulation Language) : RDBMS 내 테이블의 데이터를 저장·수정·삭제하는 명령어
- DDL(Data Definition Langauge) : RDBMS 내 데이터 관리를 위해 테이블을 포함한 여러 객체를 생성·수정·삭제하는 명령어
- TCL(Transaction Control Language) : 트랜잭션 데이터의 영구 저장·취소 등과 관련된 명령어
- DCL(Data Control Language) : 데이터 사용 권한과 관련된 명령어
구성 요소
관계형 데이터베이스를 구성하는 주요 요소
테이블
2차원 표 형태의 데이터 저장 공간
데이터베이스에서 관계(relation)라고 함
관계형 데이터베이스에서 관계란, 행과 열의 특성에 맞추어 데이터를 저장한 테이블 하나하나.
행(row)과 열(column)
- 행 : 가로, 튜플(tuple) 또는 레코드(record)
- 열 : 세로, 애트리뷰트(attribute) 또는 필드(field)
저장하려는 데이터를 대표하는 이름과 공통 특성을 정의
저장 조건과 범위 지정 가능
열과 키
키(key) : 수많은 데이터를 구별할 수 있는 유일한 값
기본키 (PK; Primary Key)
- 가장 중요한 키
- 한 테이블 내에 중복되지 않는 값만 가질 수 있는 키
- 속성
- 테이블에 저장도니 행을 식별할 수 있는 유일한 값
- 값의 중복이 없어야 함
- NULL 값 X
보조키 (= 대체키, Alternate Key)
- 후보키(Candidate Key)에 속해 있는 키
- 후보키 중 기본키로 지정되지 않은 열
외래키 (FK; Foreign Key)
- 특정 테이블에 포함되면서 다른 테이블의 기본키로 지정된 키
복합키 (Composite Key)
- 여러 열을 조합하여 기본키 역할을 할 수 있게 만든 키