데이터베이스

DB) Relation(릴레이션, 테이블), Key(키)

나무늘보섬 2024. 9. 24. 00:06

데이터 베이스의 기본 중 용어 개념

아래는 데이터 테이블 즉, 릴레이션에서 필요한 기본 용어 개념

더보기

도서 릴레이션의 예시

 

도서

도서번호 도서이름 출판사 가격
1 축구의 역사  굿스포츠 5000
2 축구 강의 나무수  10000
3 축구의 이해 굿스포츠 150000

- 출처: mysql로 배우는 데이터베이스 개론과 실습

  • Relation : row(행)와 column(열)로 구성된 테이블 (절대 관계라고 해석하면 안됨!!!!!)
  • Relationship : 릴레이션과 릴레이션 사이의 관계를 말하는 것
  • Row(행) : 튜플(tuple)이라고도 하며, 행을 말하는 것
    • ex) [1, 축구의 역사, 굿스포츠, 5000]
    • Cardinality(카디낼리티) : 투플의 수 - 위 릴레이션의 cardinality는 3

 

  • Column(열) : Attribute라고도 함, 말 그대로 속성
    • ex) 도서번호, 도서이름, 출판사, 가격 
    • Domain(도메인) : 애트리뷰티 즉, 속성이 가질 수 있는 값의 집합을 말하는 것
      • ex) 출판사의 도메인 - 문자열   /   도서번호, 가격의 도메인 - 정수 
    • Degreee(차수) : 속성의 개수 -> 위 도서 릴레이션의 차수는 4개 (도서번호, 도서이름, 출판사, 가격)

 

  • Skima(스키마) : 릴레이션에 저장된 데이터 구조 

 

  • Instance(인스턴스) : 릴레이션 내에 실제로 저장된 데이터 값 
    • ex) 축구의 역사(도서이름), 5000(가격), 10000(가격), 1(도서번호)

 

 


릴레이션의 특징

1. 속성은 단일 값을 가진다

-> ex) 도서이름 - "축구의 역사, 축구강의" 처럼 동시에 여러 값을 가질 수 없음

 

2. 속성은 서로 다른 이름을 가져야 함.

-> ex) 가격 옆 column에 다시 도서번호, 출판사, 가격과 같은 이미 포함된 attribute를 생성해선 안된다.

 

3. 속성의 값은 모두 같은 도메인 값을 가져야 한다.

->. ex) 가격 - 오천원 처럼 정수 집합의 도메인인데 "오천원"과 같은 문자열이 될 수 없음

 

4. 속성의 순서는 상관없다.

-> 출판사가 먼저오고 도서이름이 나중에 오는 것은 상관없다 (모든 attribute 마찬가지).

 

5. 릴레이션 내의 중복된 투플은 허용되지 않는다!!

-> ex) [2 , 축구강의, 굿스포츠, 10000] 이라는 투플이 다시 추가되거나 중복되어선 안됨!

 

6. 투플의 순서는 상관없다 

-> 4번과 비슷한 개념, 도서번호 1과 3번 행의 순서가 바뀌어도 상관없다.

 

 


Key(키) 

- 릴레이션에서 특정 투플을 식별할 때 사용하는 속성(attribute), 속성의 집합

-> 키가 되는 속성(or 속성 집합)은 반드시 값이 달라서 투플을 서로 구별할 수 있어야 함

 

 

 

 

더보기

예시 릴레이션들

- 출처: mysql로 배우는 데이터베이스 개론과 실습

(오타니 쇼헤이는 외국인이지만 주민번호가 있다고 가정하자)

 

 

고객 릴레이션 

고객번호 이름 주민번호 주소 핸드폰
1 박지성 810330 - 1111100 영국 맨체스터  3333-4444
2 손흥민 920708 - 1111112 영국 토트넘 2222-1112
3 오타니 쇼헤이 940705 - 100002 미국 LA 5050-5050
4 백종원 660904 -122222 한국 강남 1324-4567
5 박지성 990305 - 1234567 한국 마포 5465 - 8989

 

주문 릴레이션

  • 슈퍼키(super key) : 투플을 유일하게 식별할 수 있는 하나의 속성 or 속성 집합
    • 고객번호, 주민번호가 식별 가능한 속성이다.
    • 이름의 경우, 동명이인이 존재하기 때문에 불가 (박지성)
    • 가족의 경우, 주소지가 같기 때문에 식별할 수 없을 가능성이 존재
    • 핸드폰 번호의 경우, 여러 개의 핸드폰을 사용할 수도 있고, 핸드폰이 없는 사람도 존재할 수 있기 때문에 X
      • 슈퍼키의 예시 - (주민번호). (주민번호, 이름), (고객번호), (고객번호, 이름), .....
      • 식별 가능한 속성들을 포함하는 부분집합의 갯수와 같다.
  • 후보키(candidate key) : 투플을 유일하게 식별할 수 있는 속성의 최소 집합
    • ex) (주민번호), (고객번호)
    • (주민번호, 이름)은 슈퍼키 O, 후보키 X -> 식별과 상관없는 속성인 '이름' 속성이 포함됐기 때문
    • (주민번호, 고객번호)는 슈퍼키 O, 후보키 X -> 최소 집합이기 때문에 각 속성 1개만으로도 식별 가능하기 때문
    • (주민번호, 고객번호)처럼 합쳐진 것을 복합키(composite key)라고 함
  • 기본키(primary key) : 여러 개으 후보키 중 하나를 선정하여 대표로 삼는 키
    • 기본키로 (주민번호), (고객번호) 선택가능
    • 기본키의 제약조건
      • 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야 한다.
      • NULL값은 허용 X -> NULL값은 특수한 값이여서 0이나 공백과는 다른 것
      • 키 값의 뱐동이 일어나지 않아야 한다.
      • 최대한 적은 수의 속성을 가진 것이어야 한다.
      • 향후 키를 사용하는데 있어서 문제 발생의 소지가 없어야 한다.
  • 대체키(alternate key) : 기본키로 선정되지 않은 후보키

 

  • 인조키(artificial key 또는 대리키) - 사진 참조
    • 마땅한 기본키가 없을 때 가상의 속성을 만들어 기본키로 삼는 경우, 그 키를 인조키 또는 대리키 라고 한다, 

 

  • 외래키 (foreign key) - 사진 참조  
    • 다른 릴레이션의 기본키를 참조하는 속성, 다른 릴레이션의 기본키를 참조하여 relationship 표현이 가능
    • 외래키가 참조하고 참조되는 릴레이션의 도메인은 서로 같아야 하기 때문에 데이터 값이 변경되면 외래키 값     역시 바뀌어야 한다. ->  "외래키 제약조건" 
    • 외래키의 특징
      • 관계 데이터 모델에서 릴레이션 간의 관게를 표현함
      • 다른 릴레이션의 기본키를 참조하는 속성
      • 참조하고 참조되는 릴레이션들의 도메인은 서로 같아야함
      • 기본키의 값 변경 -> 외래키의 값도 변경 (외래키 제약조건)
      • NULL값과 중복값이 허용
      • 자기 자신의 기본키를 참조해서 외래키로 사용 가능
      • 외래키는 기본키의 일부가 될 수 있다.
        • -> 사진의 주문번호라는 artificial key를 추가하기 전에, 외래키인 고객번호, 도서번호가 복합 기본키로 사용할 수 있음)

 

 

 

 

 

 

 

 

 

 

 

 

'데이터베이스' 카테고리의 다른 글

DB) Function Dependency (함수 종속성)  (2) 2024.11.29