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
- docker
- 파이썬 #python #lambda #람다
- 파이썬 #python #전역변수 #지역변수 #eval
- Git
- 파이썬 #python #가변매개변수 #키워드가변매개변수 #args #kwargs
- 파이썬 #python #Comprehension
- 파이썬 #python #class #클래스 #상속
- jsonb
- 프로그래머스
- 파이썬 #python #모듈 #module #import #random #time #calendar #sys
- aw3
- 연산자메서드
- PostgreSQL
- EC2
- spring boot
- 파이썬 #python #os #os.path #glob
- 파이썬기본문법 #파이썬 #python
- 파이썬 #python #filter #map #reduce
- 배포
- 약수 수하기
- aws
- 파이썬 #python #file #i/o #input #output
- 파이썬 #python #예외처리 #exception
- 파이썬 #python #지역함수
- 민감 정보 관리
- 파이썬 #python #docstring
- 파이썬 #python #함수 #function
- redis
- 파이썬 #python #enumerate
- 사용자정의예외
Archives
- Today
- Total
Yeonnnnny
[2과목] 2-1. 관계형 데이터 베이스 개요 본문
■ 데이터 베이스(Database)와 DBMS(Database Management System)
- 데이터베이스 : 데이터의 집합, 꼭 형식을 갖추기 않아도 엑셀파일을 모아 둔다면 그것 또한 데이터 베이스임
- DBMS : 데이터를 효과적으로 관리하기 위한 시스템
- 개인이 파일을 여러 개 묶어서 폴더에 보관하면 데이터를 찾고 관리하는데 많은 비용이 발생
- 이를 보다 시스템적으로 작동하게 만든 시스템을 DBMS라고 함 (ORACLE, MySQL 등)
■ 관계형 데이터 베이스 구성 요소
- 계정 : 데이터 접근 제한을 위한 여러 업무별/ 시스템별 계정이 존재
- 테이블 : DBMS의 DB 안에서 데이터가 저장되는 형식
- 스키마 : 테이블이 어떠한 구성으로 되어있는지, 어떠한 정보를 가지고 있는지에 대한 기본적인 구조 정의
■ 테이블
- 정의
- 엑셀에서의 워크시트처럼 행(로우)과 열(컬럼)을 갖는 2차원 구조로 구성. 데이터를 입력하여 저장하는 최소 단위
- 컬럼은 속성(Attribute)이라고도 부름(모델링 단계마다 부르는 용어가 다름)
- 특징
- 하나의 테이블은 반드시 하나의 유저(계정) 소유여야 함
- 테이블간 관계는 일대일(1:1), 일대다(1:N), 다대다(M:N)의 관계를 가질 수 있음
- 테이블명은 중복될 수 없지만, 소유자가 다른 경우 같은 이름으로 생성 가능
- ex) SCOTT 소유의 EMP 테이블 존재, HR 소유의 EMP 테이블 생성 가능(같은 계정 내 동일한 객체명 생성 불가)
- 테이블은 행 단위로 데이터가 입력, 삭제되며 수정은 값의 단위로 가능
- ex) 사원테이블에 새로운 사원 정보를 사원번호, 사원이름 등의 테이블 내 모든 컬럼의 값을 동시에 전달하여 입력, 삭제 시에는 해당 사원의 모든 정보가 삭제됨(수정 시에는 특정 직원의 급여만 수정 가능)
※ 객체 : DBMS에서의 객체는 생성하고 변경할 수 있는 하나의 관리 대상
■ SQL(Structured Query Language)
- 관계형 데이터베이스에서 데이터 조회 및 조작, DBMS 시스템 관리 기능을 명령하는 언어
- 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 저어 언어(DCL), 트랜잭션 제어어(TCL) 등으로 구분
- SQL 문법은 대, 소문자를 구분하지 않음
명령어의 종류 | 명령어 | 설명 |
데이터 조작어 (Data Manipulation Language) |
select | 데이터 베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어. retrieve 라고도 함. |
insert update delete |
데이터 베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어들. 예를 들어 데이터를 테이블에 새로운 행으로 집어넣거나, 원하지 않는 데이터를 삭제하거나 수정하는 것들의 명령어를 DML이라고 함. | |
데이터 정의어 (Data Definition Language) |
create alter drop rename |
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL이라고 부름 |
데이터 제어어 (Data Control Language) |
grant revoke |
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어를 DCL이라고 함 |
트랜젝션 제어어 (Transaction Control Language) |
commit rollback |
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어를 말함 |
※ Delete(/Modify) action : Cascade, Set Null, Set Default, Restrict
- Cascade : Master 삭제 시 Child 같이 삭제
- Set Null : Master 삭제 시 Child 해당 필드 NULL
- Set Default : Master 삭제 시 Child 해당 필드 Default 값으로 설정
- Restrict : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
- No Action : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음
※ Insert action : Automatic, Set Null, Set Default, Dependent
- Automatic : Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력
- Set Null : Master 테이블에 PK가 없는 경우 Child 외부키를 Null 값으로 처리
- Set Default : Master 테이블에 PK가 없는 경우 Child 외부키를 지정된 기본값으로 입력
- Dependent : Master 테이블에 PK가 존재할 때만 Child 입력 허용
- No Action : 참조무결성을 위반하는 입력 액션을 취하지 않음
※ delete from 테이블명 vs. truncate table 테이블명 vs. drop table 테이블명
- delete from 테이블명 : 모든 데이터를 삭제, 디스크 사용량을 초기화하지는 않음, 로그 남김
- truncate table 테이블명 : 모든 데이터가 삭제, 디스크 사용량 초기화. 로그 남기지 않음
- dropp table 테이블명 : 모든 데이터 삭제, 디스크 사용량 초기화됨, 로그 남기지 않음, 테이블의 스키마 정의도 삭제
■ 관계형 데이터 베이스의 특징
- 데이터의 분류, 정렬, 탐색 속도가 빠름
- 신뢰성이 높고, 데이터의 무결성 보장
- 기존의 작성된 스키마를 수정하기 어려움
- 데이터베이스의 부하를 분석하는 것이 어려움
※ 데이터베이스의 부하? 데이터베이스 로드(DB 로드)는 데이터베이스의 세션 활동 수준을 측정함. 성능 개선 도우미의 핵심 지표는 DBLoad이며, 1초 간격으로 수집됨
■ 트랜잭션의 4가지 특성
원자성 (atomicity) |
트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 함 (All or Nothing) |
일관성 (consistency) |
트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안됨 |
고립성 (isolation) |
트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됨 |
지속성 (durability) |
트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장됨 |
■ 데이터의 무결성(integrity)
- 데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증하는 것
- 데이터베이스에 저장된 값과 그것이 표현하는 현실의 비즈니스 모델의 값이 일치하는 정확성을 의미함
- 데이터 무결성을 유지하는 것이 데이터베이스 관리시스템에 중요한 기능임
■ 데이터 무결성 종류
- 개체 무결성
- 테이블의 기본키를 구성하는 컬럼(속성)은 NULL값이나 중복값을 가질 수 없음
- 참조 무결성
- 외래키값은 NULL이거나 참조 테이블의 기본키 값과 동일해야 함
- 외래키는 참조테이블의 기본키에 정의된 데이터만 허용되는 구조임
- 도메인 무결성
- 주어진 속성값이 정의된 도메인에 속한 값이어야 함.
- NULL 무결성
- 특정 속성에 대해 NULL을 허용하지 않는 특징
- 고유 무결성
- 특정 속성에 대해 값이 중복되지 않는 특징
- 키 무결성
- 하나의 릴레이션에는 적어도 하나의 키가 존재해야 함
- 테이블이 서로 관계를 가질 경우 반드시 하나 이상의 조인키를 가짐
※ 용어 정리
- 도메인 : 각 컬럼(속성)이 갖는 범위
- 릴레이션 : 테이블간 관계를 말함
- 튜플 : 하나의 행을 말함
- 키 : 식별자
■ ERD(Entity Relationship Diagram)
- ERD란 테이블 간 서로의 상관관계를 그림으로 표현한 것
- ERD의 구성요소에는 엔터티(Entity), 관계(Relationship), 속성(Attribute)이 있음
- → 현실 세계의 데이터는 이 3가지의 구성요소로 모두 표현 가능
'SQLD' 카테고리의 다른 글
[2과목] 2-3. 함수 (0) | 2024.03.05 |
---|---|
[2과목] 2-2. SELECT문 (1) | 2024.03.05 |
[1과목] 1-10. 본질식별자 (1) | 2024.03.04 |
[1과목] 1-9. null 속성의 이해 (0) | 2024.03.04 |
[1과목] 1-8. 모델이 표현하는 트랜잭션의 이해 (0) | 2024.03.04 |