DataBase 기초 _ 관계형 데이터베이스
DB(DataBase)

DataBase 기초 _ 관계형 데이터베이스

728x90

관계형 데이터베이스

관계형 데이터베이스는 영어로 relational database 라고 불리는데 그 이유는 구조화된 데이터가 하나의 테이블로 표현이 되는데 이처럼 사전에 정의된 테이블을 relation 이라고도 하기 떄문이죠. 다시 말해 테이블을 사용하는 데이터베이스를 뜻하는 의미이다.

다음은 여러분들이 알고 계셔야 하는 관계형 데이터베이스의 키워드들이다:

  • 데이터 : 각 항목에 저장되는 값
  • 테이블 (혹은 relation) : 사전에 정의된 행과 열로 구성되어 있는 체계화된 데이터
  • 필드 (혹은 column) : 테이블의 열을 가리킴
  • 레코드 (혹은 tuple) : 테이블의 한 행의 저장된 정보
  • 키 : 테이블의 각 레코드를 구분할 수 있는 값. 각 레코드마다 고유값이어야 하며 기본키 (primary key) 와 외래키 (foreign key) 등이 있을 수 있다.

관계 종류

테이블 간 관계는 다음과 같이 나눌 수 있다:

  • 1:1 관계
  • 1:N 관계
  • N:N 관계

테이블 자체 관계

  • self referencing 관계

- 1:1 관계

테이블의 레코드 하나당 다른 테이블의 한 레코드와 연결되어 있는 경우

예를 들어 다음과 같은 'User' 테이블과 'Phonebook' 테이블이 있다고 하겠다.

 

한 개의 전화번호당 한 명의 유저를 가지고 그 반대도 동일하다면 이것은 1:1 관계 (One-to-one relationship) 이라고 볼 수 있다.

- 1:N 관계

테이블의 레코드 하나당 여러 개의 레코드와 연결되어 있는 경우

예를 들어 유저와 전화번호의 테이블의 관계가 다음과 같다는 가정

이번에는 한 유저가 한 전화번호를 가질 수 있는 것이 아니라 여러 개의 전화번호를 가질 수 있다. 하지만 그 반대는 성립할 수가 없다. 즉, 한 전화번호는 한 명의 유저만 가질 수 있다.

이러한 '일대다' 관계는 관계형 데이터베이스에서 제일 많이 사용된다.

- N:N 관계

여러 개의 레코드가 여러 개의 레코드를 가지는 관계이다. 해당 관계의 경우에는 따로 '조인 테이블'을 만들어 관리를 하게 된다.

일대다 관계와 비슷하지만 이번에는 양방향에서 다수를 가질 수 있는 경우에 해당한다.

예를 들어 여행 상품이 있다고 할 때 여러 개의 여행 상품이 있고 여러 명의 고객들이 있을 때 한 고객은 여러 개의 여행 상품을 사용할 수 있다. 마찬가지로 한 여행 상품은 여러 명의 고객을 가질 수 있죠.

위 테이블에서는 한 고객은 여러 개의 여행 상품을 가질 수 있고 한 여행 상품 또한 여러 개의 고객을 가질 수 있다.

- 자기참조 관계 (Self Referencing Relationship)

때로는 테이블 내에서도 관계가 필요할 때가 있다. 예를 들어 추천인이 누구인지 파악하기 위한 목적, 혹은 조직 내에 상하 관계 등을 표현하기 위한 것일 수도 있죠.

다음과 같이 유저 테이블이 있고 'recommend_id' 는 추천인 아이디

 

관계를 보면 일단 한 유저당 한 명의 추천인을 입력할 수 있다. 즉, 한 유저당 하나의 추천인을 가질 수 있다. 하지만 추천인 입장에서는 여러 개의 유저를 가질 수 있다. 복수로 추천될 수 있다는 뜻이다.

정리하자면 각 유저당 한 명만 추천할 수 있지만 추천 받은 사람은 여러 명에서부터 추천을 받게 되는 셈이다.

728x90