※ 정규화

               1. 정규화란? - 데이터 정합성을 위해 일정한 규칙대로 엔터티를 작은 단위로 분리하는 과정. 데이터 조회성능은 처리조건에 따라                          상향되거나 하향될 수 있지만 입력, 수정, 삭제 성능은 일반적으로 향상됨

              * 정합성 - 데이터의 정확성과 일관성을 유지하고 보장 

              * 지나친 정규화는 데이터 조회 시 JOIN의 수가 늘어나 오히려 성능을 저하시키므로 적당히 정규화를 실시

 

        2. 정규화 절차

             ① 제1정규화(1NF) - 모든 속성은 속성값을 하나만 갖고 유사한 속성이 반복되지 않게 엔터티를 분리

 

              * 속성값을 하나만 가지도록 엔터티 분리

 

                        * 유사한 속성이 반복되지 않게 엔터티 분리

             

            ② 제2정규화(2NF) - 제1정규형을 만족하고 주식별자가 2개 이상 엔터티가 주식별자에 대한 부분종속을 갖고 있을 경우 엔터티 분리

 

             * 상품명이 주식별자 중 상품코드 속성에만 종속하므로 부분종속을 갖는다. 이를 해결하기 위해 아래와 같이 엔터티를 분리한다.

 

            ③ 제3정규화(3NF) - 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.

 

             * 일반속성인 학과가 다른 일반속성인 학과코드에 종속되므로 아래와 같이 엔터티를 분리한다.

 

             ④ 보이스-코드 정규화(BCNF) - 제3정규형을 만족하고 주식별자가 보조식별자에 종속된 경우 엔터티 분리

 

              * 주식별자인 수강과목이 보조식별자인 지도교수에 종속되므로 아래와 같이 엔터티를 분리한다.

※ 식별자 

        1. 식별자란? - 각각의 인스턴스를 구분 가능하게 만들어주는 대표격인 속성을 의미

 

        2. 주식별자

             ① 주식별자란? - 기본키(Primary Key, PK)에 해당하는 속성. 하나의 속성이 주식별자가 될 수도 있고 여러 개의 속성이 주식별자가                         될 수도 있음

             ② 주식별자 특징

                  ㉮ 유일성 - 유일하게 각 인스턴스에 유니크함을 부여하여 식별이 가능토록 함

                  ㉯ 최소성 - 주식별자를 구성하는 속성 수는 1개여야 함             

                        Ex) 학번 + 랜덤번호 X

                  ㉰ 불변성 - 속성값이 되도록 변하지 않아야 함

                  ㉱ 존재성 - 속성값이 NULL값알 수 없음

 

        3. 식별자 분류

             ① 대표성 여부

                  ㉮ 주식별자(기본키) - 엔터티를 대표하는 식별자로 다른 엔터티와 참조 관계로 연결됨

                  ㉯ 보조식별자(후보키) - 인스턴스를 식별하나 대표 식별자가 아니므로 다른 엔터티와 참조관계로 연결되지 않음

             ② 엔터티 내 생성 여부

                  ㉮ 내부식별자 - 엔터티 내부에서 스스로 생성된 식별자

                  ㉯ 외부식별자 - 다른 엔터티와의 관계를 통해 생성되는 식별자

             ③ 단일 속성의 여부

                  ㉮ 단일식별자 - 하나의 속성으로 구성된 식별자

                  ㉯ 복합식별자 - 두 개 이상의 속성으로 구성된 식별자

             ④ 대체 여부

                  ㉮ 원조식별자/본질식별자 - 업무 프로세스에 존재하는 식별자

                  ㉯ 대리식별자/인조식별자 - 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자

                        Ex) 주문번호 = 순번 + 주문일자

 

        4. 식별자관계 vs. 비식별자관계

            ① 식별자관계 - 부모 엔터티의 주식별자가 자식 엔터티의 주식별자가 되는 관계. 부모 엔터티가 존재해야 자식 엔터티를 생성하며                        단일 식별자인지 복합 식별자인지에 따라 1:1관계나 1:M관계로 결정됨 

            ② 비식별자관계 - 부모 엔터티의 주식별자가 자식 엔터티의 일반 속성이 되는 관계. 일반 속성의 속성값은 NULL값을 가질 수                              있으므로 부모 엔터티가 없는 자식 엔터티 생성이 가능하고 자식 엔터티가 존재하는 상태에서 부모 엔터티가 삭제 가능. 

 

※ 관계(Relationship)

               1. 관계란? - 엔터티와 엔터티와의 관계를 의미

           

             2. 관계의 분류

              ① 존재관계 - 존재 자체로 연관성이 있는 관계

                   

              ② 행위관계 - 특정한 행위를 함으로써 연관성이 생기는 관계 

 

              3. 관계의 표기법

              ① 관계명(Membership) - 엔터티와 엔터티가 어떤 관계를 맺고 있는지 나타내주는 문장으로 명확하게 표현해야 하며                                        현재형이어야 한다. 각 엔터티의 관점에서 관계명을 하나씩 가지므로 모든 관계는 두 개의 관계명을 가짐

 

              ② 관계차수(Cardinality) - 각 엔터티에서 관계에 참여하는 수

                    ㉮ 1:1 관계

                    ㉯ 1:N 관계

                    ㉰ M:N 관계

              ③ 관계선택사양(Optionality) - 이 관계가 필수요소인지 선택요소인지의 여부

                    ㉮ 필수적 관계 - 참여자가 반드시 존재해야 하는 관계 

                    ㉯ 선택적 관계 - 참여자가 없을 수도 있는 관계

 

※ 속성(Attribute)

        1. 속성이란? - 사물이나 개념의 특징을 설명해 줄 수 있는 항목들. 의미상으로 더 이상 쪼개질 수 없는 최소의 데이터이어야 하고                          프로세스에 필요한 데이터이어야 함

 

              2. 속성값 - 각각의 속성은 한 개의 속성값을 가지며 속성값은 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터를                          나타냄. 만약 한 개의 속성이 다수의 속성값을 갖는 경우 별도의 엔터티를 만들어 분리시킴

 

        3. 엔터티, 인스턴스, 속성, 속성값의 관계

             • 엔터티 ⊃ 인스턴스 ⊃ 속성 

             • 한 개의 엔터티는 두 개 이상의 인스턴스를 가짐 

             • 한 개의 인스턴스는 두 개 이상의 속성을 가짐

             • 한 개의 속성은 한 개의 속성값을 가짐

 

        4. 속성의 분류

             ① 특성에 따른 분류

                  ㉮ 기본속성(Basic Attribute) - 엔터티의 가장 일반적인 속성으로 업무 프로세스 분석을 통해 바로 정의가 가능한 속성들이 속함.                          일부 설계속성과 파생속성을 제외한 모든 속성이 기본속성에 해당함

                           Ex) 이름, 전화번호

                  ㉯ 설계속성(Designed Attribute) - 업무에 존재하지 않지만 설계과정에서 합리적인 모델링을 위해 인위적으로 만들어진                                    속성으로 중복될 수 있는 인스턴스에 유니크함을 부여

                        Ex) 학번, 고객번호

                    ㉰ 파생속성(Derived Attribute) - 다른 속성으로부터 파생된 속성을 의미하는 것으로 계산된 값이나 가공된 값이 이에 속함.                                데이터 조회 시 빠른 성능을 보장하기 위해 본래의 속성값을 계산하여 따로 저장할 수 있도록 만든 속성. 파생속성을                                    설계할 경우 반드시 데이터의 정합성이 고려되어야 하고 계산 과정에서 누락되는 데이터가 생기는 경우 결괏값이                                        엉터리가 될 수 있는 위험요소가 존재하므로 불가피하게 필요한 경우에만 정의하는 것이 바람직함.

 

            ② 구성방식에 따른 분류

                  ㉮ PK(Primary Key) 속성 - 엔터티에 속한 각 인스턴스에 유니크함을 부여

                  ㉯ FK(Foreign Key) 속성 - 다른 엔터티와 관계를 맺게 해주는 매개체 역할을 하는 속성으로 다른 엔터티의 PK값과 일치하거나                            NULL값을 가질 수 있음

                  ㉰ 일반속성 - PK, FK를 제외한 나머지 속성

 

       5. 도메인 - 데이터 모델링에서 속성이 가질 수 있는 속성값의 범위

 

+ Recent posts