[공공데이터 개발과정] 0508 SQL

송경근·2023년 5월 14일
0

DB 배우기

목록 보기
3/8
post-thumbnail

관계 데이터 모델

수학의 집합이론에 근거 > 모델의 이론적 토대가 탄탄함
SQL언어는 비절차적 언어 

집합

순서가 없다
중복을 허용하지않는다

관계(relationship)

릴레이션 내에서 생성되는 관계 : 릴레이션 내 데이터들의 관계
릴레이션 간에 생성되는 관계 : 릴레이션 간의 관계

외래키 :

참조하는 키 다른 릴레이션의 기본키(primary key)가 주로 외래키가 된다
	기본키말고도 다른 값을 참조할 수 도 있다

릴레이션

: 스키마와 인스턴스로 구성
스키마(열 이름) : 
	관계 데이터베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본 구조를 정의 
인스턴스 : 
	정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합
속성 (어트리뷰트, 열)
튜플(행)

릴레이션 스키마
	속성 : 릴레이션 스키마의 열
	도메인 : 속성이 가질 수 있는 값(자료형의 의미와 유사함)
	차수(degree) : 속성의 개수
	
스키마의 표현
	릴레이션이름(속성1:도메인1, 속성2:도메인2,…)

튜플 : 릴레이션의 행
	릴레이션 내의 모든 튜플은 서로 중복되면 안된다 > 중복시 무결성 위반
카디날리티 : 투플의 수
	삽입 수정 삭제등에 따라 수시로 변경됨

릴레이션의 특징

	1. 속성은 단일값을 가진다
	2. 속성은 서로 다른 이름을 가진다
	3. 한 속성의 값은 모두 같은 도메인 값을 가진다
	4. 속성의 순서는 상관없다
	5. 릴레이션 내의 중복된 튜플은 허용하지않는다
	6. 튜플의 순서는 상관없다.

관계 데이터 모델

2차원 테이블 형태인 릴레이션으로 표현
제약조건과 관계 연산을 위해 관계대수를 정의함

관계 데이터 모델을 컴퓨터 시스템에 구현-> 관계 데이터베이스 시스템
관계 데이터베이스 시스템은 SQL기반으로 릴레이션 생성,구현 / 데이터 추출 연산

데이터베이스에 저장된 값은 절대로 결함이 존재해선 안됨
SQL문으로 질의를 했을 때 답에 신뢰성이 존재해야함
데이터를 저장하는데 데이터베이스는 일관성을 유지하고 중복을 제거하여 신뢰도를 유지해야함
따라서 데이터의 삽입, 삭제, 수정 시 여러 제약조건이 필요

무결성 제약조건

	키 : 유일함
		특정 튜플을 식별할 때 사용하는 속성, 속성의 집합
		릴레이션은 중복을 허용안함 
			>각각의 튜플에속성들 중 하나는 값이 달라야함
			키가되는 속성은 반드시 값이 달라서 튜플들을 서로 구분할 수 있어야한다.
		릴레이션 간의 관계를 맺는 데도 사용

	주문 릴레이션의 키는 고객번호와 도서번호를 사용
	2개의 속성을 합한 키를 복합키 라고 함
	>따로 주문 번호를 만들어서 사용하는 편 중복이 일어날 수 있기 때문에
	
	슈퍼키 : 튜플을 식별할 수 있는 최소한의 속성들의 집합 (범위가 엄청나게크다)
		튜플을 유일하게 식별할 수 있는 값

	후보키 > 기본키가 아닌 속성값
		튜플을 유일하게 식별할 수 있는 속성의 최소 집합
		효율성 측면에서 매우 중요함
		만약 한명의 고객이 동일한 도서를 구입할 수 있다고 하면
		(고객번호, 도서번호) 후보키가 될 수 없다
		유일하게 식별하기 위해서 주문번호 속성이 필요
	기본키
		여러 후보키 중 하나를 선정하여 대표로 삼는 키
		후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 됨. 여러 개라면 릴레이션의 특성에 따라 하나 선택

기본키 선정시 고려사항

		릴래이션 내에 고유한 값을 가져야함
		NULL 허용하지않음
		키 값의 변동이 일어나지 않아야함
		최대한 적은 수의 속성을 가져야함(복합키는 기본키로 설정하는것을 추천하지않음)
		문제 발생 소지가 없어야함
		
		릴레이션 스키마를 표현할 때 기본키는 밑줄을 그어 표시

대리키

: 기본키로 써먹으려고 만든거임
		기본키가 보안을 요하거나 여러 개의 속성으로 구성되어 복잡하거나(복합키거나), 마땅한 기본키가 없을때 가상의 속성을 만들어 기본키로 삼는 경우가 있음
		>대리키 혹은 인조키
		DBMS나 관련 소프트웨어에서 임의로 생성하는 값으로 사용자가 직관적으로 그 값의 의미를 알 수 없음.
		
		장점
			튜플이 유일하게 식별 가능
			테이블의 기능이 향상됨
	대체키
		기본키로 선정되지 않은 후보키
	
	외래키
		다른 릴레이션의 기본키를 참조하는 속성
		특징
			릴레이션간의 관계를 표현
			다른 릴레이션의 기본키를 참조
			양쪽 릴레이션의 도메인은 서로 같아야함
			참조되는 값이 변경되면 참조하는 값도 변경됨
			null과 중복이 허용됨
			자기 자신의 기본키를 참조하는 외래키도 가능함
			외래키가 기본키의 일부가 될 수 있음(복합키 가능)
			
		외래키 사용시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다를필요는 없음
		자기자신의 기본키를 참조할 수도 있음

무결성 제약조건

	데이터베이스의 일관성과 정확성을 위해 만들어짐
	1. 데이터 무결성
		데이터베이스에 저장된 데이터의 이관성과 정확성을 지키는 것
	2. 도메인 무결성 제약조건
		도메인 제약
		튜플들의 속성이 도메인에 지정된 값만을 가져야함
	3. 개체 무결성 제약조건
		기본키 제약
		기본키는 NULL 값을 가지면 안됨. 릴레이션 내에 오직 하나의 값만 존재해야한다는 조건
	4. 참조 무결성 제약조건
		자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야함.
		자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것


개체 무결성 :

데이터 변경이 발생할 때 마다 확인이 필요
삽입 : 기본키 값이 같으면 삽입이 금지
수정 : 기본키 값이 같거나 NULL로도 수정 금지
삭제 : 특별한 확인이 필요하지않으며 즉시 수행

참조 무결성

	삽입
		부모 릴레이션 : 튜플 삽입 후 수행하면 정상적으로 진행
		자식 릴레이션 : 참조받는 테이블에 외래키 값이 없으므로 삽입이 금지

	참조 무결성은 개체 무결성 제약조건과 달리 단일 릴레이션에 대한 내용이 아님
	따라서 참조 무결성 제약조건을 준수하기 위해 두 릴레이션의 관계에 따라 복잡한 처리를 수행하게 됨
	
	삭제
		부모 : 참조하는 테이블을 같이 삭제할 수 있음 따라서 금지 다른 추가 작업이 필요
		자식 : 바로 삭제 가능

	수정
		삭제와 삽입명령이 연속해서 일어남
		부모릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제가 없으면 다시 삽입 제약조건에 따라 처리됨
		
	외래키가 삭제될 경우(부모릴레이션에서 튜플을 삭제할 경우)
	네가지 명령어가 있음


관계 대수

릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어

카티전 프로덕트

	두개 이상의 집합을 조합해서 생성가능한 모든 집합을 만드는 연산

릴레이션의 현실 세계 적용

관계 대수 연산자

	순수 관계 연산 : 관계 데이터 모델을 위해 고안

	일반 집합 연산 : 수학 집합(set)에 존재하는 기존의 연산 기호

	관계대수식 : 관계 대수 연산자를 사용한 식
		


	셀렉션의 확장

프로젝션

		릴레이션의 속성을 추출하기 위한 연산으로 단항 연산자임

교집합

			합병 가능한 두 릴레이션을 대상으로 함. 공통으로가진 튜플 반환

카티션 프로덕트

		행렬의 곱, 이중 반복문과 같다
		
		

조인

		두 릴레이션의 공통속성을 기준으로 속성값이 같은 튜플을 수평으로 결합하는 연산
		두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성
		공통속성의 속성값이 동일한 튜플만 반환
		



자연 조인



디비전

		릴레이션 속성값의 집합으로 연산을 수행
		






불필요한 연산이 줄어들게 된다



profile
개발자가 되려는 학생입니다

0개의 댓글