데이터베이스란?
어느 한 조직에서 업무 처리를 위해 다수의 응용시스템 혹은 다수의 사용자들이
공용으로 사용하기 위한 통합 저장된 운영 데이터의 집합이다.
통합 데이터 - 하나의 주제에 따라 중복을 최소화한 데이터 집합
저장 데이터 - 사용자나 응용 시스템이 필요 시 언제든지 이용할 수 있도록 저장된 데이터 집합
공용 데이터 - 여러 사용자와 다수의 응용 시스템이 공유할 수 있도록 만든 데이터 집합
운영 데이터 - 중복을 최소화하고 여러 사람이 공유함에 있어 문제가 발생하지 않도록 관리를 필요로하는 데이터
특징
- 계속적인 변화
- 동시공유
- 실시간 접근
- 내용에 의한 참조
구성요소
- 개체 (Entity) - 실세계에 존재하는 유형 혹은 무형 정보의 대상이며 서로 구별되는 하나하나의 대상.
- 속성 (Attribute) - 개체의 특성이나 혹은 상태를 기술하는 것.
- 관계 (Relation) - 두 개 이상의 개체 사이 또는 속성 간이 상호 연관성.
논리적 구조
- 사용자 관점에서 본 구조, 사용자가 이해하고 생각하는 것을 나타내는 형태
물리적 구조
- 저장 장치관점에서 본 구조, 기계 처리에 맞는 형태
스키마(Schema)
데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술, 정의한 것
내부 스키마 - 물리적 저장 장치 관점(기계 관점)에서 본 데이터베이스 물리적 구조
개념 스키마 - 논리적 관점(사용자 관점)에서 본 전체적인 데이터 구조
외부 스키마 - 데이터 중 사용자가 사용하는 한 부분에서 논리적인 구조 == (서브 스키마)
관계 데이터 모델
용어 | 설명 | ||
릴레이션 | 자료 저장 형태가 2차원 구조의 테이블로 표현 | ||
속성 | 릴레이션을 구성하는 각 열 | ||
튜플 | 릴레이션의 한 행을 구성하는 속성들의 집합 | ||
도메인 | 하나의 속성이 가질 수 있는 값들의 범위 | ||
릴레이션 스키마 | 릴레이션의 이름과 속성 이름의 집합 | ||
릴레이션 인스턴스 | 릴레이션에서 어느 시점까지 입력된 튜플들의 집합 | ||
차수 | 릴레이션을 구성하는 속성의 수 | ||
카디널리티 | 릴레이션에 입력된 튜플의 수 |
키(key)란?
데이터베이스에서 튜플을 식별하기 위해 사용하는 속성이나 속성의 집합으로,
데이터베이스 참조 또는 검색시 사용한다.
기본 키 (Primary key)
- 후보 키 중에서 튜플을 식별하기 위해 특별히 선택된 키.
- 유일성과 최소성 만족해야한다.
- 중복 불가하며 NULL값이 올 수 없다.
후보 키 (Candidate key)
- 릴레이션에서 각 튜플을 유일하게 식별할 수 있는 속성이나 속성의 집합
- 유일성과 최소성 모두 만족해야한다.
대체 키 (Alternate Key)
- 후보 키 중에서 기본 키를 제외한 속성.
- ex) 학생테이블에서 학번을 기본 키로 했다면, 대체 키는 주민 번호이다.
만약 주민 번호를 기본 키로 했다면, 대체키는 학번이다.
외래 키 (Foreign Key)
- 하나의 테이블에서 원하는 자료를 얻지 못하는 경우 다른 테이블을 참조하기 위해 사용되는 속성
- 참조 릴레이션의 기본 키와 같아야한다.
슈퍼 키 (Super Key)
- 한 릴레이션 내의 튜플들을 식별할 수 있는 후보 키와 다른 속성들과의 모든 조합.
- 유일성 만족
- 최소성 만족하지 않음
무결성 (Intergrity) 제약조건
개체 무결성
- 기본키는 NULL 값이 올 수 없고, 중복될 수 없음을 나타내는 제약조건
참조 무결성
- 외래키는 NULL 값이 올 수 있고, 참조 릴레이션의 기본키와 같아야 하는데 제약조건으로 테이블 참조시 오류가 없도록 하기 위한 제약조건
도메인 무결성
- 릴레이션에서 속성 값의 범위가 정의된 경우 그 속성 값은 정해진 범위 이내의 값으로 구성해야 하는 제약조건이며,
동일한 속성에 대해 데이터 타입과 데이터 길이가 동일해야함.
고유(Unique) 무결성
- 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 그 속성값은 모두 달라야 하는 제약조건.
키 무결성
- 한 릴레이션에는 최소한 하나의 키가 존재해야 하는 제약조건
이상현상 (Anomaly)
데이터베이스의 논리적 설계 시 하나의 릴레이션에 많은 속성들이 존재하여,
데이터의 중복과 종속으로 인해 발생되는 문제점. ( 삽입 이상, 삭제 이상, 갱신 이상)
삽입 이상
: 삽입 과정에서 원하지 않는 자료가 삽입되거나 삽입 자료가 부족해 삽입되지 않아 발생하는 문제
삭제 이상
: 하나의 자료를 삭제하고자 할 경우 그 자료가 포함된 튜플이 삭제됨으로 인해 원하지 않는 자료까지 함께 삭제가 이루어져 발생하는 문제
갱신 이상
: 자료를 갱신하는 과정에서 정확하지 않거나 일부 튜플만 갱신됨으로 인해 정보가 모호해 지거나 일관성이 없어져 정확한 정보 파악이 안되는 현상
함수 종속
이상과 함께 고려해야할 것 중 하나가 종속이다. 종속이란 어떤 릴레이션에서 속성 a,b가 있을 때, a의 값이 b의 값을 함수적으로 결정한다면, 즉 a의 값을 알면 b의 값을 알 수 있거나 a의 값에 따라 b의 값이 달라진다면 b는 a에 함수적 종속 되었다고한다. ( a -> b) b가 a에 종속되어 a값을 알면 b값을 알 수 있을 때 a를 '결정자'라고 하고 b를 '종속자'라고 한다. 종속은 완전함수종속, 부분함수종속, 이행적 함수 종속 등이 있다. |
완전 함수 종속
: 릴레이션에서 한 속성이 오직 기본 키에만 종속 되는 경우.
부분 함수 종속
: 릴레이션에서 한 속성이 기본 키가 아닌 다른 속성에 종속 되거나
또는 기본 키가 2개이상 합성키로 구성된 경우 이 중 일부 속성에 종속 되는 경우.
이행함수 종속
: 이행적 함수 종속은 릴레이션에서 a,b,c 세 가지 속성 간의 종속이 a->b, b->c 일 때, a->c가 성립되는 경우.
(즉, a를 알면 b를 알고, b를 알면 c를 알 수 있을때, a를 알면 c를 알수 있음)
- [제품번호 -> 제품명], [제품명 -> 단가], [제품번호 -> 단가]
'✨ DBMS > etc' 카테고리의 다른 글
[DB] RDBMS와 NoSQL의 차이 (0) | 2023.12.24 |
---|---|
[DB] 정규화(Normalization) (0) | 2023.08.03 |
[SQL] 분석함수(윈도함수) OVER( ), PARTITION BY, ORDER BY (0) | 2023.08.02 |
[SQL] 순위 함수 - RANK(), DENSE_RANK(), ROW_NUMBER() (0) | 2023.08.02 |
[SQL/MySQL] 트랜잭션 COMMIT, ROLLBACK, SAVEPOINT 사용법 (0) | 2023.08.01 |
댓글