

기본 키(Primary Key)
릴레이션 내에서 각 튜플을 고유하게 식별
외래 키(Foreign Key)
다른 릴레이션의 기본 키를 참조하여 데이터 간의 관계를 표현

<고객> 테이블과 <주문서> 테이블은 <주문> 테이 블을 관계로 하여 연결되어 있음
<고객> 테이블의 '고객번호'와 <주문서> 테이블의 '주문번호'는 기본키
<주문> 테이블의 '고객번호'화 '주문번호'느 외래키

데이터베이스의 전체 구조를 정의한 설계
데이터베이스를 구성하는 릴레이션 스키마(테이블의 구조와 속성들)의 모음
데이터베이스의 정적인 요소로, 데이터베이스 설계와 유지보수의 기본 틀을 제공
예) 테이블 이름, 속성 이름, 속성 타입, 제약 조건 등이 포함됨
데이터베이스의 실제 데이터 상태를 나타냄
데이터베이스를 구성하는 릴레이션 인스턴스의 모음
동적인 요소로, 시간이 지남에 따라 데이터의 변경에 따라 달라질 수 있음
예) 특정 시점에 테이블에 저장된 데이터의 실제 내용
데이터를 2차원 테이블 구조로 저장한 것
하나의 개체에 관한 데이터를 표현하며, 파일 관리 시스템 관점에서 파일에 대응

튜플의 유일성
하나의 릴레이션 내에는 동일한 튜플이 존재할 수 없음
튜플의 무순서
릴레이션 내의 튜플 간의 순서는 중요하지 않음
릴레이션의 변동성
튜플의 삽입, 삭제 등의 작업을 통해 릴레이션은 시간에 따라 변할 수 있음
속성의 무순서
릴레이션 내의 속성 간의 순서도 중요하지 않음
속성의 원자성
속성값은 더 이상 쪼갤 수 없는 원자값 만을 저장해야 함
속성의 유일한 식별
속성의 명칭은 유일해야 하며, 속성을 구성하는 값은 동일할 수 있음. ⇒ 즉, 속성 이름은 중복될 수 없지만, 속성 값은 중복될 수 있음
키(Key)
릴레이션을 구성하는 튜플을 유일하게 식별하기 위해, 속성들의 부분집합을 키로 설정함
데이터베이스에서 튜플을 서로 구분할 수 있는 기준이 되는 속성

유일성(Uniqueness)
하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함
최소성(Minimality)
꼭 필요한 최소한의 속성들로만 키를 구성함
유일성을 만족하는 속성
유일성과 최소성을 만족하는 속성
후보키 중에서 기본적으로 사용하기 위해 선택한 키
정의
후보키 중에서 기본적으로 사용하기 위해 선택된 한나위 키
특징
한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성으로, 중복된 값과 NULL 값을 가질 수 없음
후보키 중에서 기본키로 선택되지 못한 후보키
정의
다른 릴레이션의 기본키를 참조하는 속성
값의 제약
외래키 값은 참조된 릴레이션의 속성에 존재하는 값이거나 NULL 값이어야 함
⇒ 외래키 값은 참조된 릴레이션의 속성에 없는 값으로
입력할 수 없음
이름과 도메인
외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 됨.
BUT 두 속성의 도메인은 같아야 함
⇒ 데이터 타입과 값의 범위가 일치해야 함
다수의 외래키
하나의 릴레이션에는 여러 개의 외래키가 존재할 수 있음. 외래키는 기본키로도 사용될 수 있음.
관계 표현
참조하는 릴레이션 : 외래키를 가진 릴레이션
참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션
속성(Attribute)에 대한 제약
원자성(Atomicity)
속성 값은 원자적이어야 하며, 더 이상 나눌 수 없는 단일값이어야 함
도메인 정의
속성 값은 미리 정의된 도메인 내의 값이어야 하며, 이 도메인은 데이터 타입, 범위, 형식 등을 포함함.
복합 속성(Composite Attribute)과 다중값 속성(Multivalued Attribute)은 허용되지 않음.
NULL 값 허용
도메일 제약이 Not Null로 설정되지 않은 경우, NULL 값은 허용됨

기본키(Primary Key)에 대한 제약
데이터베이스에서 각 릴레이션의 기본 키(Primary Key)에 대한 규칙을 정의함
기본 키(PK - Primary Key) 는 NOT NULL & UNIQUE이어야 함
NOT NULL
기본 키는 NULL 값을 가질 수 없음
⇒ 기본 키 속성은 반드시 값을 가져야 하며,
이는 각 튜플이 고유하게 식별될 수 있도록 보장함
UNIQUE
기본 키는 릴레이션 내에서 고유해야 함
⇒ 기본 키 속성의 값은 중복될 수 없으며,
각 튜플은 서로 다른 기본 키 값을 가져야 함
고유 식별성
개체 무결성 제약은 데이터베이스의 각 개체(튜플)가 고유하게 식별될 수 있도록 하여 데이터의 무결성을 유지하는 데 기여함
릴레이션(Relation)에 대한 제약
데이터베이스에서 릴레이션의 각 튜플(행)을 고유하게 식별할 수 있어야 함


외래키(Foreign Key)에 대한 제약
데이터베이스에서 각 릴레이션의 기본 키(Primary Key)에 대한 규칙을 정의함
외래 키 정의
한 릴레이션(R1)의 외래 키는 다른 릴레이션(R2)의 기본 키를 참조함
참조 무결성
R1의 외래 키 값은 R2의 기본 키 값 중 하나여야 하며, R2에 존재하지 않는 값은 사용할 수 없음
자기 참조
외래 키는 자기 자신이 속한 릴레이션을 참조할 수 있음
예) 직원 테이블에서 상사와 직원 간의 관계를 나타낼 수 있음
무결성 유지
기본 키가 삭제되면 해당 외래 키를 참조하는 튜플도 함께 삭제되거나 수정되어야 하며, 이를 통해 데이터의 일관성을 장함
무결성(Integrity)
데이터베이스에 저장된 데이터 값이 현실 세계의 실제 값과 일치하는 정확성
무결성 제약 조건
데이터베이스 내의 데이터 정확성을 보장하고 부정확한 자료가 저장되는 것을 방지하기 위한 규칙
데이터 품질에 직접적인 영향을 미치므로,데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야 함
데이터를 생성, 수정, 삭제할 때 무결성 조건을 확인하는 코드를 데이터 조작 프로그램에 추가함
예) 데이터 유효성 검사, 특정규칙 적용
장점
데이터 유효성 검사를 맞춤형으로 설계 가능
사용자 정의와 같은 복잡한 무결성 조건의 구현이 가능
단점
데이터 유효성 검사를 여러 곳에서 구현하므로
중복성이 발생할 수 있고 유지보수의 어려움
데이터 조작 이벤트가 발생할 때 자동으로 실행됨
예) INSERT, UPDATE, DELETE
특정 조건을 충족하지 않는 데이터 조작을 거부하거나, 데이터 조작 시 일관성을 검사함
장점
데이터 조작 이벤트 발생 시 트리거가 자동으로
실행되므로 개발자가 별도의 코드를 작성할 필요가 없음
단점
운영 중 변경이 어려움.
사용상 주의가 필요함.
데이터베이스에 제약 조건을 설정하여 무결성을 유지함
장점
통합 관리 가능,
간단한 선언으로 구현 가능,
변경 용이,
오류 데이터 발생 방지
단점
복잡한 제약 조건의 구현과 예외적인 처리가 불가능
프로그램이 완성되고 데이터가 저장된 후에 무결성을 정의하면 많은 비용이 발생할 수 있으므로, 데이터베이스 구축 과정에서 미리 정의하는 것이 중요함
데이터 무결성은 애플리케이션, 데이터베이스 트리거, 제약 조건 등을 통해 강화할 수 있음