Relational Model을 알기 전에 우선 data model에 대해 알아보자
data model : 데이터들을 표현하기 위한 방법!
ex. 글이 라면 ==> Word
그래프라면 ==> PowerPoint
표라면 ==> Excel
==> 데이터 모델은 굉장히 다양하고 그에 따라 최적화된 프로그램들이 다르다!
* 주요 Data Model
- Relational data model
- Entity Relationship(E-R) data model
: 데이터베이스 설계에 주로 사용됨
- object-based data models
(Object-Oriented and Object-Relational)
: RDBMS의 한계점 극복을 위해 제안되었으며 OO-DBMS의 장점이 부각되자,
대형 RDMS Vendor들이 OR-DBMS발표
(현재 대부분의 RDBMS는 실질적으로 ORDMBS이다)
- 기타:
Network(graph) model, Hierarchical(Tree) model : RDBMS이전 IBM시대에 주로 사용
되었던 모델
==> 데이터를 정리할 때 표를 이용하는게 쉽다는 걸 알고 있었지만
표를 쓰기 위한 알고리즘이 없었다.
* Relational data model
: 현재 가장 널리 이용되는 방법으로 high language인 SQL을 제공하고
Relation(Table)에 기반하는 모델을 사용해 데이터를 정리할 때 유용하며 편리하다.
ex. Oracle, IBM DB2, MS-SQL Server...
- 주요 개념
1) Attrubute (column) : 연관성은 없지만 하나의 특징을 표시하는 세로줄
2) Tuple (row, record) : set of values for attributes
3) Relation (table) : set of tuples
4) Database : set of relations
5) Domain (type) :Attribute가 가질 수 있는 값의 집합 및 범위
ex. Domain(학년) = {1, 2, 3, 4}
Domain(성별) = {'M', 'F'} or {'M', 'F', NULL}
Domain(이름) = 1자리 이상의 임의의 문자열
* Table VS Relation
- Relation은 수학적인 개념이다!
=> 튜플간, 애트리뷰트간 순서가 없음
ex. {1, 2} == {2, 1} == {1, 1, 1, 2}
또한 동일한 튜플은 존재할 수 없다.(set이므로)
* Schema
: the logical structure of the database
=> 스키마는 프로그램안에 변수의 type정보나 이름 같은 정보를 가진
논리적 설계도이다.
* Instance
: actual contents at a particular point in time
=> 어떤 한 순간에 값들 ==> 시간이 지나면 바뀔 수 있다.
* NULL
: special value for "unknown" or "undefined"
=> 아무것도 없다는 의미(0이 아님!!)
==> 모든 도메인들은 NULL을 포함하고 있다.(단, 기본키를 제외하고)
* Key
: tuple들을 구별하기 위한 Attribute의 집합
=> 동일한 튜플은 존재할 수 없으므로 Key를 통해 각각의 튜플을 구별한다.
* super Key
: Key와 동일한 뜻 (구분하기 위해 나눠뒀을 뿐)
ex. (학번), (주민번호), (학번, 주민번호), (학번, 이름, 성별, 주민번호), (학년, 반, 번호, 이름)
* candidate Key
: superKey중 minimal한 키
ex. (학번), (주민번호), (학년, 반, 번호)
* primary Key (제일 중요!!)
: candidate key중 단 하나!
==> 정책상으로 정하는 것이므로 가상으로 만들어 지정하는 경우도 많음
(학번, 주민번호)
===> 게다가 절대 NULL이 될 수 없다.(개체 무결성)
* foreign Key
: 다른 relation에서의 primary key가 현 relation의 attribute로 들어오는 키
(자기 자신을 참조하는 경우도 있다.)
===> 이러한 경우 멘토 학번 attribute(fk)에서 학번 attribute(pk)를 참조 할 수 있다.
ps) 참조하고 있는 relation의 기본키가 존재하거나 NULL이어야함 (참조 무결성)
- Relational data model
- Entity Relationship(E-R) data model
: 데이터베이스 설계에 주로 사용됨
- object-based data models
(Object-Oriented and Object-Relational)
: RDBMS의 한계점 극복을 위해 제안되었으며 OO-DBMS의 장점이 부각되자,
대형 RDMS Vendor들이 OR-DBMS발표
(현재 대부분의 RDBMS는 실질적으로 ORDMBS이다)
- 기타:
Network(graph) model, Hierarchical(Tree) model : RDBMS이전 IBM시대에 주로 사용
되었던 모델
==> 데이터를 정리할 때 표를 이용하는게 쉽다는 걸 알고 있었지만
표를 쓰기 위한 알고리즘이 없었다.
* Relational data model
: 현재 가장 널리 이용되는 방법으로 high language인 SQL을 제공하고
Relation(Table)에 기반하는 모델을 사용해 데이터를 정리할 때 유용하며 편리하다.
ex. Oracle, IBM DB2, MS-SQL Server...
- 주요 개념
1) Attrubute (column) : 연관성은 없지만 하나의 특징을 표시하는 세로줄
2) Tuple (row, record) : set of values for attributes
3) Relation (table) : set of tuples
4) Database : set of relations
5) Domain (type) :Attribute가 가질 수 있는 값의 집합 및 범위
ex. Domain(학년) = {1, 2, 3, 4}
Domain(성별) = {'M', 'F'} or {'M', 'F', NULL}
Domain(이름) = 1자리 이상의 임의의 문자열
* Table VS Relation
- Relation은 수학적인 개념이다!
=> 튜플간, 애트리뷰트간 순서가 없음
ex. {1, 2} == {2, 1} == {1, 1, 1, 2}
또한 동일한 튜플은 존재할 수 없다.(set이므로)
* Schema
: the logical structure of the database
=> 스키마는 프로그램안에 변수의 type정보나 이름 같은 정보를 가진
논리적 설계도이다.
* Instance
: actual contents at a particular point in time
=> 어떤 한 순간에 값들 ==> 시간이 지나면 바뀔 수 있다.
* NULL
: special value for "unknown" or "undefined"
=> 아무것도 없다는 의미(0이 아님!!)
==> 모든 도메인들은 NULL을 포함하고 있다.(단, 기본키를 제외하고)
* Key
: tuple들을 구별하기 위한 Attribute의 집합
=> 동일한 튜플은 존재할 수 없으므로 Key를 통해 각각의 튜플을 구별한다.
* super Key
: Key와 동일한 뜻 (구분하기 위해 나눠뒀을 뿐)
ex. (학번), (주민번호), (학번, 주민번호), (학번, 이름, 성별, 주민번호), (학년, 반, 번호, 이름)
* candidate Key
: superKey중 minimal한 키
ex. (학번), (주민번호), (학년, 반, 번호)
* primary Key (제일 중요!!)
: candidate key중 단 하나!
==> 정책상으로 정하는 것이므로 가상으로 만들어 지정하는 경우도 많음
(학번, 주민번호)
===> 게다가 절대 NULL이 될 수 없다.(개체 무결성)
* foreign Key
: 다른 relation에서의 primary key가 현 relation의 attribute로 들어오는 키
(자기 자신을 참조하는 경우도 있다.)
학번
|
----
|
------
|
------
|
멘토 학번
|
===> 이러한 경우 멘토 학번 attribute(fk)에서 학번 attribute(pk)를 참조 할 수 있다.
ps) 참조하고 있는 relation의 기본키가 존재하거나 NULL이어야함 (참조 무결성)
댓글 없음:
댓글 쓰기