DBMS(DataBase Management System)란 데이터를 관리하고 운영하는 소프트웨어이다.
RDBMS(Relational DataBase Management System)란 관계형 데이터베이스 관리 시스템으로, 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다. RDBMS는 테이블이라는 최소 단위로 구성이 되며, 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있다.
SQL(Structured Query Language)은 RDBMS에서 사용되는 언어이다. 국제표준화기구에서 표준 SQL을 정하지만 사용하는 DBMS 제품마다 기능에 차이가 있기 때문에, 제품마다 사용되는 언어의 이름이 조금씩 다르다.
(MySQL: SQL,SQL 서버: T-SQL, Oracle: PL/SQL)
테이블(Table)
테이블이란 데이터를 열과 행으로 이루어진 표 형태로 표현한 것을 말한다. 하나의 데이터베이스는 여러 테이블로 구성되어 있다.
예를 들어, 쇼핑몰 데이터베이스 내에 고객, 제품, 직원 등의 데이터를 테이블 형태로 저장한다.
열(Column)
열이란 저장하고자 하는 데이터의 필드(카테고리)를 나타내며, 테이블에 세로로 표현된다. 각 테이블은 여러 개의 열로 구성되어 있다.
예를 들어, 고객 테이블에 고객 아이디, 회원 이름, 주소 등이 열 이름으로 표현될 수 있다.
행(Row)
행은 실질적인 진짜 데이터를 말하며, 행 데이터 또는 레코드(record)라고도 부른다. 따라서 행의 개수가 데이터의 개수가 된다.
예를 들어, 고객 아이디, 회원 이름, 주소 열이 있는 고객 테이블에서 'woong, 웅, 대전광역시 유성구'가 행이 될 수 있다.
기본 키(Primary Key)
기본 키 열은 각 행을 구분하는 유일한 열, 즉 중복되지 않고 비어 있지 않은 열이다. 테이블에 열이 여러 개 있지만, 기본 키는 1개만 지정해야 하며, 일반적으로 1개의 열에 지정한다.
예를 들어, 고객 테이블에서 중복될 수 없고, 비어 있지도 않으면서 고객을 식별할 수 있는 고객 아이디 열을 기본 키로 지정할 수 있다.
1:1 관계
하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우이다. 위 그림처럼 Users 테이블의 Address ID가 Foreign key로 지정되어 있고, Address Book 테이블의 Address ID가 Primary key로 지정되어 있고, 한 유저가 여러 개의 주소를 가질 수 없고 여러 유저가 하나의 주소를 가질 수 없는 경우에 해당된다.
1:N 관계
하나의 레코드가 다른 테이블의 여러 레코드와 연결된 경우이다. 위 그림처럼 한 명의 유저가 여러 개의 주소를 가질 수는 없지만, 여러 유저가 하나의 같은 주소를 가질 수 있는 경우에 해당한다. 1:N 관계(일대다 관계)는 관계형 데이터베이스에서 가장 많이 사용한다.
N:M 관계
여러 개의 레코드가 다른 테이블의 여러 레코드와 연결된 경우이다. 위 그림처럼 한 명의 유저가 여러 개의 제품을 구매할 수 있고, 여러 명의 유저가 하나의 같은 제품을 구매할 수 있는 경우에 해당한다. 위 두 개의 테이블과 1:N 관계를 갖는 새로운 테이블로 N:M 관계를 표현할 수 있고, 이것으로 두 개의 테이블을 연결할 수 있다.
order 테이블은 users와 products 테이블을 연결시켜 주는 역할을 한다. 이 테이블로 각 유저가 구매 주문을 몇 번 했는지, 각 상품이 얼마나 팔렸는지 등을 확인할 수 있다.
이처럼 N:M 관계의 테이블을 연결하여 조인 테이블을 생성하지 않고, 따로 직접 생성한다면 필드에 저장되는 데이터의 크기가 매우 커질 수 있고(view가 아니기 때문에 DB 메모리를 사용하게 됨) 데이터 조회 및 수정에 어려움이 있을 수 있다.
Join이란 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. 위 N:M 관계에서 Users 테이블과 Products 테이블을 묶어서 Order 테이블을 만든 것이 하나의 예로 들 수 있다.
Inner Join(내부 조인)
내부 조인은 둘 이상의 테이블에 공통으로 존재하는 속성 값이 같은 것끼리 묶는 방식을 말한다. 내부 조인을 위해서는 두 테이블이 1:N 관계로 연결되어있어야 한다.
Outer Join(외부 조인)
외부 조인은 두 테이블을 조인할 때 필요한 내용이 한쪽 테이블에만 있어도 묶을 수 있는 방식을 말한다. LEFT(RIGHT) OUTER JOIN은 왼쪽(오른쪽)에 명시한 테이블을 기준으로 외부 조인한다는 의미이며, 왼쪽(오른쪽) 테이블의 내용은 모두 출력되어야 한다는 것을 의미한다. 또한 FULL OUTER JOIN은 두 테이블 중 어느 곳이든 들어 있는 내용을 모두 출력하는 것을 의미한다.
Cross Join
상호 조인은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 결합시키는 방식이다. 따라서 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수가 된다.
Self Join
자체 조인은 자신이 자신과 결합하는 방식이다. 하나의 테이블 내 2개 이상의 열에 같은 데이터가 있을 때 자체 조인을 할 수 있다. 위 테이블에서 한 명의 직원이 다른 직원의 직속 상관이 될 수 있으므로, 자체 조인을 할 수 있다.
Reference
데이터베이스 관계 종류