Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch13
- jpa - 객체지향 쿼리 언어
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch6
- 스프링 mvc1 - 서블릿
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch11
- 스프링 mvc2 - 검증
- 게시글 목록 api
- 자바의 정석 기초편 ch12
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch5
- 스프링 입문(무료)
- 타임리프 - 기본기능
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch4
- 스프링 고급 - 스프링 aop
- 스프링 mvc1 - 스프링 mvc
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch3
- @Aspect
- jpa 활용2 - api 개발 고급
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch2
Archives
- Today
- Total
나구리의 개발공부기록
1장 - 논리 데이터베이스 설계 | 섹션4. 관계형 데이터베이스의 구조, 섹션5. 관계형 데이터베이스의 제약 조건 - 키(key), 섹션5. 관계형 데이터베이스의 제약 조건 - 무결성, 섹션6. 관계대수 및 관계해석 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 3강 - 데이터베이스 구축
1장 - 논리 데이터베이스 설계 | 섹션4. 관계형 데이터베이스의 구조, 섹션5. 관계형 데이터베이스의 제약 조건 - 키(key), 섹션5. 관계형 데이터베이스의 제약 조건 - 무결성, 섹션6. 관계대수 및 관계해석
소소한나구리 2024. 5. 4. 21:012024년도 시나공 필기 책 내용 정리
섹션4. 관계형 데이터베이스의 구조
1. 관계형 데이터베이스의 개요
- 1970년 IBM에 근무하던 코드(E. F. Codd)에 의해 처음 제안됨
- 관계형 데이터베이스를 구성하는 개체(Entity)나 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현
- 릴레이션은 개체를 표현하는 개체 릴레이션,관계를 나타내는 관계 릴레이션으로 구분할 수 있음
- 장점 : 간결하고 보기 편리하며 다른 데이터베이스로의 변환이 용이함
- 단점 : 성능이 다소 떨어짐
2. 관계형 데이터베이스의 Relation 구조
- 릴레이션은 데이터들을 표(Table)의 형태로 표현한 것으로 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- 튜플(Tuple)
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성됨
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티(Cardinality)또는 기수, 대응수 라고함
- 속성(Attribute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
- 개체의 특성을 기술함
- 속성의 수를 디그리(Degree)또는 차수라고 함
- 도메인(Domain)
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용됨
- ex) 성별 애트리뷰트의 도메인은 '남'과'여'로 그 외의 값은 입력될 수 없다 등등
3. 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없으므로 릴레이션에 포함된 튜플들은 모두 상이 함
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있음
- 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키(Key)로 설정함
- 속성의 값은 논리적으로 덩 이상 쪼갤 수 없는 원자값만을 저장함
섹션5. 관계형 데이터베이스의 제약 조건 - 키(key)
1. 키(Key)의 개념 및 종류
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 애트리뷰트
- 키의 종류에는 후보키, 기본키, 대체키, 슈퍼키, 외래키 등이 있음
2. 후보키(Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성
- 하나의 릴레이션내에는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재함
- 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족 시켜야함
- 유일성(Unique) : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
- 최소성(Minimality) : 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성으로만 구성되어야 함
3. 기본키(Primary Key)
- 후보키 중에서 특별히 선정된 주키(Main Key)로 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- 기본키는 후보키의 성질을 갖음(유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키)
- 기본키는 NULL의 값을 가질 수 없음, 즉 튜플에서 기본키로 설정된 속성에는 NULL값이 있어서는 안됨
4. 대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미
5. 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만 최소성은 만족시키지 못함
- ex) 학번 + 주민번호를 사용하여 슈퍼키를 만들면 다른 튜플들과 구분 할 수 있는 유일성은 만족하지만, 학번이나 주민번호 하나만 가지고도 다른 튜플들을 구분할 수 있으므로 최소성은 만족시키지 못함
6. 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미
- 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계표현하는데 중요한 도구
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되었을 때 속성 A를 외래키라고 함
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없음
- 참조 무결성과 관련이 있음
섹션5. 관계형 데이터베이스의 제약 조건 - 무결성
1. 무결성(Integrity)의 개념 및 종류
- 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미
- 무결성 제약 조건은 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약조건을 말함
- 개체 무결성, 도메인 무결성, 참조 무결성, 사용자 정의 무결성 등이 있음
2. 개체 무결성(Entity Integrity, 실체 무결성)
- 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL값이나 중복값을 가질 수 없다
- ex) 학생 릴레이션의 학번이 기본키로 정의되면 튜플을 추가할 때 다른 필드에는 값을 입력하지 않아도 되지만 학번 속성에는 반드시 값을 입력해야하고 이미 한번 입력한 속성 값을 중복하여 입력할 수 없음
3. 도메인 무결성(Domain Integrity, 영역 무결성)
- 주어진 속성 값이 정의된 도메인에 속한 값이여야 한다는 규정
- ex) 수강 릴레이션의 과목명 속성에 영어, 수학, 전산 세가지만 입력되도록 유효값이 지정된 경우 반드시 해당 값만 입력해야 함
4. 참조 무결성(Referential Integrity)
- 외래키값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함
- 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
- 외래키와 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 함
- ex) 수강 릴레이션의 학번속성이 학생 릴레이션의 학번 속성을 참조하는 외래키로 지정 되었을 경우 수강 릴레이션의 학번 속성에는 학생 릴레이션의 학번 속성에 없는 값은 입력할 수 없음
- ex) 수강 릴레이션의 학번과 학생 릴레이션의 학번 속성에는 같은 종류의 데이터가 입력 되어 있어야 함
5. 사용자 정의 무결성(User-Defined Integrity)
- 속성 값들이 사용자가 정의한 제약조건에만 만족해야 한다는 규정
6. 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야함
- 프로그램이 완성되고 데이터가 저장된 상태에서 무결성을 정의할 경우 많은 비용이 발생하므로 데이터베이스 구축 과정에서 정의
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화 할 수 있음
애플리케이션
- 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 데이터를 조작하는 프로그램 내에 추가
- 코드를 이용한 복잡한 규칙 등을 검토하는 무결성 검사는 데이터베이스에서 수행하기 어려우므로 어플리케이션 내에서 처리
- 장점: 사용자 정의 같은 복잡한 무결성 조건의 구현이 가능
- 단점: 소스 코드에 분산되어 있어 관리가 힘들고, 개별적인 시행으로 인해 적정성 검토가 어려움
데이터베이스 트리거
- 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가
- 트리거: 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때마다 자동적으로 수행되는 절차형 SQL
- 이벤트: 어떤 일이 발생한 것, 트리거에서의 이벤트는 데이터의 입력, 갱신, 삭제와 같은 데이터 조작 작업이 발생했음을 의미함
- 장점: 통합 관리가 가능하고 복잡한 요구 조건의 구현이 가능함
- 단점: 운영 중 변경이 어렵고, 사용상 주의가 필요함
제약 조건
- 데이터 베이스에 제약조건을 설정하여 무결성을 유지
- 장점: 통합 관리 가능, 간단한 선언으로 구현가능, 변경 용아, 오류 데이터 발생 방지 등
- 단점: 복잡한 제약 조건의 구현과 예외적인 처리가 불가능
섹션6. 관계대수 및 관계해석
1. 관계대수의 개요
- 관계형 데이터베이스에서 원하는 정보과 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
- 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과도 릴레이션이멀
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
- 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자 : Select, Project, Join, Devision
- 일반 집합 연산자 : UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱)
2. Select
- 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
- 릴레이션의 행(가로)에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 함
- 연산자의 기호는 그리스 문자 시그마(σ)를 사용함
- 표기 형식: σ<조건>(R)
- R은 릴레이션이름, 조건에서는 =, ≠, <, ≤, >, ≥ 등의 기호를 사용한 비교 연산이 허용되며, AND(∧), OR(∨), NOT(ㄱ) 등의 논리 연산자를 이용하여 여러 개의 조건들을 하나의 조건으로 결합시킬 수 있음
3. Project
- 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
- 연산 결과에 중복이 발생하면 중복이 제거됨
- 릴레이션의 열(세로)에 해당하는 Attribute를 추출하는 것이므로 수직 연산자라고도 함
- 연산자의 기호는 그리스 문자 파이(π)를 사용함
- 표기 형식 : π<속성리스트>(R)
4. Join
- 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- Join의 결과로 만들어진 릴레이션의 차수는 조인된 두 릴레이션의 차수를 합한 것과 같음
- Join의 결과 = Cartesian Product(교차곱)을 수행 후 Select를 수행한 것과 같음
- 연산자의 기호는 ⋈ 를 사용함
- 표기 형식: R ⋈ 키속성 r=키속성s S
- 키속성 r은 릴레이션 R의 속성이고 키속성 s 는 릴레이션 S의 속성
자연 조인(Natural Join)
- 조인 조건이 '=' 일 때 동일한 속성이 두 번 나타나게 되는데 이중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법
- R▷◁키속성 S
- 자연 조인이 성립되려면 두 릴레이션의 속성명과 도메인이 같아야 함
5. Division
- X ⊃ Y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때 R의 속성이 S의 속성 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만 구하는 연산
- 연산자의 기호는 ÷를 사용함
- 표기 형식: R[속성r ÷ 속성s] S
- 속성 r은 릴레이션 R의 속성, 속성 s는 릴레이션 S의 속성, 속성 r과 s는 동일 속성값을 가지는 속성이어야 함
6. 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자로 릴레이션 연산에도 그대로 적용됨
- 합병조건(합병하려는 두 릴레이션 간의 속성 수가 같고, 대응 되는 속성별로 도메인이 같아야 함)을 만족해야함
연산자 | 기능 및 수학적 표현 | 카디널리티 |
합집합 UNION ∪ |
두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거됨 R ∪ S = {t | t ∈ R ∨ t ∈ S } t는 릴레이션 R or S에 존재하는 튜플 |
|R∪S| ≤ |R| + |S| 합집합의 카디널리티는 두 릴레이션의 카디널리티의 합보다 크지 않음 |
교집합 INTERSECTION ∩ |
두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산 R ∩ S = {t | t ∈ R ∧ t ∈ S } t는 릴레이션 R and S에 동시에 존재하는 튜플 |
|R∩S| ≤ MIN{|R|, |S|} 교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 카디널리티보다 크지 않음 |
차집합 DIFFERENCE - |
두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산 R - S = {t | t ∈ R ∧ t ∉ S } t는 릴레이션 R에는 존재하고 S에는 없는 튜플 |
|R-S| ≤ |R| 차집합의 카디널리티는 릴레이션 R의 카디널리티보다 크지 않음 |
교차곱 CARTESIAN PRODUCT x |
두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산 R x S = {rㆍ| r ∈ R ∧ s ∈ S} r은 R에 존재하는 튜플, s는 S에 존재하는 튜플 |
|RxS| = |R| x |S| 교차곱의 디그리는 두 릴레이션의 디그리를 더한것과 같고, 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같음 |
7. 관계해석(Relational Calculus)
- 관계 데이터 모델의 제안자인 코드(E, F, Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안함
- 관계 데이터의 연산을 표현하는 방법으로 원하는 정보를 정의할 때는 계산 수식을 사용함
- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지님
- 튜플 관계해석과 도메인 관계해석이 있음
- 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등하며 관계대수로 표현한 식은 관계해석으로 표현할 수 있음
- 질의어로 표현함
- 주요 논리 기호
- ∀ / 전칭 정량자 : 가능한 모든 튜플에 대하여 (For All)
- ∃ / 존재 정량자 : 하나라도 일치하는 튜플이 있음(There Exists)
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 필기 3강 - 데이터베이스 구축' 카테고리의 다른 글
2장 - 물리 데이터베이스 설계 | 섹션12. 뷰(View) 설계, 섹션13. 파티션 설계, 섹션14. 분산 데이터베이스 설계 (0) | 2024.05.05 |
---|---|
2장 - 물리 데이터베이스 설계 | 섹션10. 트랜잭션 분석/CRUD 분석, 섹션11. 인덱스 설계 (0) | 2024.05.05 |
1장 - 논리 데이터베이스 설계 핵심 요약 (0) | 2024.05.05 |
1장 - 논리 데이터베이스 설계 | 섹션7. 정규화(Normalization), 섹션8. 반정규화(Denormalization), 섹션9. 시스템 카탈로그 (0) | 2024.05.04 |
1장 - 논리 데이터베이스 설계 | 섹션1. 데이터베이스 설계, 섹션2. 데이터 모델의 개념, 섹션3. E-R(개체-관계)모델 (0) | 2024.05.03 |