이번 챕터에서는 관계형 모델에 대해서 공부를 했는데 2개의 강의로 나누어져 있어서 양이 많은가하고 염려스러웠지만 괜찮았던 것 같다.
관계형 모델은 아래와 같은 그림으로 나타낼 수 있는데
여기서 테이블을 relation으로, 테이블의 행을 tuple로, 테이블의 열을 attribute라고 할 수 있다.
Relational 데이터베이스는 테이블들의 모음인데 즉 여러 개의 relation으로 데이터베이스가 구성되는 것이다.
그리고 테이블은 순서를 가지지만 relation은 순서를 가지지 않는데 내용이 같으면 순서가 달라도 동일한 relation으로 간주한다 -> 그대신 중복된 tuple을 가져서는 안된다!
Relation의 column인 attribute는 도메인(각 attribute에 허락된 값들의 집합)을 가지고 있는데 relation의 모든 attribute들의 도메인은 atomic해야한다 -> 데이터 타입을 도메인으로 볼 수 있다.
attibute값으로 null값을 사용할 수 있는데 연산의 정의를 복잡하게 할 수 있으므로 주의해서 사용해야한다.
Relation Schema는 relation의 이름과 relation을 구성하는 attribute들의 이름으로 표기하는데
relation의 스키마를 보면 relation의 이름과 어떤 속성으로 구성되었는지 전체 구조를 쉽게 파악할 수 있다!
Relation Instance는 relation의 현재 값을 의미하는데 테이블로 명시한다
relation의 인스턴스를 보면 현재 relation의 실제 내용을 파악할 수 있다.
relatin의 인스턴스의 tuple값은 relation이 변화함에 따라 계속 바뀌지만 스키마는 바뀌지 않는다!!!
Key는 relation의 부분 집합으로 relation에서 tuple을 구별하기 위해 사용한다
Key는 Super key, Candidate key, Primary key, Foreign key 이렇게 설명이 나와 있는데 그건 ppt에 자세히 기술해놨고 나는 컴퓨터활용능력 실기 시험을 공부했을 때 많이 보고 사용했던 Primary key와 Foreign key에 대해 집중적으로 봤다.
Primary key는 relation에서 tuple을 구별하기 위해 기본적으로 사용할 후보키이며
유일한 값을 가져야 하고 null값을 가져서는 안된다는 제약조건을 가진다.
Foreign key는 relation들의 관계를 올바르게 표현하기 위해 사용되는 키이며
서로 다른 relation의 공통된 attribute들이 foreign key가 된다.
한 relation의 외래키의 값은 다른 relation에 존재해야 하는 제약조건을 가진다.
그리고 참조하는 관계와 참조되어지는 관계가 있는데
Foreign key constraint(참조 무결성) : 참조하는 관계의 외래키 값은 참조되어지는 관계에 반드시 존재해야 한다는 속성이 있다.
이런 기본키와 외래키에 종속성을 가지는데 데이터베이스의 모습을 스키마 diagram으로 나타낼 수 있는데 이는 ppt (1)에 그림을 첨부해놨다.
두 번째 ppt에서는 이제 관계 질의어(사용자가 데이터베이스로부터 정보를 요청할 때 사용하는 언어)를 수행하는데 필요한 관계대수에 대해서 배웠는데 관계대수는 이제 크게
Relational operation - Selection, Projection, Natural join, Cartesian product
Set operation - Union, Intersection, Set Difference로 분류할 수 있다
관계 대수 연산을 간단하게 정리해보면
1. Selection 연산 - 시그마 기호 사용해서 표시, 그 뒤에 원하는 tuple의 조건과 연산이 수행될 relation을 적어준다
그러면 조건을 만족하는 relation의 tuple들을 반환
2. Projection 연산 - 파이 기호 사용, 그 뒤 원하는 attribute들의 이름과 연산이 수행될 relation을 적어준다
그러면 입력 값으로 들어온 attribute들의 모든 행으로부터 특정 attribute들만을 결과로 출력
이 때 결과에 중복된 tuple이 있으면 그 tuple은 제거
3. Natural join - 나비넥타이 모양을 사용, 두 relation의 공통된 attribute의 값들을 비교해서 두 relation의 모든 tuple들 중 같은 값을 가진 tuple들의 페어를 출력
4. Cartesian product - natural join과 다르게 attribute들의 값을 신경쓰지 않고 두 relation의 모든 tuple들의 페어를 출력
5. Union - Union, Intersection, Set difference가 있고 연산에 참여하는 두 relation은 호환가능해야 한다는 제약조건이 있다.
이렇게 이번 챕터에서는 관계형 모델에 대해서 배워보았는데 처음에는 뭔가 명확한 느낌이 안들긴 했지만 그래도 반복해서 봤더니 그렇게 어렵게 느껴진 것 같진 않았다. 다음은 SQL에 대해서 배우는 거 같던데 얼른 해봤으면 좋겠다. 그리고 공부하면서 느낀점은 확실히 전에 한번 보거나 듣기라도 했던 내용들은 낯설게 다가오지가 않아서 이해가 잘되는 것 같았다!!!
'CS > 데이터베이스' 카테고리의 다른 글
Ch6. Entity-Relationship Model (0) | 2020.01.29 |
---|---|
Ch5. Advanced SQL (0) | 2020.01.23 |
Ch4. Intermediate SQL (0) | 2020.01.22 |
Ch3. SQL (0) | 2020.01.19 |
Ch1. 데이터베이스 소개 (0) | 2020.01.07 |