일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- 프로그래머스 문자열 정렬
- 백준 N과 M 자바
- 문자열
- 프로그래머스
- 스택
- 삼각형의 완성조건
- 프로그래머스 자바
- StringTokenizer
- 버퍼
- 스프링부트 도커
- index of
- Lv1
- Queue
- 클라이언트
- 이진수 변환
- 스프링부트 도커로 배포
- 프로그래머스 풀이
- 오름차순 정렬
- 자바
- Programmers
- 스프링부트 도커 배포
- 백준
- 큐
- 알고리즘
- SWEA
- COS Pro
- Stack
- lv0
- lv2
- Today
- Total
mun dev
[DB] 데이터베이스 기초 개념 및 정리 본문
데이터베이스(Database, DB)란?
여러 사람이 공유할 목적으로 체계화해 통합, 관리 하는 데이터의 집합, 스프레드 시트와 기능은 거의 유사하지만, 컴퓨터 언어로 제어가 가능하며 앱이나 웹을 통해 공유가 가능하여 전세계 누구나 데이터베이스에 접근하고 편집이 가능하다는 장점이 있음
데이터베이스의 특징
실시간 접근성(Real Time Accessibility)
: 실시간 처리에 의한 응답이 가능해야 한다.계속적인 변화(Continuous Evolution)
: 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지동시 공용(Concurrent Sharing)
: 다수의 사용자가 같은 내용의 데이터를 이용할 수 있어야 한다.내용에 의한 참조(Content Reference)
: 데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터를 찾는다.
데이터베이스(DataBase, DB)
관계형 데이터베이스
: 여러 개의 테이블이 특정 관계로 이루어져 있는 구조를 가진 데이터 베이스엔티티(Entity)
: 사람 ,장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체엔티티 집합(Entity Set)
: 동일한 속성을 가진 엔티티들의 집합, 엔티티 집합에 속한 요소들이 여러 엔티티 집합에 속할 수도 있다.
스키마(Schema)
데이터베이스의 구조를 전반적으로 기술한 것, 구체적으로 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship)등을 정의한 것을 말한다. 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 구분한다.
외부스키마(사용자 뷰)
: 사용자의 입장에서 정의한 데이터 베이스의 논리적 구조 데이터들을 어떤 형식, 구조, 화면을 통해 사용자에게 보여줄 것인가에 대한 명세를 말하며 하나의 데이터베이스에는 여러 개의 외부스키마가 있을 수 있다.개념스키마(전체적인 뷰)
: 데이터베이스의 전체적인 논리적 구조, 모든 이용자가 필요로 하는 데이터를 총합한 조직 전체의 데이터 베이스로 하나만 존재한다. 개체간의 관계와 제약조건, 데이터베이스의 접근 권한, 보안등에 관한 명세를 나타낸다. 데이터베이스 관리자에 의해서 구성내부스키마
: 물리적 저장장치의 입장에서 본 데이터베이스 구조, 실제로 데이터베이스에 저장될 레코드의 물리적인 구조, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서등을 나타낸다.
표 관련 용어
Relation(=table)
: 관계형 데이터 베이스에서 정보를 구분하여 저장하는 기본 단위Tuple(=Record)
: 테이블에서 행을 의미, 튜플은 릴레이션에서 같은 값을 가질 수 없다. 튜플의 수는 카디날리티(Cardinality)라고 한다.Attribute(=Field)
: 테이블에서 열을 의미, 같은 말로는 컬럼이라고 하며 어트뷰트의 수는 디그리(Degree)라고도 함식별자(Indentifier)
: 여러 개의 집합체를 담고 있는 관계형 데이터 베이스에서 각각의 구분할 수 있는 논리적인 개념특성
유일성: 하나의 릴레이션에서 모든 행은 서로 다른 키 값을 가져야 한다.
최소성: 꼭 필요한 최소한의 속성들로만 키를 구성해야 한다.
Key
데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 어트리뷰트
후보키(Cardidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본 키로 사용할 수 있는 속성들을 의미
- 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
- 유일성과 최소성을 만족시켜야 한다.
기본키(Primary Key)
- 후보키 중에서 선택한 Main Key
- 한 릴레이션에서 특정 튜플을 유일하게 구별
- null 값을 가질 수 없음, 동일한 값이 중복되어 저장될 수 없음
슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.
- 릴레이션을 구성하는 모든 튜플에 대해 유일성을 만족 시키지만, 최소성을 만족시키지 못한다.
- ex. 학번 + 주민번호를 사용해 슈퍼키를 만들면 유일성은 만족하지만 학번이나 주민번호 하나만 가지고 다른 튜플들을 구분할 수 있으므로 최소성을 만족하지 못한다.
외래키(Foregin Key)
- 어떤 릴레이션 간의 기본키를 참조하는 속성, 테이블들 간의 관계를 나타내기 위해서 사용된다.
- 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합을 의미
- 외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 되지만, 외래키의 속성의 도메인과 참조되는 기본키 속성의 도메인은 반드시 같아야 한다.
- 외래키는 기본키를 참조하지만 기본키가 아니기 때문에 null값을 가질 수 있고, 서로 다른 튜플이 같은 값을 가질 수 있다.
관계형 데이터 모델의 제약 조건
- 기본키를 구성하는 모든 속성은
null
을 가질 수 없다. - 외래키는 참조할 수 없는 값을 가질 수 없다.
무결성이란?
무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실세계의 실제 값이 일치하는 정확성을 의미한다.
무결성을 유지하는 방법
대표적으로 사용되는 방법은 중앙통제에 의한 데이터 갱신으로서, 이 방법은 검증 프로그램을 이용하여 모든 갱신 처리 과정에서 반드시 검증 단계를 거치도록 통제를 가한다.
검증 프로그램이 무결성을 검증하기 위해 무결성 규정을 사용한다.
✔️ 규정 이름: 무결성 규정을 참조할 때 사용하는 식별자
✔️ 트리거 조건: 트랜잭션의 접근 유형및 데이터, 검사할 시기 명시
✔️ 프레디킷(제약조건): 무결성을 위한 검사 조건
✔️ 위반조치 : 검사결과 무결성 위반이 발견되었을 때 처리할 조치
무결성의 종류
널 무결성
: 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정고유 무결성
: 릴레이션의 특정 속성에 대해서 각 튜플이 갖는 값들이 서로 달라야 한다는 규정참조 무결성
: 외래키 값은 Null 이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정도메인 무결성
: 특정 속성의 값이, 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정키 무결성
: 하나의 테이블에는 적어도 하나의 키가 존재해야 한다는 규정
무결성 제약조건
데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약조건을 의미함
개체 무결성
릴레이션에서 기본키를 구성하는 속성은 Null값이나 중복 값을가질 수 없다.
참조 무결성
외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
외래키와 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다.
관계 대수
- 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는 가를 기술하는 절차적 언어이다.
- 관계대수는 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과도 릴레이션이다.
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.
- 대표적으로 순수 관계 연산자와 일반 집합 연산자가 있다.
순수 관계 연산자
순수 관계 연산자란 관계 데이터 베이스에 적용할 수 있도록 특별히 개발한 관계 연산자
select
: 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만든다.
project
: 주어진 릴레이션에서 속성 리스트에 게시된 Attribute만을 추출하는 연산
릴레이션의 열(세로)에 해당하는 Attribute를 추출하는 것이므로 수직 연산자라고도 한다.
join
: 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
division
: 두 개의 릴레이션이 있을 때 하나의 속성(A)이 다른 하나의 속성(B)값을 모두 가진 튜플에서 B가 가진 속성을 제외한 속성만을 구하는 연산
일반 집합 연산자
수학적 집합 이론에서 사용하는 연산자로서 릴레이션 연산에도 그대로 적용할 수 있다.
일반 집합 연산자: 합집합, 교집합, 차집합, 교차곱
관계해석
- 관계 데이터 모델의 제안자인 코드가 수학에 가까운 기반을 두고 관계 데이터베이스를 위해 제안하여 탄생
- 관계해석은 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때는 계산 수식을 사용
- 관계해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지님
- 튜플 관계 해석과 도메인 관계 해석이 있다.
- 기본적으로 관계 해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등하며 관계 대수로 표현하는 식은 관계해석으로 표현할 수 있다.
- 질의어로 표현한다.
'DB' 카테고리의 다른 글
[SQL] 서브 쿼리 활용(INSERT, UPDATE, DELETE, MERGE) (1) | 2024.02.06 |
---|---|
[DB] 락(LOCK)이란? (1) | 2024.02.06 |
[SQL] Join 이란, Join의 종류, inner join과 outer join의 차이점 (0) | 2024.01.22 |
[DB] DDL, DML, DCL 종류 및 개념 (0) | 2024.01.19 |
[DB] SQL CASE WHEN THEN 구문 사용법 (0) | 2023.10.29 |