데이터베이스와 DBMS
데이터베이스가 단순히 데이터를 저장하는 공간을 의미한다면, DBMS(Database Management System)는 그 공간을 운영하는 소프트웨어라고 할 수 있다.
DBMS의 특징
데이터의 무결성
-
데이터에 오류가 나는 것을 방지하기 위해 데이터베이스는 제약 조건Constraint이라는 특성을 가진다.
이를테면 학생을 데이터화 할 때, 학번은 유일해야 한다. 같은 학번을 가진 학생은 존재할 수 없다. 이럴 때, '학번'은 제약조건이 된다. 이 제약조건을 기준으로 데이터를 저장해두면, 오류가 발생할 확률이 줄어들 것이다.
데이터의 독립성
-
데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도, 기존에 작성된 응용프로그램은 전혀 영향을 받지 않아야 한다. 즉, 서로 의존적 관계가 아닌 독립적인 관계여야 한다.
보안
-
허가된 사람만이, 데이터에 접근할 수 있어야 한다. 접근할 때에도, 접근하는 사람에 따라 알맞은 권한을 가져야 한다.
관계형 데이터베이스
-
RDBMS의 핵심개념은 "데이터베이스는 테이블이라 불리는 최소단위로 구성되어 있다. 그리고 이 테이블은 하나 이상의 열로 구성되어 있다"이다.
-
'테이블'을 '릴레이션' 또는 '엔티티'로 부르기도 한다.
-
RDB에서 모든 데이터는 테이블에 저장된다. 테이블은 테이터를 효율적으로 저장하기 위한 구조다.
테이블을 여러 개로 나눠서 저장함으로써, 불필요한 공간 낭비를 줄이고 효율을 높인다. 이렇게 나눈 테이블들끼리 primary key와 foreign key를 맺어줌으로써 연관관계로 묶을 수 있다.
이렇게 관계를 맺은 테이블은 조인 기능을 사용해서 조합해서 조회할수 있다.
Structured Query Language (SQL)
SQL은 데이터베이스에서 사용하는 언어다. '씨퀄'이라고도 읽는다. SQL의 특징 몇 가지는 이렇다.
DBMS 제작사와 독립적
다른 시스템으로 쉽게 이식 가능
표준이 꾸준히 발전
대화식 언어
-
컴파일 및 디버깅 같은 실행과정 없이, 묻고 답변을 받는 식의 언어로 구성된다.
분산형 클라이언트/서버 구조
-
SQL은 분산형 구조인 클라이언트/서버 구조를 지원한다. 클라이언트가 질문하면, 서버가 그에 대한 응답을 다시 돌려보낸다.
이렇다고는 하지만, 모든 DBMS가 표준 SQL을 준수하는 것은 아니다.