2017년 3월 11일 토요일

database(2) - Relational Model

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이어야함 (참조 무결성)



댓글 없음:

댓글 쓰기