hyeonga_code
Database_04_데이터베이스 논리적 모델 본문
- 논리적 데이터 모델
- 사용자가 생각하는 데이터베이스의 모습/구조
- E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조입니다.
- 데이터베이스의 논리적 구조 = 데이터베이스 스키마
- 논리 데이터가 관계 데이터보다 더 큰 범위의 의미를 가지지만 대부분 관계 데이터베이스를 사용하므로
유사한 의미로 사용됩니다.
- 논리적 구조는 사용하는 데이터베이스 관리 시스템에 따라 달라집니다.
- 계층 데이터 모델_Hirerarchical Data Model
- 데이터베이스의 논리적 구조가 트리 형태입니다.
- 루트 역할을 하는 개체가 존재합니다.
- 사이클이 존재하지 않습니다.
- 개체 간에 상하 관계가 성립됩니다.
- 부모, 자식 개체
- 부모와 자식 개체는 일대다 관계만 허용됩니다.
- 두 개체 사이에 하나의 관계만 정의할 수 있습니다.
- 다대다 관계를 직접 표현할 수 없습니다.
- 개념적 구조를 모델링하기 어려워 구조가 복잡해질 수 있습니다.
- 데이터의 삽입, 삭제, 수정, 검색이 쉽지 않습니다.
/*
- 출판사 > 책 > 고객 > 구입 도서
*/
- 네트워크 데이터 모델_Network Data Model
- 데이터베이스의 논리적 구조가 네트워크의 형태를 가집니다._방향성 그래프
- 개체 간에는 일대다 관계만 허용됩니다.
- 오너/멤버
- 다대다 관계를 직접 표현할 수 없습니다.
- 두 개체 사이에 여러 관계를 정의할 수 있어 이름으로 구별합니다.
- 구조가 복잡하고 데이터의 삽입, 삭제, 수정, 검색이 쉽지 않습니다.
/*
- 출판사-> 책 <=> 고객
- 고객 개체와 책 개체가 다대다의 관계입니다.
- 구입과 구매라는 두 개의 일대다의 관계를 표현합니다.
- 오너 - 멤버 관계
*/
- 관계 데이터 모델
- 일반적으로 많이 사용되는 논리적 데이터 모델입니다.
- 다대다 관계를 표현할 수 있습니다.
- 2차원 테이블 형태를 가집니다.
- 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장합니다.
- 기본 용어
- 릴레이션_Relation
- 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것입니다.
- 애트리뷰트_Attribute
- 열 = 속성
- 개체에서의 속성입니다.
- 튜플_Tuple
- 행
- 개체에서의 인스턴스입니다.
- 도메인_Domian
- 하나의 속성이 가질 수 있는 모든 값의 집합
- 개체일 때 표시하지 않았던 제약 조건입니다.
- 속성 값을 입력 및 수정할 때 적합성 판단의 기준이 됩니다.
- 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의합니다.
- 널_Null
- 속성 값을 아직 모르거나 해당되는 값이 없음을 표현합니다.
- 차수_Degree
- 하나의 릴레이션에서 속성의 전체 개수를 의미합니다.
- 카디널리티_Cardicality
- 하나의 릴레이션에서 튜플의 전체 개수를 의미합니다.
- 릴레이션의 구성
- 릴레이션 스키마_Relation Schema
= 릴레이션 내포_Relation Intension
- 릴레이션의 논리적 구조입니다.
- 자주 변하지 않는 정적인 특징이 있습니다.
- 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의합니다.
- 릴레이션 인스턴스_Relation Instance
= 릴레이션 외연_Relation Extension
- 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합입니다.
- 상태가 계속 변하는 동적인 특징이 있습니다.
- 데이터베이스의 구성
- 데이터베이스 스키마_Database Schema
- 데이터베이스의 전체 구조를 의미합니다.
- 데이터베이스를 구성하는 릴레이션 스키마의 모음입니다.
- 데이터베이스 인스턴스_Database Instance
- 데이터베이스를 구성하는 릴레이션 인스턴스의 모음입니다.
/*
- 스키마 정보는 메타데이터에 저장되어 있습니다.
- 스키마의 정보를 얻은 뒤 인스턴스를 찾는 순서입니다.
*/
- 릴레이션의 특성
- 튜플의 유일성 : 하나의 릴레이션에는 동일한 튜플이 존재할 수 없습니다.
- 튜플의 무순서 : 하나의 릴레이션에서 튜플 사이의 순서는 의미가 없습니다.
- 데이터베이스에 단편화_Fragmentation
- 여유 공간이 여러 조각으로 나뉘는 현상입니다.
- 인스턴스의 동적인 특성으로 인해 변경될 수 있습니다.
- RAM에 최근에 사용한 데이터를 먼저 출력합니다.(최근 로그인 순)
- 속성의 무순서 : 하나의 릴레이션에서 속성 사이의 순서는 의미가 없습니다.
- 릴레이션을 정의하면서 지정한 순서와 무관하게 나열하여 사용할 수 있습니다.
*** - 속성의 원자성 : 속성 값으로 원자 값만 사용할 수 있습니다.
- 원자성 : 더이상 쪼개질 수 없는 성질입니다.
- 다중성을 허용하지 않습니다. > 릴레이션 작업시 여러 개의 인스턴스로 저장되는 경우가 생길 수 있습니다.
/*
- 학생-(학번), (이름), ((수강과목))
- 수강 과목은 여러 개가 있을 수 있습니다.
> 릴레이션 작성
학번 이름 수강과목
-----------------------------
123 학생1 수학,영어,국어 '(X)'
>>
학번 이름 수강과목1 수강과목2 수강과목3
--------------------------------------------
...
- 수강과목을 3개까지만 들을 수 있습니다.
>>>
1) 학생 릴레이션 2) 수강과목 릴레이션
학번 이름 학번 수강과목
------------- -----------------
123 학생1 123 수학
123 영어
123 국어
*/
- 키_Key
- 릴레이션에서 튜플들을 유일하게 구별할 수 있는 속성
- 특성
- 유일성_Uniqueness
- 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가지고있어야 합니다.
- 최소성_Minimality
- 꼭 필요한 최소한의 속성들로만 키를 구성합니다.
-
- 종류
슈퍼키(유일성)>후보키(최소성)>기본키, 대체키
- 슈퍼키_Super Key
- 유일성을 만족하는 속성입니다.
- 고객 아이디
- 고객 아이디, 이름
- 고객 이름, 주소
- 고객 아이디, 비밀번호
- 후보키_Candidate Key
- 유일성과 최소성을 만족하는 속성입니다.
- 기본키_Primary Key
- 후보키 중에서 기본적으로 사용하기 위해 선택한 하나의 키입니다.
- 밑줄로 표시합니다.
- 고객 아이디
- 외래키_Foreign Key
- 다른 릴레이션의 기본키를 참조하는 속성입니다.
- 릴레이션들 간의 관계를 표현합니다.
- 참조하는 릴레이션 : 외래키를 가진 릴레이션
- 참조되는 릴레이션 : 외래키가 참조하는 기본키를 가진 릴레이션
- 하나의 릴레이션에 외래키는 두 개 이상 지정할 수 있으며 기본키로 사용할 수 있습니다.
- 기본 키가 두 개가 되는 것이 아니라 두 개의 기본 키를 합쳐서 하나의 기본키로 사용되는 것입니다.
- 외래키 속성과 참조하는 기본키 속성의 이름은 달라도 도메인은 동일해야 합니다.
- 대체키_Alternate key
- 기본키로 선택되지 못한 후보키입니다.
- 키본키와 대체의 예 : 고객 릴레이션
- 관계 데이터 모델의 제약
- 무결성 제약 조건_Integrity Constraint
- 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
- 무결성
- 데이터가 결함이 없는 상태입니다.
- 정확하고 유효하게 유지합니다.
- 개체 무결성 제약 조건
- 기본키를 구성하는 모든 속성은 널 값을 가질 수 없습니다.
- 참조 무결성 제약 조건
- 외래키는 참조할 수 없는 값을 가질 수 없습니다.
- 외래키 속성이 널 값을 가진 경우 참조 무결성 제약 조건을 위반한 것이 아닙니다.
- 비회원, 탈퇴한 고객
'Oracle Database' 카테고리의 다른 글
Database_06_오라클 데이터베이스 사용하기 (0) | 2023.07.08 |
---|---|
Database_05_관계형 데이터베이스 (0) | 2023.07.07 |
Database_03_데이터베이스 개념 모델링, 개체-관계 모델 (0) | 2023.07.05 |
Database_02_데이터 모델링 (0) | 2023.07.04 |
Database_01_데이터베이스 관리 시스템 (0) | 2023.07.03 |