내맘대로 정리

데이터베이스

하나의묵 2020. 3. 11. 12:38

0905 DB

 

관계형 모델 (2. 4. 1 )

 

relational Model

-E.F.codd

: 주어진 n개의 집합(같은종류의 원소)모임 D1,D2.... Dn 에 대하여 순서화된(ordered) n- tuples의 집합 R 을 이 n개의 집합에 대한 관계라 한다.

 

n-tuple :n개의 집합들 속에서 하나씩 원소를 뽑아 뽑아 하나로 묶어놓은 것.

 

 

-집합의 범위를 도메인 이라고 한다. 집합의 이름은attribute 이라고한다.

-테이블로 정리했을 때 정보가 들어있는 한 행을 튜플이라고 한다.

 

 

-릴레이션은 애트리뷰트와 튜플 로 구성되어있다...

 

-(애트리뷰트의 개수)를 차수라고 하고, 투플들의 개수 ()을 카디날리티 라고한다.

 

-애트리뷰트 중에 구분을 가능하도록 하는 기준을 만들 수 있는 것인 기본키라고 한다.(기본키가 될 수 있는 것은 꼭 하나만은 아니다.)

 

 

relation

중복된 튜플은 없다.(key가 존재 = key 제약조건)// 집합을 사용하기 때문에 중복이 될 리가 없다.

순서가 없다. (의미가 없기 때문에)

No duplicate names in attributes(중복된속성은없다)

도메인제약조건(각 속성의 값은 각 도메인이 속하는 원자값 /반드시 도메인에 속하는 값이어야한다)

super key : 튜플들을 구분할 수 있는 키(한개가 아니라 구분을 가능하 수 있다면 다 super key)( 슈퍼키를 적어라 시험문제(모든 경우의수를 다적어야 정답))

Candidate key(후보키) :속성의 숫자가 제일 적은 놈(학번 ,주민번호가 같이있다면 그것 각자 하나하나가 후보키 따라서 2개의 후보키)

primary key (기본키) : 슈퍼키의 후보키 중에서 기본키로 선택된 키를 기본키라고한다./

- altenate key(대체키): 기본키로 선택되지 못한 키지만 후보키에있는 키를 말한다

-Foreign key(외래키) : 부서에 관한 정보가 있을 때 부서번호는 기본키다. 근데 이것을 키로 선택하지 않은 릴레이션이 있을 때 부서번호는 외래키이다.

 

 

무결성 제약조건

-개체 무결성 : 기본키는 반드시 있어야한다.

 

-참조 무결성 : 참조 튜플이 반드시존재 (테이블 연결 보장)

 

스키마를 적을 때 밑줄이 있는 것은 키.

 

relational Algebra 관계형 대수 //사용하는방법??????

-선택

-추출

-합집합

-차집함

-카티저 곱

-재명명

 

 

자료구조의 명칭이 자료를 어떻게 저장하는지에 대해 설명

 

relational data structre by codd

-관계형 데이터 구조 relation은 집합에서 왔고 안에 원소들은 튜플로 구성됨.

 

2장 관계형 데이터 모델

 

Ef codd가 제안.

 

관계 데이터모델이 성공한 이유

-집합이라는 개념이 기반.(수학) 증명. 등등 가능

 

 

기본적인용어

릴레이션 :

레코드 :

투플 :

애트리뷰트 :

 

 

도메인 : 애트리뷰트가 가질수 있는 값의 범위(가능한 범위)

도메인정의 : CREATE DOMAIN EMPNAME CHAR(10) //char 10개를 EMPNAME이란이름..

 

relation , tuple , attribute

 

널값(null value)

: 알려지지않음 또는 없음을 나타냄

 

데이터베이스는 값이 없는값이 발생.(ex)신입사원이라 부서같은 것을 배정하지 않았을 때)

 

 

 

 

표기법: 릴레이션이름(애트리뷰트1, 애트리뷰트2 ......) // 밑줄친 것은 기본키

 

인스턴스 :어느 시점에 들어있는 투플들의 집합, 현재 인스턴스만 저장 (외연extension)

 

스키마

: 릴레이션의 구조 (내포intension)

 

 

관계 데이터베이스

- 데이터를 관계형태로 저장

 

관계 데이터 베이스 스키마

- 하나이상의 릴레이션 스키마들로 구성

 

관계 데이터베이스 인스턴스

릴레이션 인스턴스들의 모임

 

 

릴레이션의 특징

애트리뷰트들의 순서는 중요하지않음 (집합이기 때문에)(집합들의 원소는 순서가없다)

 

-동일한 튜플이 존재하지않음 > 따라서 키가 존재

-한투플의 각애트리뷰트는 원자값을 가짐(즉 한 애트리뷰트에 값을 하나씩만 저장해라).

 

-애트리뷰트의 이름은 릴레이션내에서 고유해야한다.

-투플의 순서는 중요하지 않음

 

 

슈퍼키 : 키역할을 할 수 있는 애트리뷰트들의 모음.

후보키 : 슈퍼키중에서 속성이 가장 작은 것

 

 

 

 

 

 

후보키 : 학번 과목번호 합쳐서

복합키 : 학번 , 과목번호

 

 

 

후보키 : 학번혼자서 , 이름 혼자서

기본키는 후보키에서 선택하고,

대체키는 후보키에서 기본키로 선택받지 못한 것.

 

 

 

 

 

 

 

슈퍼키>후보키

 

 

왜래 키의 유형

다른 릴레이션의 기본키를 참조하는 왜래키

 

ex)김창섭이 기획부서에서 하는데 그 부서의 번호로 들어가서 그부서에 정보를 보도록 참조.

 

-왜래키도 기본키가 될 수 있다.

 

 

무결성 제약조건

데이터 무결성 데이터의 정확성 또는 유효성 의미

ex) 학번의 무결성조건 : 4자리는 1995부터 2019까지 , 2자리는 코드

 

DBMS가 무결성 보장

 

 

도메인 제약조건 :

- 각 애트리뷰트는 원자값이어야함

디폴트값 . 가능한 값의 범위등을 지정가능.

 

 

-키 제약조건

: 키 애트리뷰트에 중복된 값이 존재해서는 안됨

 

 

무결성 제약조건

기본키와 엔터티(개체(각자 존재하는 존재)) 무결성 제약조건(entity integrity constraint)

기본키를 구성하는 어떤 애트리뷰트도 널밧을 가질수 없음

 

 

왜래키와 참조 무결성 제약조건

두 릴레이션의 연관된 투플들 사이의 일관성을 유지하는데 사용됨

꼭 참조할 튜플이 존재해야한다.

 

 

무결성 제약조건의 유지

데이터베이스의 대한 수정연산(modity)은 삽입연산, 삭제연산 ,갱신연산으로 구분함(insert,delete,updata)

 

 

삽입 : 릴레이션에 어떤 투플을 추가했는데 예를 들어 부서를 6이라고 했는데 6을참조해보니 그에대한 정보가 없다면 참조무결성에 위배되는거다.

 

 

CASCADE(연쇄): 한부서를 삭제할 경우 직원도 같이 삭제할 경우. 2PPT 40page

 

-----수정이 아니라 갱신이다 !!!!

 

 

RA

 

질의어(Query languages)(쿼리) SQL언어 (질의 = 데이터요청) 정보요청

(원하는정보)

: 사용자가 데이터베이스로부터 정보를 요청하는 언어 //셤문제?

 

언어의종류

-절차식

-비절차식

 

순수언어:
- 관계형 대수

- 투플관계형 해석

- 도메인 관계형 해석

 

 

관계형 대수(계산하는순서?)(relational Algebra)

 

절차식언어

 

6가지 기본 연산자

-선택

-추출

-합집합

-차집합

-카티전 곱

-재명명(이름 재설정)

 

 

연산자는 입력으로서 하나이상의 릴레이션을 취해 그 결과로 그 결과로 새로운 릴레이션 생성

 

-릴레이션에 관계연산자를 쓰면 결과로 릴레이션이(결과값) 나온다.

 

관계연산자

 

필수연산자

셀렉션 : 선택 : 시그마 : 투플만 선택

프로젝션 : 추출 : 파이 : 속성들만 투과해서 결과를 낸다?

유니언 : 합집합 : 유니온 : 공통부분을 찾아낸다

디퍼런스 : 차집합 : 마이너스 : 공통부분을 뺀다

카디션 프로덕트 : 카디션 곱 : 곱하기 기호 :

 

 

디비전(나누기): 몫을 구하라.../???????

 

 

선택연산

표기법 :시그마p(r) 괄호안에있는 릴레이션이 피연산자 p 는 조건식?

 

시그마p(r) = {t | t r and p(t)}

 

오른쪽에 있는 조건을 만족하는 t의 집합? tr의 원소다 그리고 tp라고 하는 조건을 만족 , p라고 하는 조건을 만족하는 투플을 선택하는 식..

 

 

시그마 p(r) = {t | t r and p(t)}

엠플로이 릴레이션에서 부서번호(DNO)2인 속성(투플)들을 선택해라

 

 

 

 

 

 

 

위에 r이라는 릴레이션에서 AB가 같고 D5보다 큰 투플들을 모아서 아래의 릴레이션으로 만드는 식이다. 시그마A=B ^ D > 5 (r)

 

시그마조건(릴레이션 이름) : 실렉션 사용법.

 

 

 

 

 

추출연산(projection operation)

파이 A1, A2,, Ak (r)

 

: 여기에 속한 속성들만 빼서 릴레이션 생성.

이때 만들어진 결과릴레이션에서 중복된값이 나오면 중복된값을 하나로 만들어서 결과표현.

(중복이 없다.)

내가원하는 정보만 빼서 릴레이션으로 만들어 데이터베이스에 저장가능.

 

 

 

 

 

 

 

합집합 연산 (union operation)

 

 

 

(합집합이 가능하려면 집합의 타입이 같아야 합칠수 있다.= 합집합 호환) :

속성의 개수가 같아야하고

도메인이 같아야한다.

 

 

 

차집합 연산(setDifference operaion)

 

r - s = {t | t r and t s} : tr의 원소고 s의 원소는 아니다. r에서 s의 공통분모를 뺀다

 

 

카티전 곱연산 (cartesian-product operation)

 

tr의 원소이고 qs의원소이다 rs를 합친다.

-중복되는 원소가 생기면 그것의 이름은 자동으로 재명명된다

 

 

 

 

복합연산

-여러가지 연산자를 한번에 사용가능 . (괄호안에있는거면저 연산)

 

 

 

형식적 정의

관계형 대수에서 기본 표현식은 다음중 하나이상으로 구성된다

데이터베이스 내의 릴레이션

상수릴레이션(투플들의 값이 변하지않는 릴레이션)

 

 

 

 

DDL 스키마 조작

DML 데이터 조작

DCL - 추가적인 것 조작

 

관계형 데이터 베이스

-관계들의 집합?

 

릴레이션에 대해 적으시오 시험문제

 

DDL 명령어 (3)

CREATE (키워드 : DOMAIN , TABLE(릴레이션) , VIEW() , INDEX(순서를 정함?)

ALTER(변경) (키워드 :TABLE)

DROP(없애다)(키워드 : DOMAIN , TABLE(릴레이션) , VIEW() , INDEX(순서를 정함?)

 

CREATE SCHEMA MY_DB AUTHORIZATION kim = 마이디비를 kim 이라는 사람에게 준다? 권한을?

 

DROP SHEMA MY_DB RESTRICT; = 하나만 지우라

DROP SHEMA MY_DB CASCADE; = 연속적인거 다지우라

 

 

REFETENCES 참조하다.

같은 릴레이션에서 ? 속성이름은 중복되면 안된다

UNIQUE (ex 이름이 중복되지않게 해라.

 

 

 

DML

DML- 질의어 (select , from , where 3가지 절로 나누어짐)(애드리뷰트 , 릴레이션 , 조건)

프롬에있는걸 카테이션 프로턱트해서 p에 만족하는 것을 찾아서 셀렉트 부분에 것만 추출해

 

 

SELECT 쓸떄 3가지순서대로 !!

원하는정보

필요한 릴레이션

조건

 

 

DISTINCT 구별(중복된 것을 제거하라)

 

여기서의 SELECT는 수학과달라서 중복된 것을 제거하지 않는다 따라서

SELECT DISTINCT title 이런식으로 써야 한다.

 

 

- 스키마와 실제데이터를 다루기위해 DDL (Create , Alter(수정), Drop), DML 가 필요하다.

 

 

unknown ture talse 로 쓸 수 없다

 

-릴레이션은 집합이기 때문에 정렬이 되어있다

따라서 ORDER BY를 쓴다 ASC = 오름차순 , DESC = 내림차순.

ORDER BY 뒤에 ASCDESC가 없으면 디폴트(기본값으로 ASC)

 

 

집단함수

COUNT ,AVG , MAX ,MIN ,SUM

 

 

 

조인 - 카테이션프로턱트한 것을 어ᄄᅠᆫ조건으로 뽑아내는것

:만들이유 연산을 빠르게 하는 것.

정보가 릴레이션형태로 분리되어 방대하게있는데 그것을 원하는정보를 찾아서 결합해 사용하기 위해서.

 

from 에 릴레이션이 두 개면 하나의 조인조건을 사용해야한다 where에서 ! 3개면 2개의 조인.

 

6번 문제는 서브쿼리를 사용?

<> //이모양은 같지않다라는 뜻.

서브쿼리를 쓸 때 왼쪽은 투플인데 오른쪽인 집합으로 나올떄면 ANYALL SUM을쓸 때도 있다

 

-sql 디벨로퍼 비쥬얼스튜디어

-sql plus - 데이터베이스 엔진을 연결시켜주는 도구

 

>, #, $ 이런모양 전부다 쉘이라고 한다.. 쉘프로그램?

prompt 명령을 받아주는??

 

 

id scott

password - tiger

 

PL- SQL : 데이터베이스의 순차적언어 c언어같은?)

 

Pro*C embedded SQL

: c언어에서 사용가능하도록?컴파일.

 

 

script파일 - 소스코드같은 것? 인터프린팅해가면서 실행시킴.(sql같은것들을 모이는 것.)

-인터프린터방식의 프로그램인데 그 명령어 한줄한줄을 한번에 다모아놓은것

 

@= 위치를 말한다.

;

delete from employee; // employee의 내용물을 다지워라 //책을 다없애라

drop table employee;// employee table을 지워라???

 

@위치 = 스크립트파일 실행

 

view를 만든다는 것은 : 셀렉트,프롬 ,웨어 한것의 값을 볼수 있는 것. (걀과를 볼 수 있다)

 

sql에서는주석이다.

 

 

내포된 SQL

 

 

CSQL에서는 구조가 맞지 않아서

 

데이터 구조가 불일치하는 문제(impedance mismatch 문제) (발생이유??)

 

 

C에서 가져올떄 구조를 record단위로 맞춰줘야함

 

 

INTO : title //titlec언어의 변수(호스트변수)를 의미

 

CURSOR 릴레이션의 투플을 가르키는 커서??

 

커서는 한번에 투플을 하나씩 가져오는 수단.

 

 

 

 

 

 

 

 

 

 

 

 

'내맘대로 정리' 카테고리의 다른 글

자료구조  (0) 2020.03.11
모바일프로세서(아두이노)  (0) 2020.03.11
앱비지니스 모델  (0) 2020.03.11
PG와 VAN  (0) 2020.03.11
운영체제  (0) 2020.03.11