본문 바로가기

SQL30

정규화(Normalization), 정규형(Normal Form) 1. 정규화와 정규형정규화는 이상현상(아노말리)이 발생하지 않는 릴레이션을 만들어가는 과정이고, 정규형은 정규화의 결과물이다. 2. 정규형 종류제1정규형 (원소값)제2정규형 (함수 종속)제3정규형 (함수 종속)BC정규형 (함수 종속)제4정규형 (다가 종속)제5정규형 (조인 종속) 제1~3 정규형이 정규화 대상의 대부분을 차지하지만 나머지 정규형도 중요하다. 몇 정규형을 구분하는 것은 중요하지 않다. 몇 정규형이냐를 알려고 정규화를 하지는 않는다. 중요한 것은 중복이 발생하지 않고 아노말리(이상현상)가 발생하지 않도록 함수 종속에 근거해서 모델링을 수행하는 것이다. 제2정규형, 제3정규형, BC정규형은 함수 종속 개념을 기반으로 수행되며 제4정규형은 다가 종속 개념을 기반으로 한다. 조인 종속이 존재하면 .. 2025. 2. 19.
함수 종속 함수 종속은 릴레이션 내에 존재하는 속성 간의 종속성을 의미한다.정규화를 이해하려면 함수 종속을 이해해야 한다. 함수 종속은 관계형 모델을 설계할 때 가장 중요한 데이터 종속성(Data Dependency) 이다. 어떤 집합 데이터이든 그 집합을 대표할 수 있는 속성은 존재한다. 대표 속성(식별자)과 나머지 속성 사이의 연관 관계가 함수 종속이다. 릴레이션에서 A속성의 값이 B속성의 값을 유일하게 식별할 수 있다면 B속성은 A속성에 함수적으로 종속됐다고 한다. 함수 종속은 밀접한 속성을 모아 하나의 릴레이션으로 만드는 체계적인 방법이다. 정규화가 잘 됐는지, 즉 함수 종속에 의해 집합이 잘 분해됐는지는 좋은 모델을 구별하는 기준이되고 함수 종속은 좋은 모델을 만드는 도구가 된다. 속성 간의 종속성을 규명.. 2025. 2. 18.
서브타입의 물리모델 변환 - (2) 1. 슈퍼타입 엔터티가 상위 엔터티인 서브타입 모델 2. 서브타입 엔터티가 상위 엔터티인 서브타입 모델 2-1 배타 관계를 가지는 서브타입 모델고객 엔터티는 개인고객과 법인고객의 공통속성을 포함하는 슈퍼타입이다. 개인고객의 주민등록번호와 법인고객의 법인등록번호의 의미를 통합한 고객고유번호라는 속성을 사용한다.자연키인 주민등록번호, 법인등록번호는 가능한 식별자로 사용하지 않는 것이 좋다.고객유형코드, 고객고유번호가 업무 식별자이다. 다른 엔터티가 참조할 가능성이 크므로 참조를 편하게 하기 위해 고객번호라는 인조 식별자를 사용한다.CREATE TABLE 개인고객( 주민등록번호 VARCHAR(14) PRIMARY KEY , 생년월일 DATE , 성별 VARCHAR(1) CHECK (성별 IN ('F', .. 2025. 2. 11.
서브타입의 물리모델 변환 - (1) 1. 타입- 분할- 통합- 혼합2. 모델링 조건- 모든 속성은 필수- 교육과정은 과정명 정보를 저장- 부서는 부서명 정보를 저장- 정규직 사원은 사원번호, 사원명, 입사일자, 부서, 월급여, 연차휴가 정보를 저장- 계약직 사원은 사원번호, 사원명, 입사일자, 부서, 시급여, 계약종료일 정보를 저장- 정규직 사원은 반드시 하나의 교육과정을 이수 (여러 과정 이수 불가)- 정규직 사원은 여러명의 가족 정보를 저장- 가족은 주민등록번호, 이름 정보를 저장3. 분할타입 모델링정규직사원, 계약직사원 사원번호가 중복되지 않도록 하는 장치가 필요 (트리거, 로직) 4. 통합타입 모델링사원 테이블의 사원구분코드는 ‘정규직’, ‘계약직’을 의미한다. 정규직사원 정보를 저장할 때는 시급여, 추가수당, 계약기간 속성이 nu.. 2025. 2. 11.
Supertypes & Subtypes 슈퍼타입과 서브타입 유사한 엔터티를 일반화하면 슈퍼타입과 서브타입 엔터티가 생긴다. 공통 속성은 슈퍼타입에 속하게 되고 고유한 속성은 서브타입으로 남게 된다. 1. 서브타입서브타입에 대한 일반적인 정의는 서브타입은 서로 배타적이어야 하며 모든 서브타입의 합집합이 전체 집합이 돼야 한다. 2. 서브타입의 종류이건 슈퍼 타입의 하나의 인스턴스가 여러 서브타입에 동시에 속할 수 있는지 없는지에 대한 구분이다. 즉, 서브타입에 최소 1개 이상의 인스턴스가 존재해야 한다. - Exclusive 배타 서브타입- Inclusive 중복 서브타입2-1 Exclusive 배타 서브타입서브타입 부분 집합 간에 공통부분을 갖지 않는 서브타입을 말한다. 슈퍼 타입의 하나의 인스턴스는 하나의 서브타입과 관계가 존재하므로 고객은 개인고객이거나 .. 2025. 2. 11.
Code 코드 데이터를 구분하기 위해 사용하며 데이터의 일관성을 유지한다. 코드로 관리할 수 있는 데이터는 가능한 코드로 관리하는 것이 바람직하다.   고객의 유형을 관리하는 속성에 ‘개인’, ‘개인 고객’, ‘개인고객’ 등으로 관리되면 일관성이 없다. ‘01’이라는 코드를 ‘개인 고객’ 으로 정하면 일관성을 유지할 수 있다. 하나의 코드에 여러 의미가 포함되지 않도록 한다. 성질이 다르면 다른 코드를 부여한다. 여부, 유무 성격의 속성( Attributes 속성 4. 여부, 유무 속성 참조)은 코드로 관리하지 않는다.  1. 속성 코드와 식별자 코드코드 속성은 속성 중에서 사전에 약속한 코드값이 사용된 속성을 의미한다. ('01'은 개인, '02'는 법인) 일반적으로 코드는 공통 코드 엔터티에서 통합 관리된다. 식별.. 2025. 2. 10.