hyeonga_code

Database_04_데이터베이스 논리적 모델 본문

Oracle Database

Database_04_데이터베이스 논리적 모델

hyeonga 2023. 7. 6. 05:59
반응형

 

  - 논리적 데이터 모델
        - 사용자가 생각하는 데이터베이스의 모습/구조
        - 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
                        - 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
                        - 무결성
                            - 데이터가 결함이 없는 상태입니다.
                            - 정확하고 유효하게 유지합니다.
                        - 개체 무결성 제약 조건
                            - 기본키를 구성하는 모든 속성은 널 값을 가질 수 없습니다.
                        - 참조 무결성 제약 조건
                            - 외래키는 참조할 수 없는 값을 가질 수 없습니다.
                            - 외래키 속성이 널 값을 가진 경우 참조 무결성 제약 조건을 위반한 것이 아닙니다.
                                - 비회원, 탈퇴한 고객

반응형