반응형

1. 집합 연산의 종류

합집합 / 차집합 / 교집합 / 카티션 프로덕트 

 

 

 

2. 합집합

 

 

3. 교집합

 

 

 

 

4. 차집합

 

 

 

 

5. 카티션 프로덕트

: 두 개의 테이블에서 각각의 레코드들을 서로 결합하여 하나의 레코드로 구성하면서 가능한 모든 조합의 레코드를 생성

 

 

 

- 교환법칙과 결합법칙이 성립

 

 

 

 

6. 조인

: 두 테이블로부터 특정 조건을 만족하는 레코드들을 하나의 레코드로 결합하는 연산

 

 

 

 

7. 자연 조인

: 두 테이블에서 같은 이름을 갖는 필드 중 하나를 제거하는 연산

-> 이 때 두 필드에서 모두 존재하는 레코드만 가져온다.

 

 

 

 

8. 외부 조인

: 자연 조인에서 두 필드에 모두 존재하지 않더라도 가져올 수 있게 한다.

: 매치되지 않는 레코드는 NULL값 처리

freshman : (name, address)

member : (name, dept_name)

-> 펼쳐져 있는 쪽의 데이터를 가져옴

 

 

 

 

9. 지정 연산

: 중간 결과에 이름을 부여하기 위한 연산

- 재명명 연산이랑 비슷

 

 

반응형
반응형

1. 관계형 데이터베이스란? (RDBMS)

: 하나 이상의 2차원 테이블로 실 세계의 데이터를 표현한 데이터베이스

: SQL 을 사용하여 데이터를 저장, 검색, 수정, 삭제한다.

 

 

* nosql 은?

: 관계형 데이터베이스의 반대로 데이터 간의 관계를 정의하지 않는다. (스키마가 없다)

 

 

- 데이터베이스 스키마 = 테이블 스키마의 집합

데이터베이스 스키마 예제

 

 

- 데이터베이스 인스턴스 = 테이블 인스턴스의 집합

 

데이터베이스 인스턴스

 

 

 

2. 질의어

: 데이터를 삽입, 삭제, 수정, 검색(CRUD) 등 데이터 조작을 위한 연산들을 표현하기 위한 언어

 

- 절차적 언어

: 사용자가 원하는 결과를 얻기 위해 수행되어야 하는 일련의 절차를 명시해야 하는 언어

ex) C, Java, 관계 대수

 

- 비절차적 언어

: 수행 절차는 기술하지 않고 사용자가 원하는 결과만을 형식적, 선언적으로 명시하는 언어

ex) 관계 해석, SQL

 

 

 

 

 

 

* 관계 대수와 관계 해석은 SQL 문법의 이론적 기반을 제공한다.

 

3. 관계대수

 

- 연산 종류

기본 연산 : 선택, 추출, 재명명, 집합 연산(합, 차, 교, cartesian product)

추가 연산 : 조인, 자연조인, 외부조인, 지정연산, 나누기연산

 

 

주의 !!

관계 대수의 결과는 중복을 제거함

다만, Oracle 등 실제 DBMS에서는 대부분 허용함

 

 

 

 

4. 선택(selection)

- 시그마 할 때 's' -> selection

- 조건식 : <, >, <=, >=, <> 와 and(^), or(v), not(기역..) 의 조합

- AND 할 때 A 의 뾰족한 부분이 ^와 닮음

 

만약, 해당 필드의 값이 Null 일 경우?

값을 알지 못하기 때문에 검색 결과에서 배제

 

 

 

예시 1>

 

예시 2>

 

 

 

 

 

5. 추출(projection)

- 파이 할 때 P -> Projection

- 추출하고자 하는 테이블의 필드를 작성

 

 

 

 

ex>

 

 

 

 

6. 연산자들의 조합

 

 

 

 

- 선택 연산은 교환법칙 성립 O

- 추출 연산은 교환법칙 성립 X : 첫 번째 필드가 두 번째 필드를 포함하면 교화법칙 성립

 

 

 

 

7. 재명명 연산(rename)

: 로우 니까 R 이니까 rename

 

 

- 주의

본래 데이터베이스에 저장된 테이블명/필드명이 변경되는 것은 아님

 

 

 

글이 너무 길어지는 관계로

집합은 다음 글에서 설명하도록 하겠습니다.

반응형
반응형

1. 기본키(key)

: 필드의 일부로, 레코드를 유일하게 식별해 낼 수 있는 식별자 역할을 함

-> 관계형 데이터 모델에서 특정 레코드를 구별하기 위한 유일한 방법

 

2. 두 개 이상의 필드로 구성된 복합키를 가질 수도 있음

ex) '학번'과 '주민등록번호' 필드는 레코드마다 유일하므로 키가 될 수 있음

 

 

 

3. 키의 종류

1) 수퍼키 

: 아무런 제약 조건없이 레코드들을 식별할 수 있는 필드의 집합

ex)(주민등록번호), (학번, 주민등록번호)

 

2) 후보키(기본키가 되기위한)

: 레코드를 구별하는데 불필요한 필드를 제외하고 최소한의 필드로만 구성

ex)(주민등록번호), (학번),(이름,학과명)

 

3) 기본키

: 후보키 중에서 레코드들의 식별자로 선택한 하나의 키

ex)(주민등록번호), (학번)

 

 

 

 

여기서 잠깐!!

Quiz 1) (이름, 주소), (이름, 학과명)이 후보키/기본키 자격이 있는가?

-> 있다! 테이블의 모든 가능한 인스턴스에 대해서도 키가 되는 것이 보장되어야 함

 

Quiz 2) 키가 null이 될 수 있나?

-> 기본키는 null 값을 가질 수 없다! null 값을 가지면 식별자로서의 기능을 상실하기 때문이다.

 

 

 

 

4. 외래키(foreign key)

: 다른 테이블의 기본키를 참조하는 필드 집합

 

 

두 스키마 R1, R2에 대하여,

R1의 기본키를 R2가 외래키로서 참조하려면

- R1의 기본키 필드와 R2의 외래키 필드가 동일한 도메인을 가져야 함

- R2의 각 레코드들은 R1 기본키 필드의 값 중 하나와 일치하거나 null 값을 가져야 함

 

* 만약 외래키가 null일 경우, 그 값을 알지 못하거나 아직 결정되지 않았음을 의미함

 

 

 

 

- 자기 자신을 참조하는 외래키가 있을 수도 있음

 

 

반응형
반응형

1. 테이블 스키마란?

: 테이블을 정의하기 위해 만들어진 데이터 구조

ex) 신입생(학번, 주민등록번호, 이름 주소, 나이, 학과명)

 

- 차수(degree)

: 테이블 스키마에 정의된 필드(=열=속성)의 수

 

 

 

 

2. 테이블 인스턴스란?

: 테이블 스키마에 현실 세계의 데이터를 레코드 형태로 저장한 형태(집합)

 

- 기수(cardinality)

: 테이블 인스턴스에 속한 레코드(=행=튜플)의 수

 

신입생 테이블의 인스턴스

 

 

 

 

3. 테이블의 특성

1) 중복된 레코드 존재 X

: 테이블 인스턴스는 레코드들의 집합이기 때문에

2) 레코드 간의 순서는 의미 X

: 테이블 인스턴스는 레코드들의 집합이기 때문에

3) 레코드 내에서 필드의 순서는 의미 X

: 테이블 스키마는 필드들의 집합이기 때문에

4) 모든 필드는 원자값을 가짐

 

다만, 위의 특징들은 관계형 데이터모델에서 정의되는 테이블(릴레이션)의 논리적 특징이며, 

실제 데이터베이스 시스템에서의 물리적인 특성은 아님

 

-> oracle, mysql 등에서는 물리적으로 순서가 있을 수 있음

 

반응형
반응형

1. 릴레이션

: 두 개 이상의 집합이 주어질 때 각 집합을 구성하는 원소들의 순서쌍에 대한 집합

-> 테이블을 릴레이션이라고 함

릴레이션 예시

 

 

 

2. 릴레이션의 개념

 

1) 속성(attribute) = 필드(field) = 열(column)

 

2) 튜플(tuple) = 레코드(record) = 행(row)

 

3) 도메인(domain)

: 각 필드에 입력 가능한 값들의 범위, 즉 각 필드가 가질 수 있는 모든 값들의 집합

- 원자값, 즉 더 이상 분리되지 않는 값이어야 함

ex) 이름, 전화번호, 주소, 생일

 

4) 널(NULL)

: 특정 필드에 대한 값을 알지 못하거나, 아직 정해지지 않아 입력하지 못한 경우

- 0이나 공백 문자와는 다름

 

릴레이션의 개념

 

반응형

+ Recent posts