DB공부를 시작하자마자 "관계형 데이터베이스" 어쩌고 저쩌고 하면서
괜히 어려울 것 같은 말이 나오면 마음에 그늘이 진다.
더 어렵게 RDBMS(Relational DataBase Management System) 라고 부르기도 한다.
하지만 쉽게 이해할 수 있으니 주눅들 필요 1도 없다!
일단 "관계형 데이터베이스가 아니면 다른 데이터베이스는 뭔데?" 라고 생각이 들었는데,
계층형 / 네트워크형 / 객체지향형 등의 데이터베이스 종류가 있다
일단은 그런 애들이 있구나- 하고 넘어가고, 오늘은 관계형만 araboza.
관계형 데이터베이스의 개념 쉽게 보기
학교 시간표라던가, 동아리/회사의 연락망을 적어 둔 엑셀 파일을 떠올려보자.
예컨대 우리가 주소를 적을 때,
김남준 : 주소는 서울시 강남구, 김석진주소: 성남시(경기도) // 용산구(박지민 주소)
이렇게 마구잡이로 적지 않고,
번호 | 이름 | 주소1 (시) | 주소2 (구/면) |
1 | 김남준 | 서울시 | 강남구 |
2 | 김석진 | 경기도 성남시 | 분당구 |
3 | 박지민 | 서울시 | 용산구 |
4 | 김남준 | 제주도 서귀포시 | 안덕면 |
. . . |
이렇게 표로 정리할 줄 안다면 이미 관계형 데이터베이스가 익숙한 것이다!
관계형 데이터베이스는 위 마구잡이 메모처럼 줄로 이루어진 것이 아니라
2차원 테이블로 이루어져 있다.
위 테이블의 경우, 인원이 추가될 때마다 1, 2, 3, 4... 이렇게 고유번호를 갖는다.
(아마도) 중복이 없을 것 같다.
이렇게 중복이 없이, 값들을 식별할 수 있는 고유값은 프라이머리 키(primary key)라 부른다.
기본 키라고도 부른다.
"번호", "이름", "주소1", "주소2"는 열, 혹은 칼럼이라고 한다. (세로줄)
각 행 (가로줄)에는 데이터의 묶음이 들어간다. (ex. 김남준 서울 강남 / 김석진 경기 성남 분당)
위에 잠시 언급한 프라이머리 키(이하 PK)에는 조건이 있는데
1) NOT NULL (null이면 안 됨 = 비워두면 안 됨 = 식별해야 하니까)
2) UNIQUE (중복이면 안 됨 = 식별해야 하니까) 여야 한다.
한 테이블당 하나를 부여하는 게 통상적이다. (아닌 경우도 있기는 있다.)
Q. 엇! 이름으로도 사람 식별이 되는데, 이름은 PK가 아닌가요?
A. 아님! 동명이인이 있을 수 있으니까. 김남준 찾아와! 하면, 1번과 4번을 데려올 테니-
오라클, MySQL 등은 가장 대표적인 관계형 데이터베이스 관리 시스템(RDBMS)이다.
관계형 데이터베이스의 장점
1) 단순하고 이해가 쉽다.
2) 효율적이다. (입력하는 값들이 주소인지, 번호인지 언급하지 않아도
그냥 칼럼에 맞춰 제자리에 순서대로 써 주면 주소겠거니, 번호겠거니 짐작할 수 있다.)
3) 데이터의 유지보수가 편리하다.
이 정도만 알아도 충분히 감을 잡을 수 있음 :-)