데이터베이스

데이터베이스 기초

yu_gyeong 2023. 11. 18. 17:45

1. 데이터베이스란?

여러 사람이 공유하고 사용할 목적으로 통합, 관리되는 데이터의 집합

2. 데이터베이스 특징

  1. 실시간 접근성 : 사용자의 질의(query)(ex. 검색/삽입/갱신/삭제)에 실시간으로 처리와 응답이 가능하다.
  2. 지속적인 변화 : 새로운 데이터의 삽입(insert), 삭제(delete), 갱신(update)을 통해서 항상 최신 데이터를 유지한다.
  3. 동시 공유 : 서로 다른 목적, 여러 사용자에게 동시에 같은 내용의 데이터가 공유된다.
  4. 내용에 의한 참조 : 데이터베이스에 저장된 데이터를 참조할 때 데이터의 주소나 위치가 아닌, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.

예시)

  1. 우리가 로그인을 할 때, 아이디와 비밀번호를 입력한 후 로그인 요청을 보내면 실시간으로 서버로부터 응답을 받을 수 있다.
  2. 로그인을 하고 어떤 물건을 구매하려고 하는 경우, 그 물건의 가격은 계속해서 변화하며
  3. 그 물건에는 동시에 여러 사람이 구매를 위해 접근할 수 있다.
  4. 우리는 데이터가 데이터베이스의 어느 주소에 저장되어있는지 몰라도 '사과'라는 내용을 검색하면 원하는 값을 찾을 수 있다.

3. 테이블 구조

테이블 구조

이름 설명
테이블 = 릴레이션 관계형 데이터베이스에서 데이터 관리에 기본이 되는 구조
컬럼 = 필드 = 속성 테이블의 열
로우 = 레코드 = 튜플 테이블의 행
차수 테이블 열의 개수
카디널리티 테이블 행의 개수
도메인 컬럼에 대한 데이터타입, 크기, 제약사항을 지정하는 것
스키마 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것

ex) 학점 컬럼의 도메인은 0.0에서 4.5 사이의 실수 값으로 정의할 수 있다.
→ 물론 각 컬럼은 도메인 이외의 값을 갖지 못한다.

ex) 학생 관련 데이터인 학번, 이름, 과목, 학점을 저장한다고 가정하자.

스키마

  • 학번 : 정수
  • 이름 : 최대 10자의 문자열
  • 과목 : 최대 20자의 문자열
  • 학점 : 0.0에서 4.5 사이의 실수

→ 이렇게 모든 것을 정의한 내용이 스키마이다.

4. 데이터베이스 3단계 구조

3단계 구조

1. 외부 단계

  • 데이터베이스를 개별 사용자의 관점에서 표현하는 단계
  • 사용자에 따라 다르게 출력되므로, 외부 스키마여러 개 존재한다.
  • 외부 스키마(External schema)
    • 외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것
    • 전체 데이터베이스 중 사용자가 관심을 가지는 일부분으로 볼 수 있으므로, 서브 스키마 = 사용자 뷰라고도 한다.

2. 개념 단계

  • 데이터베이스를 조직 전체의 관점에서 표현하는 단계
  • 개념 스키마 1개만 존재
  • 개념 스키마(Conceptual schema)
    • 개념 단계에서 데이터베이스 전체적인 구조를 사용자가 알아볼 수 있는 논리적 구조로 정의한 것
    • 데이터 개체, 관계, 제약조건, 접근 권한, 무결성 규칙 등을 포함한다.

3. 내부 단계

  • 데이터베이스를 물리적인 저장 장치의 관점에서 표현하는 단계
  • 내부 스키마 1개만 존재
  • 내부 스키마(Internal schema)
    • 전체 데이터베이스가 저장 장치에 실제로 저장되는 방법을 정의한 것
    • 레코드의 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조를 정의한다.

스키마 사이의 대응 관계

  1. 외부/개념 사상(응용 인터페이스) : 외부 스키마와 개념 스키마의 대응 관계
  2. 개념/내부 사상(저장 인터페이스) : 개념 스키마와 내부 스키마의 대응 관계

데이터 독립성

: 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성

  1. 논리적 데이터 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향을 받지 않는다.
  2. 물리적 데이터 독립성 : 내부 스키마가 변경되어도 개념 스키마는 영향을 받지 않는다.

예시

5. 데이터베이스 언어

1. DDL(데이터 정의 언어 : Data Definition Language)

: 데이터베이스 생성, 변경, 삭제를 위한 언어

명령 설명
CREATE 스키마, 도메인, 테이블, 뷰, 인덱스 생성
ALTER 테이블에 대한 정의, 속성 변경
DROP 스키마, 도메인, 테이블, 뷰, 인덱스 삭제
TRUNCATE 테이블에서 모든 행 삭제 = 테이블 초기화
  • 뷰(view)
    뷰
    • 다른 테이블을 기반으로 만들어진 가상 테이블
    • 실제로 데이터를 저장하고 있지 않으며, 논리적으로만 존재한다.
    • ‘학생’ 테이블을 기반으로 ‘자료구조’라는 이름의 뷰가 생성되었다.

2. DML(데이터 조작 언어 : Data Manipulation Language)

: 데이터 삽입, 검색, 갱신, 삭제를 위한 언어

명령 설명
INSERT 테이블에 새로운 튜플 삽입
SELECT 테이블에서 조건에 맞는 튜플 검색
UPDATE 테이블에서 조건에 맞는 튜플의 내용 변경
DELETE 테이블에서 조건에 맞는 튜플 삭제

3. DCL(데이터 제어 언어 : Data Control Language)

: 데이터 무결성, 보안, 권한 제어, 회복을 위한 언어

명령 설명
COMMIT 1. 명령에 의해 수행된 결과를 실제 물리 디스크에 저장 2. 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려준다.
ROLLBACK 데이터베이스 조작 작업이 비정상적으로 종료되었을 때, 원래 상태로 복구
GRANT 데이터베이스 사용자에 사용 권한 부여
REVOKE 데이터베이스 사용자의 사용 권한 회수
  • 무결성은 키(Key)에서 확인해주세요.

면접 예상 질문

  1. 데이터베이스의 특징에 대해 설명해주세요.
  2. 데이터베이스 3단계 구조에 대해 설명해주세요.
  3. 논리적 데이터 독립성과 물리적 데이터 독립성의 차이를 설명해주세요.
  4. 데이터베이스 언어에 대해 설명해주세요.

참고 URL

https://ko.wikipedia.org/wiki/데이터베이스#cite_note-1
https://terms.tta.or.kr/dictionary/dictionaryView.do?subject=데이터베이스
https://mangkyu.tistory.com/19
https://jwprogramming.tistory.com/73
https://dinfree.com/lecture/language/112_java_11.2.html
http://wiki.hash.kr/index.php/테이블_(데이터베이스)#cite_note-3
https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=1&mod=document&keyword=도메인&uid=327
https://untitledtblog.tistory.com/124
https://www.yes24.com/Product/Goods/67882661
https://www.hedleyonline.com/ko/blog/스키마/
https://blog.skby.net/데이터베이스-스키마schema/

'데이터베이스' 카테고리의 다른 글

정규화  (0) 2024.01.07
SQL vs NoSQL  (0) 2023.12.24
JOIN  (0) 2023.12.16
키(Key)  (1) 2023.11.19