본문 바로가기

별걸다하는 IT/데이터베이스 Database

[데이터베이스]릴레이션 용어- 속성(애트리뷰트), 튜플, 도메인, 차수, 카디날리티

반응형

[데이터베이스]

데이터베이스 완벽 정리 목차


테이블 구성 요소, 릴레이션 용어

오늘은 관계 데이터 모델에서 데이터를 표현하는 방법, 테이블의 구성요소에 대해 살펴볼거예요.


릴레이션

엑셀로 정보를 관리한다 생각하면, 직원의 정보를 표로 만들어서 관리하겠죠? 
아래처럼요! 데이터베이스도 마찬가지로 이렇게 정보를 표로 만들어서 관리합니다. 이 표를 데이터베이스에서는 테이블, 릴레이션이라고 해요.

릴레이션(=테이블)은 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위가 됩니다. 예를 들어 회사에서 정보들을 저장하려면 직원 정보만 필요한 것은 아닐거예요. 임금에 관한 정보, 부서에 관한 정보 등 이처럼 여러가지 정보들을 분리해서 저장할 수 있겠죠? 이 하나하나 정보를 담고 있는 걸 릴레이션 또는 테이블이라고 해요. 릴레이션은 서로를 구분할 수 있는 이름을 가지고 동일한 데이터베이스 내에서는 같은 이름을 가진 릴레이션이 존재할 수 없어요. 엑셀의 예시처럼 릴레이션은 행과 열로 표현이 됩니다. 

릴레이션을 생성한다는 것은 그 정보가 화일 어딘가에 저장된다는 거잖아요? 그런데 릴레이션은 화일 시스템의 화일과 일대일로 대응되지는 않습니다. 즉 직원 테이블을 생성했다고 해서 직원 폴더가 생기는 것은 아니라는 거죠! 사용자가 릴레이션을 생성하면 DBMS는 특별한 형식으로 데이터를 저장하고 여러 릴레이션의 데이터를 한 화일에 저장하거나 한 릴레이션의 데이터를 여러 화일에 흩어서 저장하기도 합니다.


속성 (attribute, 애트리뷰트)

하나의 릴레이션은 현실세계의 어떤 개체(entity)를 표현하고 저장되는 데 사용됩니다. 이때 개체는 사물이 될 수도, 추상적인 개념이 될 수도 있습니다. 


이 속성은 내가 저장하고 싶은 개체의 어떤 항목에 해당해요. 예를 들어 회사는 직원의 어떤 정보를 저장할까요? 사원번호, 이름, 부서번호, 전화번호,, 등등 회사마다 저장하고 싶은 항목들은 다 다를거에요. 이 항목들이 테이블의 속성에 해당합니다. 결국 하나의 열은 하나의 속성 정보를 표시해요. 그림은 직원에 대한 정보를 4개의 속성으로 저장하고 있네요. 속성 역시 고유한 이름을 가지며 동일 릴레이션 내에서는 같은 이름의 속성이 존재할 수 없습니다. (단 릴레이션이 다르면 같은 속성 이름을 공통으로 사용할 수 있습니다.) 



차수 (degree)

한 릴레이션에 들어 있는 애트리뷰트의 수를 차수라고 합니다. 유효한 릴레이션의 최소 차수는 1입니다. 즉 모든 릴레이션은 적어도 한 개의 애트리뷰트를 가져야 합니다. 즉 이 그림에서 차수는 4이네요!


튜플 (tuple, 투플, 레코드)

릴레이션의 각 행을 레코드라고 합니다. 레코드를 좀 더 공식적으로 튜플이라고 부르는데 릴레이션이 나타내는 엔티티의 특정 인스턴스에 관한 사실(값)들의 모임입니다.

이게 무슨말이냐고요?! 즉 내가 직원들의 정보를 직원 릴레이션을 만들어서 데이터베이스에 저장한다고 하면 안에 실질적인 직원들의 데이터가 저장되겠죠? 100명의 직원이 있다면 각 100명의 직원들의 데이터가 있을거예요. 즉 튜플은 행으로 그 개체에 속한 구성원들 개개의 정보를 표현합니다. 

한 릴레이션에 포함된 튜플의 개수는 시간에 따라 변할 수 있어요. (직원이 퇴사하면 튜플의 개수가 줄 거고 입사하면 늘테니까요)

튜플의 순서는 상관이 없습니다 (보통 집어 넣는대로 하나씩 쌓이는 구조니까요)


카디날리티 (Cardinality)

카디날리티는 릴레이션 튜플의 개수입니다. 얘는 차수와 다르게 유효릴레이션은 카디날리티 0을 가질 수 있어요. 수강생 테이블인데 실제로 아직 수강생은 아무도 등록하지 않아서 0명일 수도 있으니까요! 즉 카디날리티는 시간이 지남에 따라 계속해서 변합니다.


도메인 (domain)

도메인이란 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값들의 집합이라고 할 수 있습니다. 도메인이라는 개념이 필요한 이유는 릴레이션에 저장되는 데이터 값들이 본래 의도했던 값들만 저장되고 관리하기 위해서 입니다. 예를 들어 '성별'이라는 속성이 있다면 이 속성이 가질 수 있는 값은 '남' 또는 '여'겠죠? 데이터베이스 설계자는 성별의 도메인으로 'SEX'를 정의하고 그 값으로 '남', '여'로 지정한 뒤 '성별'이라는 속성은 'SEX' 도메인에 있는 값만을 가질 수 있다고 지정해 놓으면 사용자들이 실수로 남, 여 이외의 값을 입력하는 것을 방지할 수 있습니다. 도메인의 이름은 속성 이름과 같을 수도 있고 다를 수도 있어요. 또 하나의 도메인을 여러 속성에서 공유할 수도 있습니다. 



반응형