Database System : DB , DBMS 등을 포함하는 전체적인 system
<DBMS>
DBMS(DataBase management Systems) : DataBase를 관리해주는 시스템 소프트웨어
(ex - MySQL , Oracle...)
(DBMS밑에 운영체제)
필수 기능 : 1. 정의 기능 -> DDL(Data Definition Language) :
(CREATE , DROP , ALTER)
2. 조작 기능 -> DML(Data Manipulation Language) :
(SELECT, INSERT, DELETE, UPDATE)
3. 제어 기능 -> DCL (Data Control Language) :
(GRANT-권한 부여, REVOKE-권한 회수)
TCL(Transaction //) -> COMMIT, ROLLBACK , SAVEPOINT
트랜잭션 : 데이터 처리 단위 (ex - 계좌 이체 -> 출금하고 다른 계좌에 입금하는게 세트)
<데이터 처리 시스템>
- 일괄 처리 (Batch)
- 온라인 처리 (일반적으로 많이 사용)
- 분산 처리
1. 위치 투명성 : 엑세스하려는 데이터베이스의 실제 위치를 알 필요가 없음.
2. 중복 투명성 : 중복 데이터가 여러 곳에 중복되어 있더라도 사용자는 하나만 존재하는 것처럼 사용
3. 병행 투명성 : 다수의 트랜잭션들이 동시에 실행되도 그 트랜잭션의 결과는 영향받지 않음
4. 장애 투명성 : 오류가 발생해도 트랜잭션을 정확하게 처리함
DataBase 개념적 구성요소 : 개체 , 관계 ,속성
<스키마>
외부 스키마 : 사용자나 응용 프로그래머가 접근하는 데이터베이스를 정의한 것(view) (보고싶은 부분만)
개념 스키마 : 외부스키마를 모아서 하나로 보여주는 스키마 (본래 정의된 스키마)
내부 스키마 : 물리적인 관점의 스키마
논리적 데이터 독립성 : 데이터베이스의 논리적 구조를 변경시키더라도 기존 응용 프로그램에 영향을 주지 않음
(개념스키마가 변경되더라도 외부 스키마에 영향을 주지 않음)
물리적 데이터 독립성 : 물리적 구조를 변경시키더라도 기존 응용 프로그램이나 DB논리적 구조에 영향을 주지않음
(내부스키마 바뀌어도 개념스키마에 영향 주지 않음)
<관계 데이터베이스>
Relation : 스키마 + 인스턴스 (튜플의 순서가 다르고 에트리뷰트 순서가 달라도 같은 relation)
Cardinality : rows
Degree : fields
<Relation Key>
수퍼 키 : 특정 투플을 고유하게 식별하는 하나의 애트리뷰터 or 애튜리뷰트들의 집합
후보 키 : 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임 (슈퍼키 중 최소성 만족)
기본 키 : 후보키 중에서 특정하게 선정된 키 (NULL값을 가질 수 없음)
대체 키 : 기본 키가 아닌 다른 후보 키
외래 키 : 다른 릴레이션의 기본 키를 참조하는 애트리뷰트
<Relation Query Language>
- Query Language 를 사용하면 DBMS가 연산 최적화 길을 찾아줌 (SQL은 Real languages)
관계 대수 (Relational Algebra) -> 절차적 (Selection, Projection, Union, Intersection 등)
관계 해석 (Relational Calculus) -> 비절차적
<SQL>
SQL (Structured Query Language) -> 관계 대수 + 관계 해석
- SQL 사용하면 query optimizer가 최적화를 시켜줌
정의문 (스키마 정의) (IC 생성 )
- CREATE TABLE (기본 테이블 생성)
- DROP TABLE (기본 테이블의 제거)
- ALTER TABLE (기본 테이블의 변경)
Large objects (사진, 비디오 등)는 포인터로 저장됨.
조작문
- SELECT (데이터 검색) ( 순서 FROM , WHERE , SELECT )
- INSERT INTO (데이터 삽입)
- DELETE (데이터 삭제)
- UPDATE (데이터 갱신)
무결성 제약조건 (Integrity Constraints) -> 얼마든지 정의 가능
개체 무결성 (Entity Integrity) : 기본 키는 NULL가지면 안됨
참조 무결성 (Referential Integrity) : 외래키는 NULL이거나 참조 릴레이션의 기본 키 값과 동일해야함
(즉 릴레이션은 참조할 수 없는 외래 키 값을 가질 수 없음)
외래 키 선언 (cascade -> 참조 데이터 삭제 시 연쇄 삭제,
set default -> 참조 데이터 삭제 시 default값으로 변경,
set Null -> 조 데이터 삭제 시 NULL값으로 변경,
no action -> 삭제 불가),, 변경 시도 다 마찬가지
<참고 >
where절 후에 group by , 다음 having 절 (HAVING은 GROUP칸들 중 다시 선택
View -> 가상테이블 (실제 데이터가 아니라 명령어로 저장되있음)
'CS(Computer Science) > 데이터 베이스' 카테고리의 다른 글
프로그래머스 SQL 문제 (MySQL) - 2 (0) | 2020.11.08 |
---|---|
프로그래머스 SQL 문제 (MySQL) - 1 (0) | 2020.11.07 |
데이터 베이스 2(Database) (0) | 2020.09.25 |