Relational Model Concepts
- 관계 모델은 데이터베이스를 relation들의 모임으로 표현한다.
- relation은 값의 테이블로 볼 수 있다.
- table의 각 행은 관련된 데이터 값들의 모임을 나타낸다.
- table의 각 열은 각 행의 데이터 값들을 어떻게 해석할 것인가를 명시한다.
- 행은 튜플(tuple)로, 열은 attribute로, table은 relation으로 부른다.
- 각 행에는 각 행에는 테이블에서 해당 행을 고유하게 식별하는 데이터 항목의 값을 key라고 한다. STUDENT table에서 Ssn이 key.
Schema
예시 : CUSTOMER (Cust-id, Cust-name, Address, Phone#)
- relation name: CUSTOMER
- 4가지 attributes: Cust-id,Cust-name,Address,Phone
- 각 attribute에는 domain 또는 유효한 값 집합이 있다.
- 예를 들어, Cust-id의 domain은 6자리 숫자이다.
Tuple
예시 : <632895, "John Smith", "101 Main St. Atlanta, GA 30332", "(404) 894-2000">
- 4개의 값을 가지므로 4-tuple이라고 한다.
- 관계의 정도(or arity)는 해당 관계 스키마의 속성 n의 개수이다.
- 관계는 이러한 튜플의 집합이다(튜플 간에는 순서가 없음).
Domain
예시 : “USA_phone_numbers” 는 미국에서 유효한 10자리 전화번호 집합이다.
- 데이터 유형 또는 이에 대해 정의된 형식이 있다.
- USA_phone_numbers의 형식은 (ddd)ddd-dddd(여기서 각 d는 십진수)일 수 있다.
예시 : Cust-name 속성은 최대 길이 25의 문자 문자열 도메인에 정의됩니다.
- dom(Cust-name)은 varchar(25)이다.
State
- relation state(관계 인스턴스)는 해당 속성의 도메인의 카티션 곱의 하위 집합이다.
-각 도메인은 속성이 취할 수 있는 모든 가능한 값의 집합을 포함한다.
Formal Definitions - Example
R(a1,a2) be a realtion schema :
- Let dom(A1) = {0,1}
- Let dom(A2) = {a,b,c}
Then: dom(A1) X dom(A2) is all posssible combinations:
- { <0,a>, <0,b>, <0,c>, <1,a>, <1,b>, <1,c> }
relation state r(R)은 dom(A1) X dom(A2)의 부분집합이다.
Difinition Summary
Characteristics of Relations
관계 r(R)에서 튜플의 순서
- relation은 튜플들의 집합으로 구성된다.
- 수학적으로 집합의 원소들 사이에는 순서가 없다. 따라서 관계에서도 튜플들은 특정 순서를 갖지 않는다.
튜플 내에서의 값들의 순서
- n-tuple은 n개의 값의 순서 리스트이다.
- 따라서 한 튜플 내에서의 값들의 순서는 중요하다.
- 즉 릴레이션 스키마를 정의할때 애트리뷰트들의 순서가 중요하다.
튜플 내에서의 값들과 NULL
- 튜플 내의 각 값은 원자값이다(더이상 나누어질 수 없다).
- 튜플의 각 값은 해당 열에 대한 속성의 도메인에서 가져온 값이어야 한다.
- 즉, 각 vi는 dom(Ai)의 값이어야 한다.
- 특정 튜플에서 알 수 없거나 사용할 수 없거나 적용할 수 없는(정의되지 않은) 값을 나타내기 위해 특수한 null 값이 사용된다.
Constraints
제약 조건은 데이터베이스에서 허용되는 값과 허용되지 않는 값을 결정한다.
데이터베이스에서의 제약 조건은 크게 다음 세 가지로 구분된다.
- Inherent of Implicit Constraints(내제적 또는 함축적 제약조건)
데이터 모델 자체에 존재하는 제약 조건. - 스키마 기반 제약조건 또는 명시적 제약조건
데이터 모델의 스키마에서 직접 표현 가능한 제약 조건.
주로 DDL로 명시한다. - application 기반 제약 조건 또는 의미적 제약 조건
데이터 모델의 스키마에서 직접 표현이 불가능한 제약 조건.
SQL 질의로 명시될 수 있다.
Relational Integrity Constraints
제약 조건은 모든 유효한 관계 상태에 대해 유지되어야 하는 조건이다.
관계 모델에서 표현할 수 있는 (명시적 스키마 기반) 제약 조건에는 세 가지 주요 유형이 있다
- 키 제약 조건
- 엔티티 무결성 제약 조건
- 참조 무결성 제약 조건
또 다른 스키마 기반 제약 조건은 도메인 제약 조건이다.
튜플의 모든 값은 해당 속성의 도메인에 속해야 합니다(또는 해당 속성에 대해 허용되는 경우 null일 수 있음).
Key Constraints
Superkey of R
- 릴레이션 스키마 R의 릴레이션 상태 r의 어떠한 두 튜플도 서로 다른 값들을 갖는 애트리뷰트들의 부분집합이 존재한다. 이러한 부분집합을 SK라고 표기할 수 있다.
- 관계 상태 r(R)의 두 튜플은 SK에 대해 동일한 key attribute값을 가질 수 없다. 이 유일성 성질은 슈퍼키에도 적용된다.
- 키는 최소의 슈퍼키(minimal superkey)이다. 즉, 슈퍼키 내의 어떤 애트리뷰트도 제거하지 않아야 유일성 제약 조건을 만족할 수 있따. 이 최소 성질은 key에는 필수적이지만 슈퍼키에는 선택적이다.
즉, 키는 슈퍼키이지만 슈퍼키는 키가 아닐 수 있다.
예를들면 STUDENT 릴레이션을 생각해보자. Ssn은 STUDENT 릴레이션의 Key이다. 그럼 Ssn을 포함하는 어떤 부분집합 {Ssn,Name,Age}도 슈퍼키가 될수 있다. 하지만 Name,Age가 없어도 여전히 슈퍼키가 되므로 STUDENT의 키가 아니다. 여러 개의 애트리뷰트들로 구성된 키는 유일성을 만족하기 위해 여러 애트리뷰트 모두가 꼭 필요하다.
- 릴레이션 스키마는 하나 이상의 키를 가질 수 있다. 이 경우 각 key를 후보 키라고 한다.
- 후보키들 중의 하나를 primary key(기본 키)로 지정한다.
- 두개의 후보키: License_number, Engine_serial_number를 갖는 CAR relation.
- primary key : LicenseNumber
Relational Database Schema and State
관계형 데이터베이스 스키마 S:
- S = {R1, R2, ..., Rn} 및 무결성 제약 조건의 집합 IC이다.
- R1, R2, ..., Rn은 데이터베이스 S 내의 개별 관계 스키마의 이름입니다.
S의 관계형 데이터베이스 상태 DB는 릴레이션 상태들의 집합이다.
- 즉 DB = {r1, r2, ..., rm}의 집합.
- 관계형 데이터베이스 스냅샷 또는 인스턴스라고도 합니다.
- 인스턴스라는 용어는 단일 튜플에도 적용되므로 여기서는 사용하지 않는다.
COMPANY Database Schema
Populated database state for COMPANY
)
Entity Intergrity Constraint(엔티티 무결성 제약 조건)
- 어떠한 기본키 값도 널 값이 될 수 없다.
- 기본키 값이 널 값이면 튜플들을 식별할 수가 없기 때문이다.
Referential integrity constraint(참조 무결성 제약 조건)
- 한 릴레이션에 있는 튜플이 다른 릴레이션에 있는 튜플을 참조하려면 반드시 참조되는 튜플이 그 릴레이션 내에 존재해야 한다는 것이다.
- 예를 들어, 위 그림에서 EMPLOYEE 릴레이션의 Dno값은 DEPARTMENT 릴레이션의 어떤 튜플의 Dnumber값과 반드시 일치해야 한다.
외래키가 되기 위해서는 두 릴레이션 스키마 R1과 R2 사이의 참조 무결성 제약조건이 만족되어야 한다.
- FK의 애트리뷰트는 R2의 기본키 PK 애트리뷰트와 동일한 domain을 가진다.
- R1의 한 튜플 내의 FK값은 R2의 한 튜플 내의 PK값과 일치하거나 널값을 가져야 한다.
Other Types of Constraints
Semantic intergrity constraints(의미적 무결성 제약 조건)
- 예시: 한 사원이 주당 모든 프로젝트에서 일할 수 있는 시간은 최대 56시간이다.
SQL에서 CREATE ASSERTION과 CREATE TRIGGER 문장이 이런 목적을 위해 사용된다.
Update Operations on Relations
릴레이션에 대한 기본 갱신 연산은 다음과 같은 세가지가 있다.
- INSERT a tuple
- 릴레이션에 새로운 튜플을 삽입
- DELETE a tuple
- 튜플 삭제
- MODIFY a tuple
- 기존의 튜플의 몇 개 애트리뷰트의 값을 바꾸는데 사용
업데이트 작업으로 인해 무결성 제약 조건이 위반되어선 안된다.
Possible violations for each operation
삽입 연산은4가지 종류의 제약 조건을 위반할 수 있다.
- Domain constraint
- Key constraint
- Referential integrity
- Entity integrity
삭제 연산은 참조 제약 조건만 위반할 수 있다.
- 삭제되는 튜플이 데이터베이스의 다른 튜플에 의해 외래키로 참조되고 있는 경우
갱신(수정)연산은 기본키나 외래키가 아닌 애트리뷰트의 갱신에는 아무런 문제가 없다.
- 외래키 애트리뷰트가 변경된다면 DBMS는 참조되는 릴레이션의 기존 튜플을 변경된 값이 참조되거나 NULL이 되도록 보장해야 한다.
'데이터베이스' 카테고리의 다른 글
More SQL (0) | 2024.04.22 |
---|---|
Basic SQL (0) | 2024.04.16 |
Entity-Relationship Model (0) | 2024.04.09 |
Database System Concepts and Architecture (0) | 2024.04.08 |
Databases and Database Users (0) | 2024.04.07 |