데이터
- 관찰의 결과로 나타난 정략적인 실제 값
정보
- 데이터에 의미를 부여한 것
지식
- 사물이나 현상에 대한 이해
정보처리
- 데이터에서 정보를 추출하는 과정 또는 방법
정보 시스템
- 조직 운영에 필요한 데이터를 수집하여 저장해두었다가 필요할 때 융여한 정보를 만들어주는 수단
Database
- Database를 한 마디로 정의하면 ‘데이터의 집합’이라고 할 수 있음
- 정보 시스템 안에 데이터를 저장하고 있다가 필요할 때 제공하는 역할을 담당
- 데이터의 검색과 변경 작업을 주로 수행
Database 개념
- 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영데이터의 집합
- 통합된 데이터 : 데이터를 통합하는 개념
- 공유된 데이터 : 컴퓨터 저장장치에 데이터 의미
- 저장 데이터 : 업무를 위한 검색을 할 목적으로 저장된 데이터
- 공용 데이터 : 공동으로 사용되는 데이터를 의미
Database 특징
- 실시간 접근성 : 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야함
- 데이터베이스는 실시간으로 서비스 됨
- 지속적인 변화 : 데이터베이스의 상태는 동적이어야 함. 즉, 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지해야 함
- 데이터베이스는 삽입, 삭제 등의 작업을 통해 바뀐 데이터 값을 저장
- 동시 공용 : 데이터베이스는 서로 다른 목적을 가진 여러 응요자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 함
- 데이터베이스에 접근하는 프로그램이 여러 개 있다는 의미
- 내용에 따른 참조 : 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 찾음
- 데이터베이스에 저장되는 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조
DBMS
- ‘Database Management System’ 의 약자로 Database를 관리하고 운영하는 소프트웨어를 의미
- 즉, 사용자와 데이터베이스를 연결시켜주는 소프트웨어
장점 | 단점 |
|
|
기능
- 데이터 정의 : 데이터 구조를 정의
- 데이터 조작 : 데이터를 조작하는 소프트웨어가 요청하는 삭제, 삽입, 수정 작업 지원
- 데이터 추출 : 사용자가 조회하는 데이터 또는 응용 프로그램의 데이터 추출
- 데이터 제어 : 데이터베이스 사용자 생성, 모니터리아며 데이터 접근을 제어
스키마 요소
- 속성 : 릴에이션 스키마의 열
- 도메인 : 속성이 가질 수 있는 값의 집합
- 차수 : 속서의 개수
- 인스턴스 : 스키마네 따라 데이터베이스에 실제 저장된 값
인스턴스 요소
- 투플 : 릴레이션의 행
- 카디널리티 : 투플의 개수
Key
- 특정 투플을 식별하기 위해 사용되는 속성 혹은 속성의 집합
- 슈퍼 키 : 투플을 유일하게 식별할 수 있는 속성 혹은 속성의 집합
- 후보 키 : 투플을 유일하게 식별할 수 있는 속성의 최소 집합
- 복합 키 : 2개 이상의 속성으로 이루어진 키
- 기본 키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키
- 고려사항 : null 값 X, 고유한 값을 가져야 함
- 대리 키 : 기본 키가 보안을 요하거나, 마땅한 키가 없을 경우 일련번호와 같은 사상의 속성을 만들어 기본 키로 삼는 경우
- 대체 키 : 기본 키로 선정되지 못한 후보키
- 외래 키 : 다른 릴레이션의 키본 키를 참조하는 속성
- 특징
- 릴레이션 간의 관계를 표현
- null 값, 중복 값 허용
- 참조하고 참조되는 양쪽 릴레이션의 도메인이 같아야 함
- 참조되는 값이 변하면 참조하는 값도 변함
- 특징
무결성 제약 조건
- 데이터의 무결성을 보장, 일관됭 상태로 유지하기 위한 규칙
데이터의 무결성 제약 조건
- 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것
개체 무결성 제약 조건
- 기본 키 제약, 기본 키는 null 값 X
참조 무결성 제약 조건
- 외래 키 제약, 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 함
- 참조 무결성 제약 조건의 옵션 (부모 릴레이션에서 투플을 삭제할 경우)
- RESTRICTED : 자식 릴레이션에서 참조하고 있을 경우, 부모 릴에이션의 삭제 작업을 거부함
- CASCADE : 자식 릴레이션의 관련 투플을 같이 삭제 처리함
- DEFAULT : 자식 릴레이션의 관련 투플을 미리 설정해둔 값으로 변경함
- NULL : 자식 릴레이션의 관련 투플을 NULL값으로 설정함(NULL값을 허가한 경우)
- 참조 무결성 제약 조건의 옵션 (부모 릴레이션에서 투플을 삭제할 경우)
Database 언어
- DDL (데이터 정의어) : 데이터베이스 구조를 정의, 수정, 삭제하는 언어 [alter, create, drop]
- 테이블이나 관계의 구조를 생성하는데 사용, 테이블 생성, 변경, 제거 기능 제공
- DML (데이터 조작어) : 데이터베이스내의 자료 검색, 삽입, 삭제를 위한 언어 [select, insert, update, delete]
- 테이블에 새 데이터를 삽입, 저장된 데이터를 수정, 삭제, 검색하는 기능 제공
- DCL (데이터 제어어) : 데이터에 대해 무결성 유지, 병생 수행 제어, 보호와 관리를 위한 언어 [commit, rollback, grant, revoke]
- 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능 제공
DDL
CREATE 문
- 테이블 구성, 속성과 속성에 관한 제약 정의, 기본 키 및 외래 키를 정의하는 명령어
- PRIMARY KEY : 기본 키 지정
- FOREIGN KEY : 외래키 지정
- ON UPDATE : 외래키 속성 / ON DELETR : 투플 삭제 시
- 외래 키 제약조건을 명시할 때는 반드시 참조되는 테이블이 존재해야하 하며 참도죄는 테이블의 기본키여야 함
ALTER 문
- 생성된 테이블의 속성과 속성에 관한 제약을 변경하며, 기본키 및 외래키를 변경
- ADD, DROP은 속성을 추가하거나 제거할 때 사용
- MODIFY는 속성의 기본값을 설정하거나 삭제할 때 사용
DROP 문
- 테이블을 삭제하는 명령어
- 테이블의 구조와 데이터를 모두 삭제함
- 데이터만 삭제 - DELETE
DML
INSERT 문 / 삽입
- 테이블에 새로운 투플을 삽입하는 명령어
UPDATE 문 / 수정
- 특정 속성 값을 수정하는 명령어
DELEDT 문 / 삭제
- 테이블에 있는 기존 투플을 삭제하는 명령어
SELECT 쿼리의 수행 순서
- FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > DISTINCT > ORDER BY > LIMIT
- FROM
- 각 테이블을 확인
- ON
- JOIN 조건을 확인
- JOIN
- JOIN이 실행되어 데이터가 SET으로 모아지게 됨
- 서브쿼리도 함께 포함되어 임시 테이블을 만들 수 있음
- WHERE
- 조건 작성
- 비교 : =, <, >, <=, >=
- 범위 : BETWEENT
- 집합 : IN, NOT IN
- 패턴 : LIKE, NULL, IS NULL, IS NOT NULL
- 복합 조건 : AND, OR, NOT
- 조건 작성
ON이 WHERE 보다 먼저 실행되어 JOIN을 하기 전에 필터링을 하고 (=ON 조건으로 필터링이 된 레코들간 JOIN이 이뤄짐)
WHERE은 JOIN을 한 후에 필터링을 함 (=JOIN을 한 결과에 WHERE 조건절로 필터링이 이뤄짐)
- GROUP BY
- 속성이 같은 값끼리 그룹화
- 특정 컬럼을 기준으로 연산한 결과를 집계 키로 정의하여 그룹을 짓는 역할
- 집합 연산자는 COUNT, SUM, AVG, MAX, MIN 등이 있고, DISTINCT와 같이 중복 데이터를 제거함
- HAVING
- GROUP BY 결과나타나는 그룹 제한
HAVING은 그룹을 필터링 할 때 사용되고, WHERE은 개별 행을 필터링 할 때 사용됨
집계함수(COUNT, SUM, MAX, MIN, AVG 등)는 HAVING절과 함께 사용할 수 있음
하지만 WHERE절은 집계함수 사용 할 수 없음
HAVING은 그룹화 또는 집계가 발생한 후 필터링하는데 사용되고,
WHERE은 그룹화 또는 집계가 발생하기 전에 필터링하는데 사용됨.
- SELECT
- 질의 결과 추출되는 속성 리스트 열거
- DISTINCT
- 표현된 행에서 중복된 행은 삭제
- ORDER BY
- 지정된 데이터를 기준으로 오름차순, 내림차순 지정
- ASC : 오름차순, defualt
- DESC : 내림차순
- 지정된 데이터를 기준으로 오름차순, 내림차순 지정
- LIMIT
- LIMIT에서 벗어나는 행들은 제외되어 출력
트리거(Trigger)
- 트리거는 특정 테이블에 대한 이벤트에 반응해 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램
- 사용자가 직접 호출하는 것이 아닌, 데이터베이스에서 자동적으로 호출한다는 특징이 있음
RDBMS
- ‘Relational DBMS’의 약자로 관계형 데이터베이스
- RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있음
- 테이블간 FK(Foreign Key)를 통해 다른 데이터를 조합해서 함께 볼수 있다라는 장점이 있음
RDBMS와 NoSQL의 차이점
RDBMS는 모든 데이터를 2차원 테이블 형태로 표현함
- 장점 : 스키마에 맞춰 데이터를 관리하기 때문에 데이터으이 정합성을 보장할 수 있음
- 단점 : 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며 Scale-out이 어려움 (Scale-up만 가능)
NoSQL은 RDBMS와 반대로 데이터간의 관계를 정의하지 않고, 스키마가 없어 좀 더 자유롭게 데이터를 관리할 수 있으며, 컬렉션이라는 형태로 데이터를 관리함
- 장점
- 스키마가 없이 Key-Value 형태로 데이터를 관리해 자유롭게 데이터를 관리할 수 있음
- 데이터 분산이 용이하여 성능 향상을 위한 Scale-up뿐만 아니라 Scale-out 또한 가능함
- 단점
- 데이터 중복이 발생할 수 있고, 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수행해야 함
- 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않아 데이터 구조 결정이 어려울 수 있음
RDBMS와 NoSQL의 적합한 사용 경우
RDBMS는 데이터 구조가 명확하고, 변경 될 여지가 없으며 스키마가 중요한 경우 사용하는 것이 좋음. 또한 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합함.
NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장 될 수 있는 경우 사용하는 것이 좋음. 또한 단점에서도 명확하듯 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시 모든 컬렉션에서 수정해야 하기 때문에 Update가 많이 이루어지지 않는 시스템에 좋으며, Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 해서 DB를 Scale-out 해야 되는 시스템에 적합함.
트랜잭션
- 작업의 완전성을 보장
- 작업들을 모두 처리하거나 처리하지 못할 경우 이전 상태로 복구하여 작업의 일부만 적용되는 현상이 발생하지 않게 들어주는 기능
- 하나의 트랜잭션은 Commit(작업완료)되거나 Rollback(취소)됨
트랜잭션의 특성(ACID)
- 원자성( Atomicity ): 작업이 모두 반영되던지 아니면 전혀 반영되지 않아야 함
- 일관성 ( Consistency ) : 실행이 완료되면 언제나 일관성 있는 상태를 유지해야 함
- 독립성 ( Isolation ) : 둘 이상 트랜잭셩이 동시에 실행될 경우 서로의 연산에 끼어들 수 없음
- 영속성 ( Durability ) : 완료된 결과는 연구적으로 반영되어야 함
참고
'🗂️ Study > 📊 MySQL' 카테고리의 다른 글
부속질의 (subquery) (0) | 2024.07.05 |
---|---|
정규화(Normalization) (0) | 2024.05.29 |
JOIN (0) | 2024.05.21 |
CREATE (0) | 2024.05.21 |
SQL (0) | 2024.05.21 |