ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Relational Model과 Key의 종류
    CS 지식/데이터베이스(Database) 2023. 4. 17. 16:51
    Relational Model

     

    Relational Model(관계형 모델)관계 정보를 기준으로 데이터의 구조를 표현하는 방식을 말한다. 

     

    대개 Database에서는

    • Schema : data의 구조   
    • instance : data들이 들어가 있는 지금 그 상태 

    를 말한다.

     

    variable로 따지면 Schema는 variable의 'type'을, instance는 variable의 'value'를 가리키는 느낌이다. 

     

     

     

    - R : relational schema = attriabute들의 집합 = (A1, A2, A3,... An)       

    (A들은 attribute들을 지칭한다.)

     

    - r : relation variable

    보통 r(R)로 표현을 하는데, relation(variable) on the relation schema R의 의미를 갖는다. 

     

    * relation은 set으로 tuple들의 순서는 관계없고, 중복도 허용하지 않는다. 

     

     

     

    Key의 종류

     

    1. Super key

    • unique 한 tuple을 identify할 수 있을 때 
    • 꼭 minimal한 조합이 아니어도 된다.
    • ex) (학번, 이름, 주소) 의 조합 은 한 학생을 unique 하게 identify 할 수 있다. 
      학번만 있어도 한 학생을 unique 하게 identify 할 수 있어서 (학번, 이름, 주소) 조합은
      minimal 한 구성으로 이루어진 조합은 아니지만 R의 super key라고 할 수 있다. 

     

     

    2. Candidate key

    • Super key 중에서도 minimal 한 구성으로 이루어진 조합을 의미한다. 
    • unique 한 tuple로 identify + minimal 한 구성을 모두 만족해야 한다.
    • 보통 이야기 하는 key를 의미
    • 여러 개 존재 가능하다.
    • ex) (학번) / (이름, 주소) / (주민번호)

     

     

    3. Primary key

    • Candidate key 중에서 DBA(table의 owner)가 table을 대표하는 key로 지정한 것을 말한다.
    • null 값을 허용하지 않고 모두 그 자체로 unique 한 값을 갖는다. 
    • ex) (course_id, section_id, semester, year)와 같이 필요하면 여러 개의 attribute들로 구성될 수 있다. 

     

     

    4. Foreign key

    • 같은 / 다른 table 끼리 연결할 때 사용
    • ex) account table의 branch-name attribute가 branch table의 branch-name attribute를 참조하는 상황)
      -> account table의 branch-name : Foreign Key
      -> branch table의 branch-name : Primary Key
      정확히는, Foreign key는 같은 / 다른 table의 Primary key를 참조함.
      이 경우에 branch-name이 branch table의 Primary key라서 table끼리의 참조에서 활용되는 것. 

    'CS 지식 > 데이터베이스(Database)' 카테고리의 다른 글

    statement vs prepared statement vs callable statement interface  (0) 2023.05.04
    Transaction Isolation Level(트랜잭션 격리 수준)  (0) 2023.04.25
    Transaction  (0) 2023.04.25
    SQL vs NoSQL  (0) 2023.04.21
    SQL - injection  (2) 2023.04.19
Designed by Tistory.