:E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조 데이터베이스의 논리적 구조 = 데이터베이스 스키마(schema)
:사용자가 생각하는 데이터베이스의 모습 또는 구조
:관계 데이터 모델, 계층 데이터 모델, 네트워트 데이터 모델
: 개념적 구조=>논리적 구조 표현, 일반적으로 많이 사용되는 논리적 데이터 모델
: 데이터베이스의 논리적 구조 - 한 개체 데이터 : 한 릴레이션 => 2차원 테이블 형태
-데이터베이스 스키마(database schema)
:데이터베이스 전체 구조
:데이터베이스 구성하는 릴레이션 스키마 모음
-릴레이션 인스턴스(database intence)
:데이터베이스 구성하는 릴레이션 인스턴스 모음
: 하나의 개체에 관한 데이터를 2차원 테이블 구조로 저장
: 파일 관리 시스템 관점 --> file
-릴레이션 스키마(relation schema/relation intension)
:릴레이션의 논리적 구조
:릴레이션 이름과 릴레이션에 포함된 모든 속성 이름으로 정의
:특징 - 정적
-릴레이션 인스턴스(relation intence/relation extension)
:어느 한 시점에 릴레이션에 존재하는 튜플들의 집합
:특징 - 동적
-유일성(t) : 한 릴레이션에는 동일한 튜플 존재 X
-무순서(t) : 한 릴레이션에서 튜플 사이 순서는 무의미
-무순서(a) : 한 릴레이션에서 속성 사이 순서는 무의미
-원자성(a) : 속성 값으로 원자 값만 사용 가능
: 릴레이션에서 튜플들을 유일하게 구별하는 속성/속성 집합
-유일성(uniqueness) : 한 릴레이션에서 모든 튜플은 서로 다른 키 값 가져야 함
-최소성(minimality) : 꼭 필요한 최소한의 속성들로만 키 구성
기본키Primary key
외래키Foreign key
:외래키 속성과 외래키가 참조하는 기본키 속성 이름 달라도 되지만 도메인은 같아야
:한 릴레이션에는 외래키 여러 개 존재 가능, 외래키=>기본키 사용도 가능
:같은 릴레이션 기본키를 참조하는 외래키 정의도 가능, 널 값 가질 수도 있음(같은 데서 참조할 때)
대체키Alternate key
후보키Cardidate key
슈퍼키Super key
: 릴레이션-열
: 파일 관리 시스템 관점 --> field
: 릴레이션-행
: 파일 관리 시스템 관점 --> record
:한 속성이 가질 수 있는 모든 값의 집합
: 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의
: 속성 값을 입력/수정할 때 적합성의 판단 기준이 됨
: 속성 값을 아직 모르거나 해당되는 값 없음을 표현
: 한 릴레이션에서 속성의 전체 개수
: 한 릴레이션에서 튜플의 전체 개수
:데이터 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
:무결성 - 데이터를 결함 없는 상태, 즉 정확하고 유효하게 유지하는 것
:기본키를 구성하는 모든 속성은 널 값을 가질 수 없음
:외래키는 참조할 수 없는 값을 가질 수 없음 ex.고객아이디에 없는 주문 고객
*외래키 속성이 널 값이라고 해서 규칙 위반에 해당하진 않음
:데이터베이스의 논리적 구조 - tree 형태
:루트 역할 하는 개체 존재, 사이클 존재 X
:개체 간 상하 관계 성립 ex.출판사-책-고객-구입도서/부서-직원-상품/고객
-부모 개체 / 자식 개체
-부모와 자식 개체는 일대다 관계만 허용됨 => : 다대다 관계 직접 표현X
: 두 개체 사이에 하나의 관계만 정의 가능
: 개념적 구조 모델링 어려워 구조 복잡해질 수 있음
: 데이터 삽입/삭제/수정/검색 용이X
:데이터베이스의 논리적 구조가 네트워크, 즉 그래프 형태
:개체 간에는 일대다 관계만 허용됨 => owner / memeber
:두 개체 사이에 여러 관계를 정의할 수 있어 이름으로 구별
:다대다 관계 직접 표현할 수 없음
:구조가 복잡하고 데이터의 삽입/삭제/수정/검색 용이X
변환 규칙을 순서대로 적용하되, 해당되지 않는 규칙은 제외
각 개체를 한 릴레이션으로 변환
개체 속성이 복합 속성인 경우 - 복합 속성을 구성하고 있는 단순 속성만 릴레이션 속성으로 변환
관계에 참여하는 개체를 규칙 1에 따라 릴레이션으로 변환한 후 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고 외래키들을 조합하여 관계 릴레이션의 기본키로 지정
일대다(1:n) 관계에서 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정
관계의 속성들도 n측 개체 릴레이션에 포함
n측 개체 릴레이션은 외래키 포함 기본키 지정
=> 약한 개체는 오너 개체에 따라 존재 여부가 결정되므로 오너 개체 기본키 이용해 식별해야 함
관계에 참여하는 개체 릴레이션들이 서로의 기본키를 주고 받아 외래키로 지정
관계의 속성들도 모든 개체 릴레이션에 포함시킴
불필요한 데이터 중복이 발생할 수 있음
관계에 필수적으로 참여하는 개체 릴레이션에만 외래키 포함 (+관계 속성들)
관계 이름을 릴레이션 이름으로 사용하고 관계에 참여하는 두 개체의 속성들을 관계 릴레이션에 모두 포함
두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정
: 다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와 새로운 릴레이션에 포함시킴 => 불필요한 중복 제거, 릴레이션 특성 만족
: 새로운 릴레이션 기본키 => 다중 값 속성, 외래키 조합하여 지정
ex. 사원 - 사원번호! / 사원명 / 직위 / ((부하직원))
=> 사원 릴레이션 - 사원번호! / 사원명 / 직위
=> 사원-부하 릴레이션 - 사원번호!(F,K) / 부하직원!(P,K)
속성이 많은 관계는 유형에 상관없이 릴레이션으로의 변환을 고려할 수 있음