1. 데이터베이스란?
여러 사람이 공유하고 사용할 목적으로 통합, 관리되는 데이터의 집합
2. 데이터베이스 특징
- 실시간 접근성 : 사용자의 질의(query)(ex. 검색/삽입/갱신/삭제)에 실시간으로 처리와 응답이 가능하다.
- 지속적인 변화 : 새로운 데이터의 삽입(insert), 삭제(delete), 갱신(update)을 통해서 항상 최신 데이터를 유지한다.
- 동시 공유 : 서로 다른 목적, 여러 사용자에게 동시에 같은 내용의 데이터가 공유된다.
- 내용에 의한 참조 : 데이터베이스에 저장된 데이터를 참조할 때 데이터의 주소나 위치가 아닌, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.
예시)
- 우리가 로그인을 할 때, 아이디와 비밀번호를 입력한 후 로그인 요청을 보내면 실시간으로 서버로부터 응답을 받을 수 있다.
- 로그인을 하고 어떤 물건을 구매하려고 하는 경우, 그 물건의 가격은 계속해서 변화하며
- 그 물건에는 동시에 여러 사람이 구매를 위해 접근할 수 있다.
- 우리는 데이터가 데이터베이스의 어느 주소에 저장되어있는지 몰라도 '사과'라는 내용을 검색하면 원하는 값을 찾을 수 있다.
3. 테이블 구조
이름 | 설명 |
---|---|
테이블 = 릴레이션 | 관계형 데이터베이스에서 데이터 관리에 기본이 되는 구조 |
컬럼 = 필드 = 속성 | 테이블의 열 |
로우 = 레코드 = 튜플 | 테이블의 행 |
차수 | 테이블 열의 개수 |
카디널리티 | 테이블 행의 개수 |
도메인 | 컬럼에 대한 데이터타입, 크기, 제약사항을 지정하는 것 |
스키마 | 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것 |
ex) 학점 컬럼의 도메인은 0.0에서 4.5 사이의 실수 값으로 정의할 수 있다.
→ 물론 각 컬럼은 도메인 이외의 값을 갖지 못한다.
ex) 학생 관련 데이터인 학번, 이름, 과목, 학점을 저장한다고 가정하자.
- 학번 : 정수
- 이름 : 최대 10자의 문자열
- 과목 : 최대 20자의 문자열
- 학점 : 0.0에서 4.5 사이의 실수
→ 이렇게 모든 것을 정의한 내용이 스키마이다.
4. 데이터베이스 3단계 구조
1. 외부 단계
- 데이터베이스를 개별 사용자의 관점에서 표현하는 단계
- 사용자에 따라 다르게 출력되므로, 외부 스키마가 여러 개 존재한다.
- 외부 스키마(External schema)
- 외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것
- 전체 데이터베이스 중 사용자가 관심을 가지는 일부분으로 볼 수 있으므로, 서브 스키마 = 사용자 뷰라고도 한다.
2. 개념 단계
- 데이터베이스를 조직 전체의 관점에서 표현하는 단계
- 개념 스키마 1개만 존재
- 개념 스키마(Conceptual schema)
- 개념 단계에서 데이터베이스 전체적인 구조를 사용자가 알아볼 수 있는 논리적 구조로 정의한 것
- 데이터 개체, 관계, 제약조건, 접근 권한, 무결성 규칙 등을 포함한다.
3. 내부 단계
- 데이터베이스를 물리적인 저장 장치의 관점에서 표현하는 단계
- 내부 스키마 1개만 존재
- 내부 스키마(Internal schema)
- 전체 데이터베이스가 저장 장치에 실제로 저장되는 방법을 정의한 것
- 레코드의 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조를 정의한다.
스키마 사이의 대응 관계
- 외부/개념 사상(응용 인터페이스) : 외부 스키마와 개념 스키마의 대응 관계
- 개념/내부 사상(저장 인터페이스) : 개념 스키마와 내부 스키마의 대응 관계
데이터 독립성
: 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성
- 논리적 데이터 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향을 받지 않는다.
- 물리적 데이터 독립성 : 내부 스키마가 변경되어도 개념 스키마는 영향을 받지 않는다.
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)에서 확인해주세요.
면접 예상 질문
- 데이터베이스의 특징에 대해 설명해주세요.
- 데이터베이스 3단계 구조에 대해 설명해주세요.
- 논리적 데이터 독립성과 물리적 데이터 독립성의 차이를 설명해주세요.
- 데이터베이스 언어에 대해 설명해주세요.
참고 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 |