relation
- 데이터의 항목을 나타내는 각각의 집합들을 domain이라고 함
학생 데이터가 있다고 하면 전화번호, 이름, 전공등의 속성값을 각각 domain이라 하고, 각각의 domain들의 집합의 이름을 domain이라 함
- 각 domain들에서 값을 하나씩 골라 튜플을 생성할 수 있는데, 이 튜플들의 집합을 relation이라고 할 수 있음
- 전화번호는 집전화, 휴대폰으로 나눌 수 있듯이 같은 domain이더라도 여러번 사용할 수 있는데, 이를 구분하기 위해서 각각에 attribution이라 부르는 이름을 붙임
- relation data model에서는 이를 집합보다는 테이블로 많이 표기를 하게 됨
- relation이 여러개 모여 구조화된 database는 relation database라 함
relation schema
- relation의 구조를 나타낼 때 relation schema를 사용함
- relation schema는 relation의 이름과 attribute 리스트로 표기됨
ex) STUDENT(id, name, grade, major ...)
- relation schema에는 암묵적으로 제약사항도 포함됨
- relation 하나가 가지는 attribute 개수는 degree로 부름
ex) STUDENT(id, name, grade, major)에서 degree는 4
- relation database에서는 여러개의 relation과 제약 조건이 모여 relation database schema를 이룸
relation의 특징
- 튜플을 사용하기 때문에 모든값이 같은 튜플을 가질 수 없음
- 튜플을 식별하기 위해 attribute의 부분집합을 key로 설정함
- 튜플의 순서를 정렬할 수 있는 방법은 여러가지가 있음
- 하나의 튜플에서 attribute는 중복되지 않고, 순서는 중요하지 않음
- attribute의 값은 더이상 쪼개저야 하지 않아야 하며, 여러개의 값을 동시에 가져서는 안됨
ex1) address가 서울특별시 강남구 청담동 101동 204호라 하면 값이 composite하기 떄문에 본 주소와 세부주소로 분리해주어야 함
ex2) major 값이 컴공, 디자인이라면 값이 여러개이기 때문에 여러개의 attribute (main major, submaor...)을 사용해 분리해야함
superkey
- relation에서 튜플을 unique하게 식별할수있는 attributes set을 superkey라고 함
ex) STUDENT(id, name, grade, major, phonenumber)에서 id 단독으로도, phonenumber 단독으로도, 또는 다른 값을 조합해서도 superkey가 될 수 있음
- superkey에서 한 값이라도 제거하면 unique한 키를 얻을 수 없는 superkey를 candidate key라고 함
- candidate key에서 튜플을 unique하게 식별하기 위해 선택된 키를 primary key, 나머지 candidate keys를 alternate key라 부름
- 다른 relation의 primary key를 참조하는 attributes set은 foreign key라고 부름
constraints
- relation database에서 relations이 언제나 지켜줘야 하는 제약 사항을 constraints라 부름
- relation data model 자체의 특성으로 인해 지켜야 하는 제약사항을 implict constraints라 하고, 이는 relation의 특징을 공유함
- schema에 직접 명시하는 제약사항은 schema-based constraints라 함
- domain constraints는 attribute의 값이 해당 domain에 속한 value여야 한다는 제약사항을 의미함
- key constrints는 다른 튜플이 다른 키를 가질 수 없음을 의미함
- Null value constraint는 NOT NULL이 설정된 부분에 NULL이 들어갈 수 없음을 의미함
- entity integrity constraint는 primary key값으로 NULL을 가질 수 없음을 의미함
- referential integrity constraint는 foregin key와 primary key는 도메인이 같아야 하며, primary key에 없는 값을 foregin key가 값으로 가질 수 없다는 것을 의미함
출처:
https://www.youtube.com/watch?v=gjcbqZjlXjM&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=2