일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바의 정석 기초편 ch7
- 스프링 mvc1 - 스프링 mvc
- 2024 정보처리기사 수제비 실기
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch3
- 2024 정보처리기사 시나공 필기
- 타임리프 - 기본기능
- 스프링 mvc2 - 검증
- jpa - 객체지향 쿼리 언어
- 스프링 입문(무료)
- 자바의 정석 기초편 ch1
- 스프링 고급 - 스프링 aop
- 스프링 mvc2 - 로그인 처리
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch2
- 스프링 mvc2 - 타임리프
- @Aspect
- 스프링 db2 - 데이터 접근 기술
- 게시글 목록 api
- 자바의 정석 기초편 ch8
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch13
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch9
- Today
- Total
나구리의 개발공부기록
1장 - 논리 데이터베이스 설계 핵심 요약 본문
1장 - 논리 데이터베이스 설계 핵심 요약
소소한나구리 2024. 5. 5. 16:112024년도 시나공 필기 책 내용 정리
섹션1. 데이터베이스 설계
1. 개념적 설계(정보 모델링, 개념화)
- 정보의 구조를 얻기 위하여 현실 세계의 무한성과 계속성을 이해하고 다른 사람과 통신하기 위하여 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 요구 분석 단계에서 나온 결과인 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성함
- DBMS에 독립적인 개념 스키마를 설계함
2. 논리적 설계(데이터 모델링)
- 특정 DBMS가 지원하는 논리적 자료 구조로 변환(Mapping) 시키는 과정
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 서로 다른 논리적 스키마를 설계하는 단계
- 트랜잭션의 인터페이스를 설계
3. 물리적 설계(데이터 구조화)
- 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 다양한 데이터베이스 응용에 대해 처리 성능을 얻기 위해 데이터베이스 파일의 저장 구조 및 엑세스 경로를 결정
- 저장 레코드의 형식, 순서, 접근경로, 조회가 집중되는 레코드와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사
- 물리적 설계 시 고려할 사항
- 트랜잭션 처리량
- 응답 시간
- 디스크 용량
- 저장 공간의 효율화
섹션2. 데이터 모델의 개념
1. 관계의 형태
- 일 대 일(1:1): 개체 집합 A의 각 원소가 개체 집합 B의 원소 한 개와 대응하는 관계
- 일 대 다(1:N): 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러 개와 대응하고 있지만, 개체 집합 B의 각 원소는 개체집합 A의 원소 한개와 대응하는 관계
- 다 대 다(N:M): 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러개와 대응하고 개체 집합 B의 각 원소도 개체 집합 A의 원소 여러 개와 대응하는 관계
2. 데이터 모델에 표시할 요소
- 구조(Structure): 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현
- 연산(Operation): 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
- 제약 조건(Constraint): 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
섹션3. E-R(개체-관계)모델
1. E-R 다이어그램(Entity - Relationship Diagram)
- 사각형: 개체(Entity) 타입
- 마름모: 관계(Relationship) 타입
- 타원: 속성(Attribute)
- 이중 타원: 다중값 속성(복합 속성)
- 선,링크: 개체 타입과 속성을 연결
섹션4. 관계형 데이터베이스의 구조
1. 릴레이션(Relation)
- 데이터들을 표(Table)의 형태로 표현한 것으로 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
2. 튜플(Tuple)
- 릴레이션을 구성하는 각각의 행
- 튜플의 수 = 카디널리티(Cardinality) = 기수 = 대응수
3. 속성(Attribute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 속성의 수 = 디그리(Degree) = 차수
4. 도메인(Domain)
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
5. 릴레이션의 특징
- 한 릴레이션에 포함된 튜플들은 모두 상이함
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있음
- 속성은 더 이상 쪼갤 수 없는 원자값만을 저장
섹션5. 관계형 데이터베이스의 제약조건(Key)
1. 후보키(Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식벼랗기 위해 사용하는 속성들의 부분집합
- 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 함
2. 기본키(Primary Key)
- 후보키 중에서 특별히 선정된 주키(Main Key)로 중복 된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
3. 대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미, 보조키라고도 함
4. 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만 최소성은 만족시키지 못함
5. 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되었을 때의 속성 A를 외래키라고함
섹션6. 관계형 데이터베이스의 제약조건(무결성)
1. 개체 무결성(Entity Integrity, 실체 무결성)
- 기본 테이블의 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다는 규정
2. 도메인 무결성(Domain Integrity, 영역 무결성)
- 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
3. 참조 무결성(Referentail Integrity)
- 외래키의 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함
- 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
4. 사용자 정의 무결성(User-Defind Integrity)
- 속성 값들이 사용자가 정의한 제약 조건에 만족해야한다는 규정
섹션7. 관계대수 및 관계해석
1.관계대수의 개요
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 언어
- 릴레이션을 처리하기위해 연산자와 연산규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과도 릴레이션임
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시함
2. 순수 관계 연산자
- Select / 시그마(σ): σ<조건>(R)
- 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
- 릴레이션의 행(가로)에 대항하는 튜플(Tuple)을 추출함
- Project / 파이(π): π<속성리스트>(R)
- 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
- 릴레이션의 열(세로)에 해당하는 속성(Attribute)을 추출함
- Join / ⋈ : R ⋈키속성r = 키속성s S
- 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- Division / ÷: R[속성r ÷ 속성s]S
- X ⊃ Y인 두 개의 릴레이션 R(X), S(Y)가 있을 때, R의 속성이 S의 속성 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
3. 일반 집합 연산자
- 합집합(UNION) / ∪ : 카디널리티는 두 릴레이션의 카디널리티의 합보다 크지않음
- 교집합(INTERSECTION) / ∩ : 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않음
- 차집합(DIFFERENCE) / - : 카디널리티는 릴레이션 R의 카디널리티보다 크지 않음
- 교차곱(CARTESIAN PRODUCT) / x : 디그리는 두 릴레이션의 디그리를 더한것과 같고, 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같음
4. 관계 해석
- 코드(E. F. Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안함
- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지님
- 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등함
- 전칭 정량자(∀) : 가능한 모든 튜플에 대하여(For All)
- 존재 전량자(∃) : 하나라도 일치하는 튜플이 있음(There Exist)
섹션8. 정규화(Normalization)
1. 정규화의 개요
- 함수정 종속성등의 종속성이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정
- 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정이라 할 수 있음
- 데이터베이스의 논리적 설계 단계에서 수행함
2. 정규화의 목적
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만듦
- 효과적인 검색 알고리즘을 생성할 수 있음
- 데이터 중복을 배제하여 이상(Anomaly)의 발생을 방지 및 자료 저장 공간의 최소화가 가능
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄임
3. 이상(Anomaly)의 개념 및 종류
- 정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 발생하는 예기치 못한 곤란한 현상
- 삽입 이상(Insertion Anomaly): 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않는 값들도 함께 삽입되는 현상
- 삭제 이상(Deletion Anomaly): 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄가 일어나는 현상
- 갱신 이상(Update Anomaly): 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
4. 정규화 과정
- 비정규 릴레이션 -> 도메인이 원자값 / 1NF -> 부분적 함수 종속 제거 / 2NF -> 이행적 함수 종속 제거 / 3NF -> 결정자이지만 후보키가 아닌것 제거 / BCNF -> 다치종속 제거 / 4NF -> 조인 종속성 이용 / 5NF
5. 함수적 종속(Funcional Dependency)
- 데이터들이 어떤 기준값에 의해 종속되는 것을 의미
- 학번 → 이름 : 학번에 따라 이름이 결정될 때 이름을 학번에 함수적 종속이라고 함
6. 이행적 종속(Transitive Dependency) 관계
- A → B 이고 B → C일 때 A → C를 만족하는 관계를 의미
섹션9. 반정규화(DeNormalization)
1. 반정규화의 개념
- 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위배하는 행위
2. 중복 테이블 추가 방법
- 집계 테이블의 추가
- 진행 테이블의 추가
- 특정 부분만을 포함하는 테이블의 추가
섹션10. 시스템 카탈로그
1.시스템 카탈로그(System Catalog)
- 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 좁은 의미로는 데이터 사전(Data Dictionary)이라고도 함
- 시스템 카탈로그에 저장된 정보를 메타 데이터(Meta-Data)라고 함
- 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색해 볼수 있음
- INSERT, DELETE, UPDATE문으로 카탈로그를 갱신 하는 것은 허용되지 않음