CS 면접 준비

데이터베이스 1주차 스터디 정리

Song쏭 2023. 11. 8. 21:06

📌 1주차 : 데이터베이스란?

  • 데이터베이스 기본 개념
  • DBMS
  • 데이터베이스와 파일시스템의 차이

[상세 문항]

📌 파일 시스템과 DBMS(데이터베이스 관리 시스템)의 차이점

📌 데이터베이스의 특징

📌 DBMS 정의, 특징

📌 스키마, 3단계 데이터베이스 구조

📌 데이터 독립성

📌 RDBMS(관계형 데이터베이스 관리시스템)

📌 릴레이션 스키마와 릴레이션 인스턴스

📌 릴레이션의 차수와 카디널리티란?

📌 키(Key) 설명 (슈퍼키, 후보키, 기본키, 대체키, 외래키)

📌 무결성 제약조건 (도메인 무결성, 개체 무결성, 참조 무결성)

📌 사용했던 데이터베이스에 대한 설명 (MySQL, MariaDB)



📌 파일 시스템과 DBMS(데이터베이스 관리 시스템)의 차이점

데이터를 저장하고 꺼내서 쓸 수 있어야한다. 그 첫번째 수단이 파일이다.

파일은 위대한 정보관리 도구로, 어디에나 있고 관리하고 전송하기 쉬웠다.

데이터베이스 조차도 결국에는 그 정보를 파일로 저장한다.

파일은 장점이 많다. 배우기가 쉽고, 운영체제도 파일 기능을 제공하고 있고, 이메일 메신저 등으로 전송도 가능하기 때문이다.

 

그러나 성능이나 보안이나 편의성에 한계성을 가지고 있다.

정보가 폭발적으로 증가하고 다양해지면서 입력, 저장, 출력하는 것이 어려워졌다.

데이터를 잘 정리해서 필요할 때만 꺼내쓰고 싶다는 욕심이 생겨나기 시작한다.

 

파일의 한계를 극복하기 위해서

전문적인 소프트웨어를 고안하기 시작하고 

이런 맥락에서 나온 스프트웨어를 데이터베이스라고 부르기 시작한다.

 

데이터베이스를 이용하면 소중한 데이터를 안전하고 편리하고 빠르게 보관하고 사용할 수 있다.

세상에는 다양한 데이터베이스 제품이 존재한다.

 

프로그램에서 다루는 데이터가 많아질수록, 
그 데이터를 동시에 사용하는 사람이 많아질수록
데이터의 관리는 어려워진다.
이러한 데이터를 쉽고 편리하게 다룰 수 있도록 하기 위해 등장한 것이 DBMS(데이터베이스 관리 시스템)이다.

 

데이터베이스는 전자적으로 저장되고 체계적인 데이터 모음이다.

여기에는 단어, 숫자, 이미지, 비디오 및 파일을 포함한 모든 유형의 데이터가 포함될 수 있다.

DBMS (데이터베이스 관리 시스템)라는 소프트웨어를 사용하여 데이터를 저장, 검색 및 편집할 수 있다.

 

<DBMS와 파일 시스템의 차이점>

  DBMS (데이터베이스 관리 시스템) 파일 시스템
정의 Oracle, MySQL, MongoDB와 같은 데이터베이스 관리 시스템 메모장이나 워드패드에 기록해서 저장하는 것
데이터 중복 낮다 높다
일관성 높다 낮다
데이터 공유 쉽다 어렵다
청렴 데이터 무결성 높다 데이터 무결성 낮다
운영 쿼리로 인해 데이터 생성, 검색, 업데이트 등이 더 쉽다. 데이터 생성, 검색, 업데이트가 어렵다.
보안 있다 없다
백업 및 복구 프로세스 복잡하다 간단하다
사용자 수 여러 사용자를 지원하는 대규모에 적합하다 소규모 조직 또는 단일 사용자에게 적합하다

 

📌 데이터베이스의 특징

데이터베이스는 정보기술의 심장이고, 데이터의 집합이라고 할 수 있다.

이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리된다.

따라서 여러 업무에 여러 사용자가 데이터 베이스를 사용할 수 있다.

 

데이터베이스는 입력과 출력의 일이다.

입력은 세가지로 쪼갤 수 있다. Create, Update, Delete

출력은 한가지로 표현 가능하다. Read

 

특징으로는

1. 실시간 접근성 : 사용자의 질의에 대해 즉각적인 처리와 응답이 이루어진다.

2. 계속적인 변화 : 생성, 수정, 삭제를 통해 항상 최신의 데이터를 유지한다.

3. 동시 공유성 : 사용자들이 원하는 데이터를 동시에 공유할 수 있다.

4. 내용 참조 : 사용자가 원하는 데이터를 주소가 아닌 내용에 따라 참조할 수 있다.

 

 

📌 DBMS 정의, 특징

데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리된다.

데이터베이스를 관리하는 이러한 미들웨어를 데이터베이스 관리 시스템(DBMS : Database Management System)이라고 한다.

 

1. 데이터 독립성 : 물리적, 논리적 독립성

2. 데이터 무결성 : 데이터의 유효성 검사를 통해 데이터 무결성을 구현. 부적절한 자료가 입력되어 동일한 내용에 대해 서로 다른 데이터가 저장되는 것을 허용하지 않는 성질.

3. 데이터 보안성 : 계정관리, 권한 설정. 불법적인 노출과 변경으로부터 보호하는 성질.

4. 데이터 일관성 : 데이터의 불일치성을 배제. 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 모순이 없고 동일한 규칙내에 일정해야하는 성질

5. 데이터 중복 최소화 : 자료의 중복과 데이터의 종속성을 해결

6. 데이터 공유 : 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능

 

cf) 미들웨어(Middleware) :

응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어.

서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어.

양 쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어.


📌 스키마, 3단계 데이터베이스 구조

스키마

표(table)들을 서로 그룹핑할 때 사용하는 일종의 폴더.

서로 연관된 데이터들을 그룹핑해준다.

데이터베이스의 구조 (개체, 속성, 관계)와 제약 조건에 관해 기술한 메타데이터의 집합.

데이터베이스를 일관성 있게 만들기 위한 필요 조건이다.

데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것

스키마:데이터베이스:테이블 = 평면도:집:방

 

cf) 메타 데이터 : 데이터에 대한 데이터.

스키마, 매핑 정보, 다양한 제약조건 등을 저장

데이터베이스 관리 시스템이 스스로 생성하고 유지함

일반 사용자도 접근이 가능하지만 저장 내용만을 검색만 가능

사용자가 메타데이터를 알 필요가 없다.

 

3단계 데이터베이스 구조

하나의 데이터베이스를 관점에 따라 외부, 개념, 내부 세 단계로 나눈 것이다.

외부 스키마, 개념 스키마, 내부 스키마로 나눌 수 있다.

 

각 단계별로 다른 추상화를 제공하면 데이터베이스를 효과적으로 관리할 수 있다.

일반적으로 내부 단계에서 외부 단계로 갈수록 추상화 레벨이 높아진다.

추상화 레벨이 높아진다는 것은 데이터베이스가 실제 어떻게 돌아가는지 관심이 없다는 것과 비슷하다.

사용자 관점에서는 내부 시스템을 알 수도 없고 알 필요도 없기 때문이다.

(모든 사용자는 물리적 데이터베이스의 스토리지 세부 사항을 직접 다룰 필요가 없다.)

각 계층이 분리되어 있으므로, 클라이언트가 데이터베이스 비즈니스 로직에 직접 접근할 수 없다.

 

따라서 3단계 구조를 통해, 모든 데이터의 저장/유지와 관련된 복잡한 내용을 숨기고 필요한 데이터만 단순화한 외부 단계의 관점을 일반 사용자들에게 제공 가능하다.

외부 스키마 (개별 사용자 관점)

외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것.

각 사용자가 생각하는 데이터베이스의 모습을 표현한 논리적인 구조로 사용자마다 다르다.

데이터베이스 하나에 외부 스키마가 여러 개 존재할 수 있으며, 

사용 목적이 같은 사용자들은 외부 스키마 하나를 공유할 수 있다.

외부 스키마는 전체 데이터베이스 중 사용자가 관심을 가지는 일부분으로 볼 수 있어 서브 스키마라고도한다.

 

개념 스키마 (조직 전체의 관점)

모든 사용자에게 필요한 데이터를 통합하여 전체 데이터베이스의 논리적 구조를 정의한다.

조직 전체의 관점에서 생각하는 데이터베이스의 모습이다.

데이터베이스 하나에는 개념 스키마 하나만 존재한다. 개념 스키마의 일부분을 사용자의 이용 목적에 맞게 사용하는 것이 외부 스키마이다.

일반적으로 스키마라고 하면 개념 스키마를 의미한다.

 

내부 스키마 (물리적인 저장 장치의 관점)

전체 데이터베이스가 디스크와 테이프 같은 저장 장치에 실제로 저장되는 방법을 정의한다.

데이터베이스는 저장 장치에 파일 형태로 저장되는데

내부 스키마는 파일에 데이터를 저장하는 레코드의 구조, 레코드를 구성하는 필드의 크기, 인덱스를 이용한 레코드 접근 경로 등을 정의한다.

내부 스키마 역시 데이터베이스 하나에 내부 스키마 하나만 존재한다.

 

 

cf) 스키마들이 나누어지면 그것이 어딘가에 저장이 되어야한다.

그 어딘가는 데이터베이스 서버이다.

데이터베이스 서버 > 데이터베이스(=스키마) > 표(테이블)

 

[궁금증 정리]

스키마:데이터베이스:테이블 = 평면도:집:방 라고 했는데

그럼 스키마를 테이블이 여러개 있는 것이고 그 테이블들의 메타데이터를 모아놓은 것이라고 이해하면 정확한 것인가?

MySQL에서 물리적으로 스키마는 데이터베이스와 동의어라고한다.MySQL의 SQL 구문에서 DATABASE대신 SCHEMA로 대체할 수 있다.DB벤더마다 다르지만, 보통 스키마는 테이블의 모음을 의미하고 데이터베이스는 스키마의 모음을 의미한다.

 

테이블과 스키마의 차이점에 대해 물어본다면,

간단하게는

✔ 테이블은 행과 열로 구성된 데이터의 집합을 의미합니다.

✔ 스키마는 데이터베이스의 구조와 제약조건에 대한 명세를 기술한 것을 의미합니다.

자세하게는

✔ 테이블은 행과 열로 구성된 데이터 집합을 의미하고, 스키마는 제약조건, 무결성 규칙, 테이블, 열과 데이터 유형 등을 정의한 것입니다. 저희가 흔히 스키마라고 부르는것은 개념 스키마를 의미하는데, MySQL 에서는 스키마랑 데이터베이스랑 동일하게 볼 수 있습니다. 실제로 MySQL 에서 CREATE DATABASE 대신에 CREATE SCHEMA 를 사용하여 데이터베이스를 생성할 수 있습니다.오라클에서의 SCHEMA 는 단일 사용자가 소유한 테이블을 의미합니다. DB 벤더마다 스키마가 다른 의미로 사용되고 있다는 것을 볼 수 있습니다.

 

📌 데이터 독립성

데이터베이스 내의 데이터, 데이터를 사용하는 사용자 및 응용 프로그램, 데이터베이스의 저장 구조가

서로 영향을 받지 않는 성질을 의미한다.

 

논리적 데이터 독립성

데이터베이스의 논리적 구조가 변경되어도

응용 프로그램이나 사용자의 요구에 영향을 주지 않는 것을 말한다.

예를 들어, 테이블의 속성이나 관계가 추가되거나 삭제되어도 기존의 쿼리나 트랜잭션은 그대로 유지될 수 있다.

 

물리적 데이터 독립성

데이터베이스의 물리적 구조가 변경되어도

논리적 구조나 데이터의 내용에 영향을 주지 않는 것을 말한다.

예를 들어, 파일의 저장 방식이나 인덱스의 구성이 바뀌어도 데이터베이스의 스키마나 데이터는 그대로 유지될 수 있다.

 

cf) 논리적 : 사람이 볼 수 있는 형태

물리적 : 기계/컴퓨터가 알아 볼 수 있는 형태

 

[궁금증 정리]

데이터 독립성.. 테이블의 구조가 바뀐다면 당연히 코드 상에도 영향을 미쳐서

프로젝트가 실행이 안되거나 어떤 API가 작동이 안될 수 있는 것 아닌가?!

이 부분에 대해서 정확히 이해를 못한 것 같다.

* 구조를 최적화
ex) 인덱스 추가 같은거?

 

독립적인경우
- 가벼운 변경
ex) 필드타입 varchar(100) -> varchar(500) 변경해도 영향 안미침

- 큰 변경
ex) 디비자체가 mysql -> postgresql로 바뀌거나 기존 필드를 삭제했을때는 독립적이지 않고 바로 영향을 줌

 

 


📌 RDBMS(관계형 데이터베이스 관리시스템)

테이블이라는 구조를 사용하여 데이터를 저장하고,
이러한 테이블들 간의 관계를 통해 데이터를 관리하고 조작하는 소프트웨어.

 

SQL이라고 하는 컴퓨터 언어를 이용해서 데이터를 제어하는 관리 시스템.

엑셀과 비슷한 구조를 가지고 있다. (표 형식)

 

 

기술을 만나면 혁신과 본질을 분리해보면 좋다.

여기서는 

혁신 = Relational

본질 = Database

 

그럼 왜 관계형 데이터베이스가 필요할까?

데이터가 중복된다면 개선할 필요가 있다고 할 수 있다.

 

따라서 중복되는 데이터가 있는 열을 기준으로 새로운 테이블을 생성한다.

그 생성한 테이블의 ID를 기존 테이블의 열에 추가한다.

이렇게 테이블을 나누어 각각의 테이블이 관계를 맺어 원하는 결과를 만들 수 있다.

 

관계형데이터베이스를 이용하면 데이터를 표의 형태로 정리할 수 있고

정렬, 검색과 같은 작업을 빠르고 편리하고 안전하게 할 수 있다.

테이블을 분리하면 join을 통해 얼마든지 관계를 맺을 수 있다.

데이터 하나가 바뀌면 다른 테이블에서 조회를 할 때도 바뀐 데이터로 바로 조회가 가능하다.

 

저장은 분산해서 하고,

조회 결과는 하나의 테이블로 합쳐진 결과를 보고 싶을 것이다.

하나의 테이블로 합쳐진 결과를 보고 싶을 때, join 함수를 사용하는 것이다.

 

 

📌 릴레이션 스키마와 릴레이션 인스턴스

릴레이션

주로 테이블과 같은 의미로 사용된다. 데이터의 집합이다.

"테이블"실제 데이터베이스에서 데이터가 저장되는 형태를 가리키는 반면, "릴레이션"은 데이터가 어떻게 조직되고 관계를 맺는지에 대한 관계형 데이터베이스 이론에서의 추상적 개념이다.

실제 데이터베이스 작업에서는 "테이블"이라는 용어를 더 흔히 사용한다.

릴레이션은 튜플(tuple, 행)과 속성(attribute, 열)으로 구성되어 있다.

 

릴레이션 스키마(위 그림 참고)

릴레이션에 어떤 정보가 담길지를 정의한다. 즉, 테이블의 메타데이터라고 생각할 수 있다.

실제 데이터(행)없이 테이블의 구조만을 정의한다.

릴레이션 이름, 속성 집합, 도메인 요소를 포함한다.

 

도서 릴레이션은 도서번호, 도서이름, 출판사, 가격이라는 정보를 정의하고 있는데,

각 열을 속성(attribute)이라고 한다. 속성에는 각각의 이름이 있으며 우리는 그 이름을 보고 어떤 정보가 담겨있는지 알 수 있다.

하지만 컴퓨터는 속성만으로 어떤 타입의 데이터인지 알 수 없다.

따라서 각 속성들이 어떤 값을 가질 수 있는지를 도메인이라는 용어를 사용하여 정의한다.

또한 릴레이션이 몇 개의 속성을 가지는가를 나타내기 위해 차수(degree, 속성의 개수)라는 용어를 사용한다.

 

릴레이션 인스턴스(위 그림 참고)

릴레이션 스키마에 실제로 저장된 데이터의 집합이다.

도서 릴레이션을 보면 도서번호가 1~5까지 총 5권의 데이터가 저장된 것을 알 수 있다.

튜플은 릴레이션 인스턴스의 각각의 행을 나타낸다.

각 튜플의 속성 값은 스키마에서 정의한 도메인 값으로 구성되며

튜플이 가지는 속성의 개수는 스키마의 차수와 동일하다.

또한 릴레이션 내의 모든 튜플들은 서로 중복되지 않아야한다.

릴레이션에 저장된 튜플의 수를 카디널리티라고 한다. 카디널리티는 튜플의 삽입, 삭제, 수정 등에 따라 수시로 변한다.

 

 

📌 릴레이션의 차수와 카디널리티란?

차수(degree) : 속성(열, attribute, column)의 개수를 표현한다.

 

카디널리티(cardinality) : 튜플(행, tuple, row)의 개수를 표현한다.

 


📌 키(Key) 설명 (슈퍼키, 후보키, 기본키, 대체키, 외래키)

하나의 릴레이션에는 수많은 튜플이 존재한다. 

고객 정보를 저장한 릴레이션에는 많은 고객들에 대한 튜플이 존재하며, 각 튜플들 간에는 중복되는 속성값이 발생할 수 있다.

예를들어 이름, 나이, 사는 곳 등의 정보가 중복될 수 있는데, 이때 각각의 고객(튜플)을 구분하기 위한 기준이 되는 속성이 필요하다.

이것을 우리는 "키"라고 부르며 하나의 속성 또는 여러 속성들의 집합으로 표현할 수 있다.

 

키의 종류로는 슈퍼키, 후보키, 기본키, 대체키, 외래키가 있다.

각각의 키에 대해 공부하기 전에 최소성과 유일성이라는 개념에 대해 정리한다.

 

유일성

하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질을 말한다. 

여러 개의 튜플이 존재할 때 각각의 튜플을 서로 구분할 수 있는 속성이 존재해야한다.

각각의 튜플은 유일해야한다는 뜻이다. 

예를들어 어떤 릴레이션에 주민번호, 나이, 사는 곳, 혈액형이라는 속성이 존재한다고 하자.

이때 나이, 사는 곳, 혈액형은 모두 충분히 중복될 수 있는 속성들이다.

하지만 주민번호는 모두 다르기 때문에 주민번호 속성에서 중복은 절대 발생할 수 없다.

이 릴레이션에서 키는 주민번호로 지정될 것이며

이렇게 각각의 튜플을 구분할 수 있는 성질을 유일성이라고 표현한다.

 

최소성

키를 구성하는 속성들 중 가장 최소로 필요한 속성들로만 키를 구성하는 성질을 말한다.

쉽게 말해, 키를 구성하고 있는 속성들이 진짜 각 튜플을 구분하는 데 꼭 필요한 속성들로만 구성되어 있는지를 의미한다.

예를들어, 위와같은 릴레이션에서 주민번호와 나이 두가지가 함께 키로 지정이되어 있다면, 

당연히 이 키는 각 튜플을 구분할 수 있다. 주민번호와 나이가 모두 같은 사람은 세상에 존재하지 않기 때문에 이렇게 말할 수 있지만

더 간단하게 주민번호가 중복되는 사람은 세상에 존재하지 않는다.

따라서 주민번호와 나이로 지정된 키는 최소성을 만족하지 않고

해당 키에서 나이를 뺀 주민번호만 키로 지정이 될 경우, 이 키는 최소성을 만족한다고 할 수 있다.

 

슈퍼키 (Super Key) : 유일성O, 최소성X

유일성의 특성을 만족하는 속성 또는 속성들의 집합을 의미한다.

키 값이 같은 튜플은 존재할 수 없다. 예를 들어 (고객 아이디) 의 경우 아이디가 같은 고객은 없기 때문에 슈퍼키가 될 수 있다. 하지만 (직업, 나이, 등급) 의 경우 나이, 직업, 등급이 같은 고객은 충분히 있을 수 있기 때문에 슈퍼키로 사용할 수 없다. 하지만 (고객 아이디, 직업, 나이, 등급) 의 경우는 고객 아이디가 각 튜플을 구분할 수 있는 속성이기 때문에 슈퍼키가 될 수 있다. 이처럼 슈퍼키는 유일성은 만족하지만 최소성은 만족하지 않는 키를 의미한다.

 

후보키 (Candidate Key) : 유일성O, 최소성O

슈퍼키 중 최소성을 만족하는, 즉 유일성과 최소성을 모두 만족하는 속성 또는 속성들의 집합이다. 위의 슈퍼키에서 들었던 예시에서 (고객 아이디, 직업, 나이, 등급) 은 각 튜플을 유일하게 식별할 수 있으므로 유일성은 만족한다. 하지만 여기서 직업, 나이, 등급 정보가 굳이 필요할까? 이 속성들은 튜플 간에 중복되는 속성값을 가지고 있고, 이 속성들이 포함되어 있지 않은 (고객 아이디) 만으로도 튜플의 식별에는 전혀 문제가 되지 않는다. 그러므로 위의 키에서 직업, 나이, 등급을 제외한 (고객 아이디) 는 최소성을 만족하며 후보키가 될 수 있다.

 

기본키 (Primary Key) : 후보키 중 선택받은 키

각 튜플을 구별할 수 있으며 유일성과 최소성을 모두 만족하는 후보키가 구해졌다. 후보키는 한 테이블 내에서 여러 개 존재할 수 있는데, 여기서 우리는 여러 후보키 중 하나를 택해 사용해야 하며 여기서 선택된 키가 기본키가 된다. 

하지만 모든 후보키가 기본키가 되는 것은 아니고 기본키를 선택함에 있어서 다음의 기준을 통과해야 한다.
1) NULL 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적절하다.
2) 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적절하다.
3) 단순한 후보키를 기본키로 선택한다.

 

NULL 값을 가질 수 없다. (개체 무결성의 첫번째 조건)
기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다. (개체 무결성의 두번째 조건)

 

대체키(Alternate Key) : 후보키 중 선택받지 못한 키

기본키로 선택받지 못한 후보키들이다. 

이름에서 알 수 있듯 대체키는 기본키를 대신할 수 있는 자격은 있지만, 

기본키의 위 1)~3) 조건에 부합하지 않아 기본키로 선택받지 못한 키들을 의미한다. 대체키는 '보조키' 라는 이름으로도 불린다.

 

외래키 (Foreign Key) : 다른 릴레이션의 기본키를 참조

관계를 맺고 있는 릴레이션 R1, R2 에서 릴레이션 R1 이 참조하고 있는 릴레이션 R2 의 기본키와 같은 R1 릴레이션의 속성이다. 

다시 말해 다른 릴레이션의 기본키를 그대로 참조하는 속성 또는 속성들의 집합이 외래키이다. 

외래키는 릴레이션 간의 관계를 올바르게 표현하기 위해 필요하다.

외래키로 지정되면 참조 테이블의 기본키에 있지 않는 값은 입력이 불가하다.

 

+ 대리키(Surrogate Key)

데이터 모델 내의 자연스러운 속성과는 무관하게 데이터베이스 관리시스템이나 설계자에 의해 인위적으로 생성되는 키이다.

대리키는 주로 기존의 자연키가 복잡하거나 변동 가능성이 있을 때 사용된다.

그리고 인위적으로 생성되어 기본키로 사용되는 키이다. 

예를들어, 데이터베이스 내의 테이블에서 자동 증가하는 일련번호나 UUID같은 값을 대리키로 할당하여 각 레코드를 유일하게 식별할 수 있도록 한다.


📌 무결성 제약조건 (도메인 무결성, 개체 무결성, 참조 무결성)

무결성(Integrity)이란 데이터의 정확성, 일관성을 나타낸다.

데이터에 결함이 없는 상태, 즉 데이터를 정확하고 일관되게 유지하는 것을 의미한다.

 

무결성 제약조건(Integrity Constraint)이란 데이터베이스의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건이다.

주요 목적은 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것이다.

 

- 도메인 무결성

속성들의 값은 정의된 도메인에 속한 값이어야한다.

성별이라는 속성에서 남, 를 제외한 데이터는 제한되어야한다.

 

- 개체 무결성

각 릴레이션의 기본키를 구성하는 속성은 널(NULL)값이나 중복된 값을 가질 수 없다.

학생 릴레이션에서 학번을 기본키로 정했다면 학번 속성은 NULL이 되어서는 안된다.

 

- 참조 무결성

외래키 값은 참조하는 릴레이션의 기본키 값과 동일해야하거나 NULL이어야한다.

즉, 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.

수강 릴레이션에서 학번 속성에는 학생 릴레이션의 학번 속성에 없는 값은 입력할 수 없다.

 


📌 사용했던 데이터베이스에 대한 설명 (MySQL)
    - MySQL 엔진, InnoDB

 

MySQL 서버 = MySQL 엔진 + 스토리지 엔진

MySQL 엔진은 클라이언트로부터 오는 요청 처리(요청된 SQL 문장을 분석, 최적화 등)를 담당하고,

스토리지 엔진은 실제 데이터를 디스크 스토리지에 저장하거나 조회하는 부부을 담당한다.

 

- MySQL 엔진

클라이언트로부터 오는 요청 처리(요청된 SQL 문장을 분석, 최적화 등)를 담당한다.

Connection Handler : 커넥션 및 쿼리 요청을 처리 담당

SQL 인터페이스 : DML, DDL, Procedure, View 등 SQL 인터페이스 제공 담당

SQL 파서(parser) : SQL 문법 오류 탐지 및 SQL 쿼리 문장을 MySQL이 처리하기 좋은 토큰 단위로 나눠서 트리 형태로 파싱하는 작업 담당

SQL 옵티마이저(optimizer) : 쿼리의 최적화된 실행 담당

캐시와 버퍼 : 성능 향상을 위한 보조 저장소 기능 담당

 

- InnoDB 스토리지 엔진

MySQL이 제공하는 스토리지 엔진이 다양하지만

그 중 유일하게 레코드 기반의 락(Lock)을 제공하며

이로 인해 높은 동시성 처리가 가능한 특징이 있고 안정적이다.

테이블은 Primary Key 순서대로 디스크에 저장되며 그렇기 때문에 Range scan이 굉장히 빠르다.

실행계획 결정에서 다른 보조 인덱스에 비해 Primary Key가 선택될 확률이 높다.

MVCC를 이용하여 락을 걸지 않고 읽기 수행

외래 키 지원

자동 데드락 감지

자동 장애 복구

 

[궁금증 정리]

MySQL, InnoDB에 대해 찾아보았지만 설명이 좀 어렵게 느껴진다. 쉽게 이해할 수 있도록 더 자료를 찾아봐야할 것 같다.

MySQL 엔진은 데이터베이스 관리 시스템(DBMS)의 핵심이다.
사용자와 어플리케이션으로부터 SQL 쿼리를 받아 처리하고,
적절한 스토리지 엔진에 명령을 내려서 데이터를 조작한다.
즉, SQL 인터페이스와 쿼리 파싱, 최적화, 캐싱 등의 데이터베이스 서버의 중앙 처리 기능을 담당한다.

 

스토리지 엔진은 MySQL에서 데이터를 어떻게 저장하고, 처리할지 결정하는 역할을 한다.

InnoDB는 MySQL에서 가장 많이 사용되는 스토리지 엔진 중 하나로, 트랜잭션-safe(ACID 준수), 외래키 지원 등을 포함한 다양한 고급 기능을 제공한다. InnoDB는 데이터의 무결성과 복구를 중시하며, 큰 규모의 데이터베이스에서 안정적인 성능을 발휘하도록 설계되었다.


간단하게 말하자면

MySQL 엔진은 스토리지 엔진에 지시를 내리는 지휘자와 같고, 

InnoDB 스토리지 엔진은 실제로 음악(데이터)을 연주하는 오케스트라 부분이라고 볼 수 있다. 

MySQL 엔진은 여러 스토리지 엔진과 함께 작동할 수 있으며, 

InnoDB는 그중에서도 특히 신뢰성과 성능이 중요한 응용 프로그램에 적합한 선택으로 자리잡고 있다.

 

 

 

 

 

 

 


참고자료

 

1_데이터와 데이터베이스_파일 시스템과 비교 ( DB와 DBMS, 정보와 데이터)

1-1 정보와 데이터 데이터는 자료입니다. 단순 측정값이나 사실입니다. 정보는 결과물입니다. 의사결정에 유용하게 처리할 수 있도록 처리한 것입니다. 데이터에서 정보를 추출하는 과정, 방법

gallery-k.tistory.com

 

[DB] 3단계 데이터베이스-외부/개념/내부스키마

DBS(DataBase System) 데이터베이스에 데이터를 저장하고, 이를 관리하여 조직에 필요한 정보를 생성해주는 시스템 데이터베이스 시스템 = 데이터베이스 + 데이터베이스 관리 시스템 스키마(Schema) 데

prinha.tistory.com

 

[Database] 관계 데이터 모델의 개념, 릴레이션 스키마와 인스턴스

관계 데이터 모델관계 데이터 모델은 수학의 집합이론에 근거하고 있어 튼튼한 이론적인 토대를 갖고 있다. 또한 관계 데이터 모델이 적용된 SQL 언어는 비절차적인 언어로 원하는 데이터를 쉽

deftkang.tistory.com

 

키의 종류 (슈퍼키, 후보키, 기본키, 대체키, 외래키)

이번 시간에는 키의 종류에 대해 알아보겠습니다. 인터넷에서 찾아보면 키의 개념을 설명해주는 글들이 나와있지만 설명이 어렵고 추상적인 것이 많아 처음 보는 사람들은 이해하기 어려울 것

sharpcoder.tistory.com

 

 

[DB] 키의 개념과 종류

데이터베이스 키의 개념과 종류 데이터베이스에서 키 (Key) 는 조건에 만족하는 튜플을 찾거나, 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성이다. 더보기 ※ 튜플 (Tuple) :

ggop-n.tistory.com

 

[DB 데이터베이스] 무결성 제약조건 (Integrity Constraint)

Contents

iingang.github.io

 

MySQL 아키텍처 (MySQL 엔진 구조, 스토리지 엔진 구조, 스레드 구조, 메모리 구조, 쿼리 실행 구조, R

MySQL 서버 = MySQL 엔진 + 스토리지 엔진 MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 나눠볼 수 있다. MySQL 엔진은 클라이언트로부터 오는 요청 처리(요청된 SQL 문장을 분석, 최적화, ...)를 담당

jeong-pro.tistory.com

 

 

스키마(Schema)

스키마 스키마라는 단어는 형태 , 모양 , 모양 또는 계획 을 의미 하는 그리스어 skhēma 에서 유래했다. 스키마는 심리학에서 정보 범주와 정보 간의 관계를 구성하는 조직화된 사고 또는 행동 패

techvu.dev