데이터 베이스의 기본 중 용어 개념
아래는 데이터 테이블 즉, 릴레이션에서 필요한 기본 용어 개념
도서 릴레이션의 예시
도서
| 도서번호 | 도서이름 | 출판사 | 가격 |
| 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 |
|---|