set (집합)
- 서로 다른 요소들을 가지는 collection
- 순서를 보장하지 않음
수학의 relation과 의미
아래와 같이 A 집합과 B 집합이 있을때 각각의 요소들을 선택하여 쌍을 만든다.
그러면 (1, p), (1, q), (1,r), (2, p), (2,q), (2,r) 이 생길 것이다. 그리고 이렇게 표현한 것을 카르테시안 곱(cartesian product)라고 한다.
이 카르테시안 곱이 relation과 관련이 있는데
아래처럼 집합이 A, B 두 개가 있을 경우 binary relation 이라고 한다. 여기서 relation의 의미가 바로 A x B 카르테시안 곱의 부분 집합이라는 것이다.
그리고 아래처럼 집합이 n개까지 있다고 한다면 n-ary relation 이라 하고 n개의 집합에 대한 카르테시안 곱의 부분집합이 되는 것이다.
이런 relation에서 나온 아래와 같은 리스트들은 tuple(튜플)이라고 부른다. 위와 같은 경우 n개의 요소들을 담는 튜플이기때문에 n-tuple 이라고 부른다.
이제 이런 relation을 테이블로 그려서 표현해보면 다음과 같다.
relation schema
- relation 구조를 나타냄
- relation 이름과 attributes 리스트로 표기
- 예) User(id, name, email, phone)
- attributes와 관련된 constraints라는 것도 포함
degree of a relation
- relation schema에서 attributes의 수
- 예) User(id, name, email, phone) -> degree 4
relation database
- relation data model을 기반으로 구조화된 database
- relational database는 여러 개의 ralations로 구성
relation의 특징
- 중복된 tuple을 가질 수 없다.
- tuple을 식별하기위해 attribute의 부분 집합을 key로 설정 (예를 들어서 "id, name, email, phone" 중 id 를 key로 설정)
- tuple의 순서는 중요하지 않음
- attribute는 원자성(더 이상 쪼개지지않는 성질)을 가져야함 (예를 들어서 "경기도 수원시"라는 값이 있다면 "경기도"와 "수원시"로 나누어질 수 있기때문에 원자성을 만족하지 않는다.)