본문 바로가기
Programming/데이터베이스 \ 오라클

오라클 데이터베이스 입문 (2) : 관계형 DB란? 기본키, 외래키, 복합키, 대체키, 후보키, Key란?

by 오뚝오뚝 2022. 7. 24.

1편 DB의 기초, 못읽어 보신분들은 읽고 오세요!!

-----> https://carryon430.tistory.com/17 

 

오라클 데이터베이스 입문 (1) : DB이란? DBMS이란? SQL이란?

DB 개념잡기 먼저 데이터와 정보의 구별 : 데이터를 가공해 정보가 생기는 것. 즉 데이터는 어떤 필요를 위해 수집해 놓은 것으로 아직 특정 사용 목적을 위해 정제되지 않은 상태이다. 가공하는

carryon430.tistory.com

 

 

그러면 오늘은 1편에 언급한 RDBMS에 대해서 더 자세히 알아보는 시간을 가져보겠습니다.

관계형 데이터베이스는 아주 중요합니다.

왜냐?

 

현재 가장 많이 사용되는 방법론이고 직관적이고 사람이 생각 및 이해하는 방법과 비슷하기 때문입니다. 

 

먼저 1편에서 언급한 개체입니다.

 

용어 정의      

 

테이블로 대응해서 이해한다고 말했는데요, 그럼 테이블이 뭐냐?

두가지 표현방식에 익숙해져야하는데요, 아래의 1열은 하나의 테이블입니다. 

각각의 행이 사실 테이블로 생각하면 열이 되는 겁니다. 

지금까지 배워온 혹은 알고있는 열과 행의 지식 때문에 혼란스러울 수 있는데요,

 

테이블을 구성하는 각각의 행을 record 혹은 tuple 이라고 정의합니다. 

그리고 테이블의 열은 attribute 혹은 field 라고 칭합니다. 

 

많은 속성, 필드값 중에 특별한 attribute가 있는데요, 바로 키의 의미를 가지는 경우입니다. 

 

(1)편에서 갑자기 등장했었죠. Key라는 개념은 매우 중요하고 가장 기본이 되는 개념입니다.

 

Key 또한 여러가지로 분류되는데, Primary(기본), Foreign(외래), Candidate(후보), Composite(복합) 등으로 나뉘어집니다.

 

 

기본키      

 

기본키는, 이름 그대로 가장 기본이 됩니다. 반드시 숙지해야합니다.

 

기본키는 유일해야합니다. 즉, 중복이 되어서는안됩니다. 예를 들면 주민등록번호를 생각하시면 됩니다. 같은 주민등록번호는 있을 수 없겠죠, 있어서도 안되고요.

 

왜 중복이 되어서는 안되는지에 대해서 생각해보면, 식별 가능해야하기 때문입니다. 

 

즉, 해당 record를 불러오기 위해서, 행을 불러오기 위해서는 구별되어야겠죠?

 

그리고 유일하다는 말은 다시 생각하면 공란으로, NULL값으로 표현해서도 안되는 것을 내포합니다.

 

 

후보키      

 

후보키는 무엇일까요? 정말 쉽게 설명드리면,

 

필드 A,B,C가 모두 기본키의 속성을 갖추고 있다고 가정하면, 

 

A,B,C 모두 키의 후보가 되는겁니다.

 

그러면 A를 기본키로 적용하였을때 B,C는 어떻게될까요?

 

대체키 혹은 보조키로 생각하시면 됩니다. 

 

엄밀하게 정의하면, 기본키의 후보가 되는 모든 필드가 후보키가 되는 것입니다. 

 

그리고 후보키 중 기본키를 제외한 다른 후보들은 대체키/보조키로 정의 됩니다.

 

외래키      

 

외래키가 조금은 이해가 되지 않을 수 있는데요, 쉽게 생각하면 됩니다.

외래키는 데이터의 중복을 피하기 위해 테이블과 테이블 사이의 관계를 규명하기 위한 것입니다.

 

즉, 외래키는 특정 테이블에 포함되어 있는 attribute값이면서, 또 다른 테이블에서 기본키로 사용되고 있는 속성 이어야합니다.

 

예를 들어보겠습니다.

 

위에는 두개의 테이블이 있습니다.

 

단번에 Industry Code가 외래키임이 이해되시는지요? 

 

위 예시처럼, 하나의 개체, 테이블 안에, 여러개의 키가 존재할 수 있습니다.

 

복합키      

복합키까지 등장하니 벅찰 수 있습니다.

 

굳이 추가해서 이해한다기 보다는 기존의 기본키와 대입하여 이해하시면 됩니다.

 

기본키는 유일한 값으로, 각각의 행, entry를 식별하게 해주는 값이었죠?

 

그렇다면, 특정 열, 즉 특정 속성 하나로 구별이 안되는 경우에는 어떻게 할까요?

 

예를 들면, 이름을 기본키로 지정하고 싶은데 동명이인이 있을 수 있는거죠.

 

학교에서 여러 교수님들이 계시는데, 이 교수님들이 각각 하나의 수업을 가르친다.

 

이 경우 교수 이름과 수업 코드를 묶고 싶은데요,

 

이렇게 두개의 속성값을 엮어서 키로 지정하는 경우가 복합키입니다. 

댓글