서로 다른 elements를 가지는 collection
하나의 set에서 element 중복이 없으며 elements의 순서는 중요하지 않다.
e.g.{1,3,11,4,7}

set A와 set B의 pair 생성

Cartesian product의 부분집합 -> set이 2개 Binary relation

n개의 set이 존재하는 경우 -> n-ary relation

tuple : 엘리먼트들로 이루어진 리스트, 각각의 리스트
n-tuple : n개의 엘리먼트들로 이루어진 리스트.
수학에서의 relation

학생 전화번호에 비상연락망을 추가하여 저장하고 싶다. phone_numbers가 2개 존재한다.

도메인마다 각각의 목적, 역할에 맡게 attribute가 존재한다.

각 도메인마다 데이터가 존재하고, 데이터들 끼리 연결되어 튜플을 형성한다.

relation을 표현하기에 테이블이 적합하다.

relation : 하나의 테이블
attribute : 목적에 맡는 속성
tuple : elements들로 이루어진 리스트

domain : 더이상 나누어 질 수 없는 값의 집합
attribute : domain이 relation에서 맡은 역할 이름
tuple : 각 attribute의 값으로 이루어진 리스트. 일부 값은 NULL일 수 있다.

STUDENT : relation 이름
(id,name,grade... emer_phone_num) : attributes 리스트

relation의 차수(정도), relation schema에서 attributes의 수

relation database는 여러 개의 relations로 구성된다.

relation schema들의 집합 + integrity constraint들의 집합


id를 통해 학생들을 고유값으로 식별한다.



address는 서울특별시/ 강남구/ 청담동으로 나뉘어질 수 있다.(=composite)
major는 나뉘어질 수 있다.(여러가지 값 존재 = multivalued)


토익점수 또는 편입학생인지에 대한 데이터

relation에서 tuples를 unique하게 식별할 수 있는 attributes set

어느 한 attribute라도 제거하면 unique하게 tuples를 식별할 수 없는 super key

relation에서 tuples를 unique하게 식별하기 위해 선택된 candidate key

primary key가 아닌 candidate keys

다른 relation의 PK를 참조하는 attributes set
PLAYER의 team_id는 TEAM의 id를 참조하는 외래키이다.


relational data model 자체가 가지는 constraints

주로 DDL을 통해 schema에 직접 명시할 수 있는 constraints
explicit constraints

grade(학년)은 1~4만 가능하다.




PK에 없는 values를 FK가 값으로 가질 수 없다.
FK는 다른 relation의 PK를 참조해야한다.