DB#2

조영문·2023년 2월 8일
0

DB

목록 보기
2/4

관계형 데이터베이스란 rdbms

관계형 데이터베이스(RDB)는 테이블, 행, 열의 정보를 구조화하는 방식입니다. RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어, 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있습니다.

속성(열)은 데이터 유형을 지정하며 각 레코드(또는 행)는 구체적인 데이터 유형의 값을 포함합니다. 관계형 데이터베이스의 모든 테이블에는 행에서 고유하게 식별 가능한 기본 키라는 속성이 있으며, 외래 키(다른 기존 테이블의 기본 키를 참조)를 사용하여 각 행에서 서로 다른 테이블 간의 관계를 만드는 데 사용할 수 있습니다.

데이터베이스 엔티티란 entity

엔터티(Entity)를 그대로 번역하면 실제, 독립체라는 뜻으로 데이터 모델링에서 사용되는 객체라고 생각하시면 되겠습니다. 즉 엔터티(Entity)는 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 "어떤 것(Thing)"이라고 말할 수 있습니다. "어떤 것"이라고 부르는 것처럼 엔터티는 추상적인 의미를 가지며 학교나 학생처럼 현실 세계에서 눈에 보이는 개념일 수도 있고 주문이나 결제처럼 눈에 보이지 않는 개념일 수도 있습니다

데이터베이스 테이블이라고 생각하시면 이해가 편합니다.

데이터베이스 속성이란 Attribute

데이터베이스를 구성하는 가장 작은 논리적 단위이며 개체의 특성을 기술한다. 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다. 속성의 수를 디그리(Degree) 또는 차수라고 한다.

데이터베이스 식별자란 Identifier

여러개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름의 구분자를 의미합니다. 하나의 엔터티에 구성되어 있는 여러개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드시 하나의 식별자가 존재해야 합니다.

  1. 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분
  2. 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소 수가 되어야 함
  3. 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
  4. 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야함

데이터베이스 관계란 relationship

릴레이션(Relation)은 데이터들의 표(Table)의 형태로 표현한 것으로, 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성된다

데이터베이스 제약조건

제약조건이란 데이터의 무결성을 지키기위해 입력받은 데이터에 대한 제한을 두는 것을 의미합니다.

데이터베이스 무결성

데이터 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미합니다. 여기서 정확성이란 중복이나 누락이 없는 상태를 뜻하고, 일관성은 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태를 뜻합니다.
만약 데이터베이스에서 데이터 무결성 설계를 하지 않는다면 테이블에 중복된 데이터 존재, 부모와 자식 데이터 간의 논리적 관계 깨짐, 잦은 에러와 재개발 비용 발생 등과 같은 문제가 발생할 것입니다.
그렇기 때문에 DBMS에서 데이터의 무결성이 유지되는 것은 중요한 사항이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지합니다.

  1. 개체 무결성(Entity integrity)
    기본 키 제약이라고도 하며, 테이블은 기본키를 지정하고 그에 따른 무결성 원칙을 지켜야 하는 조건
    기본 키(Primary Key)에는 Null 값이 올 수 없음
    기본 키는 테이블 내에 오직 하나의 값만 존재해야 함
    (하나의 테이블 내에 동일한 기본 키를 가진 레코드는 존재할 수 없음)
    기본 키란?
    테이블에서 특정 레코드를 구별하기 위해 후보 키 중에서 선택된 고유한 식별자 키
  2. 참조 무결성(Referential integrity)
    외래 키 제약이라고도 하며, 테이블 간의 참조 관계를 선언하는 제약조건
    외래 키(Foreign Key)의 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함
    외래 키 속성은 참조할 수 없는 값을 지닐 수 없음
    (즉, 외래 키 속성 값이 상위 테이블의 인스턴스에 반드시 존재하거나 Null이어야 함)
    외래 키란?
    한 테이블의 키 중에서 다른 테이블의 레코드를 유일하게 식별할 수 있는 키
  3. 도메인 무결성(Domain integrity)
    테이블에 존재하는 필드의 무결성을 보장하기 위한 것으로 필드의 타입, Null 값 허용 등에 대한 사항을 정의하고 올바른 데이터가 입력되었는지 확인하는 조건
    예를 들어 주민등록번호 필드에 문자가 입력되는 경우엔 도메인의 무결성이 깨졌다고 볼 수 있음
  4. Null무결성(Null integrity)
    테이블의 특정 속성 값이 Null이 될 수 없게 하는 조건
  5. 고유 무결성 (Unique integrity)
    테이블의 특정 속성에 대해 각 레코드들이 갖는 값들이 서로 달라야 하는 조건
  6. 키 무결성 (Key integrity)
    하나의 테이블에는 적어도 하나의 키가 존재해야 하는 조건
  7. 관계 무결성 (Relationship integrity)
    테이블의 어느 한 레코드의 삽입 가능 여부 또는 한 테이블과 다른 테이블의 레코드들 사이의 관계에 대한 적절성 여부를 지정한 조건

데이터베이스 인덱스

인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 만약 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아 보는것은 오랜 시간이 걸린다. 그렇기 때문에 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 index는 책의 색인과 같다.
데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고 있다.

데이터베이스 풀스캔과 인덱스스캔

풀스캔 : 테이블에 포함된 레코드를 처음부터 끝까지 읽어들임
인덱스스캔 : 인덱스라는 녀석도 결국 하나의 Mapping 테이블, 정확히는 Tree 구조로 데이터가 저장되어있다.

데이터베이스 프로시저와 함수

프로지서 : 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이며, 일련의 작업을 정리한 절차입니다.
하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합입니다.
함수 : 여러 작업을 위한 기능이라면 프로시저는 작업을 정리한 절차입니다. 보통 로직을 도와주는 역할이며, 간단한 계산, 수치 등을 나타낼 때 사용합니다. 보통 단독으로 실행해야 할 작업을 위임받았을 때 사용합니다.

데이터베이스 트리거

데이터베이스 트리거(Database Trigger)는 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다. 트리거는 데이터 조작 언어(DML)의 데이터 상태의 관리를 자동화하는 데 사용된다.

데이터베이스 정규화

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다.

데이터베이스 반정규화

데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다.
반정규화는 조회(select) 속도를 향상시키지만, 데이터 모델의 유연성은 낮아진다.

데이터베이스 명령어

DCL : 데이터 조작어(SELECT, INSERT, UPDATE, DELETE)
DDL : 데이터 정의어(CREATE, ALTER, DEOP, RENAME...)
DML : 데이터 제어어(GRANT, REVOKE)
TCL : 트랜잭션 제어어(COMMIT, ROLLBACK, SAVEPOINT)

데이터베이스 UNION

UNION 구문은 둘 이상의 SELECT statements를 결합시킬때 이용한다.
각 UNION이된 SELECT statement는 같은 열의 수를 가진다.
열은 반드시 같은 데이터 타입이다.
각 SELECT statement의 열은 같은 순서를 가진다.

데이터베이스 exist

EXISTS(서브 쿼리)는 서브 쿼리의 결과가 "한 건이라도 존재하면" TRUE 없으면 FALSE를 리턴한다. EXISTS는 서브 쿼리에 일치하는 결과가 한 건이라도 있으면 쿼리를 더 이상 수행하지 않는다.

0개의 댓글