기본 3 - 관계, 키

1. 관계

  • 데이터베이스는 여러개의 테이블로 이루어져있고, 서로 관계가 정의되어 있다.

  • 이러한 관계는 화살표로 나타낸다.

  • 1:1 필수

    • 하나의 A는 하나의 B로 구성되어있다.

    • 1

  • 1:1 선택

    • 하나의 A는 하나 이하의 B로 구성되어있다.

    • 0 또는 1

  • 1:N 필수

    • 하나의 A는 하나 이상의 B로 구성되어있다.

    • 1 이상

  • 1:N 선택

    • 하나의 A는 하나 이상의 B로 구성되어있다.

    • 0 이상

1-1. 1:1 관계

  • 유저당 이메일은 하나씩

1-2. 1:N 관계

  • 쇼핑몰의 경우, 유저는 상품을 장바구니에 넣는다.

  • 하나도 안담는 0개일수도 있고, 1개 이상을 넣을 수도 있으니, 0이상이 된다.

1-3. N:M 관계

  • 학생과 강의

    • 학생은 강의를 많이 들을 수 있고, 강의도 여러명의 학생을 포함할 수 있다.

    • 이 경우, 테이블과 테이블은 직접적으로 관계를 맺지 않는다. 중간에 관계 테이블을 하나 두어

    • 학생 - 학생과 강의 매핑 테이블 - 강의 처럼 구성된다.

2. 키

  • 테이블 간의 관계를 조금 더 명확하게 하고,

  • 테이블 자체의 인덱스를 위해서 설정된 장치로 아래와 같은 종류의 키가 있다.

    • 기본키

    • 외래키

    • 후보키 : 유일성(중복되지 않는 값) + 최소성(필드를 조합하지 않고 최소 필드만 써서 키를 형성)

    • 슈퍼키 : 유일성

    • 대체키 : 기본키로 선택되지 못한 키

2-1. 기본키, primary key

  • 줄여서 PK 라고 함

  • 유일성과 최소성을 만족하는 키

  • 테이블의 데이터 중, 고유하게 존재하는 속성이다.

    • 절대로 중복되어서는 안된다.

  • 복합키는 최소성을 만족시키지 않는다.

    • 1-홍길동, 2-홍길동 은 복합키로서 유일성을 만족한다.

    • 하지만 숫자만으로 충분히 구별할 수 있는 레코드들이기 때문에 최소성을 만족하지는 않는다.

  • 자연키나 인조키 중에 골라서 설정할 수 있다.

자연키

  • 유저 테이블을 만든다고 가정한다면, 이름, 나이, 주소, 주민등록번호 등 다양한 속성이 나올 수 있다.

  • 이때, 중복되지 않는 값인 주민등록번호가 키가 될 수 있다.

  • 중복된 값을 제외하며 중복되지 않는 것을 자연스럽게 뽑다가 나오는 키를 자연키라고 한다.

  • 하지만 자연키는 언젠가는 변하는 속성을 가진다.

인조키

  • 인위적으로 부여하는 아이디이며 고유식별자이다.

  • 오라클은 sequence, MySQL 은 auto increment 등을 통해서 설정할 수 있다.

  • 자연키와는 다르게 변하지 않는다.

  • 보통 이러한 인조키를 기본키로 설정한다.

2-2. 외래키, foreign key

  • FK 라고도 한다. 다른 테이블의 기본키를 그대로 참조하는 값.

  • 개체와의 관계를 식별하는데 사용한다.

  • 중복되어도 괜찮다.

2-3. 후보키

  • candidate key 는 기본키가 될 수 있는 후보군들

  • 유일성과 최소성을 동시에 만족한다.

2-4. 대체키

  • 후보키가 두 개 이상일 경우, 어느 하나를 기본키로 지정하고 남은 후보키들을 말한다.

2-5. 슈퍼키

  • 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키

Last updated