🧑🏻💻 데이터베이스 언어
• DDL(Data Definition Language)
- 데이터베이스 구조를 정의, 수정, 삭제하기 위한 언어.
- CREATE, ALTER, DROP
• DML(Data Manipulation Language)
- 데이터베이스 내의 자료를 검색, 삽입, 갱신, 삭제하기 위한 언어.
- SELECT, INSERT, UPDATE, DELETE
• DCL(Data Control Language)
- 데이터의 무결성, 보안 및 권한 제어, 복구 등을 하기 위한 언어.
- COMMIT, ROLLBACK, GRANT, REVOKE
🧑🏻💻 Key
데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성.
• 후보키(Candidate Key)
- 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합.
- 유일성(Key로 하나의 튜플을 유일하게 식별)을 만족해야 한다.
- 최소성(꼭 필요한 속성으로만 구성)을 만족해야 한다.
• 기본키(Primary Key)
- 후보키 중에서 선택한 메인 키.
- Null 값을 가질 수 없다.
- 동일한 값이 중복되어 저장될 수 없다.
• 대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키.
• 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키.
- 유일성은 만족하지만, 최소성은 만족하지 못한다.
• 외래키(Foreign Key)
- 관계(Relation)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성.
- 릴레이션 간에 참조 관계를 표현하는데 중요한 도구.
🧑🏻💻 이상(Anomaly)
릴레이션에서 일부 속성들의 종속이나 데이터의 중복으로 인해 데이터 조작 시 불일치가 발생하는 것으로 이상 현상은 정규화(Normalization)를 통해 방지할 수 있다.
• 삽입 이상(Insertion Anomaly)
- 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능한 현상.
• 갱신 이상(Update Anomaly)
- 데이터 일부만 변경되어, 데이터가 불일치하는 현상.
• 삭제 이상(Deletion Anomaly)
- 튜플 삭제로 인하여 꼭 필요한 데이터까지 함께 삭제되는 현상.
🧑🏻💻 정규화
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스.
삽입, 삭제, 갱신 이상이 있는 관계를 재구성함으로써 바람직한 스키마를 만들기 위함이다.
• 1NF
- 도메인 원자값
• 2NF
- 부분 함수 종속성 제거
• 3NF
- 이행 함수 종속성 제거
• BCNF
- 결정자이면서 후보키가 아닌 것 제거
🧑🏻💻 JOIN
두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 행위.
일반적으로 Primary key 혹은 Foreign key로 두 테이블을 연결하며, 연결하려면 적어도 하나의 칼럼은 서로 공유되고 있어야 한다.
• INNER JOIN
- 기존테이블과 조인한 테이블의 중복값을 보여주는데 결과값은 교집합만 검색
• LEFT / RIGHT OUTER JOIN
- 기존 테이블 값 + 교집합
• FULL OUTER JOIN
- 합집합
• CROSS JOIN
- 모든 경우의 수 (N * M)
• SELF JOIN
- 하나의 테이블을 여러번 복사해서 조인
🧑🏻💻 Index
• 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다.
• 테이블 내의 1개의 컬럼 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다.
🧑🏻💻 Transaction
데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위.
• 원자성(Atomicity)
- 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다.
• 일관성(Consistency)
- 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다.
• 독립성(Isolation)
- 각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야 한다.
• 지속성(Durability)
- 트랜잭션이 성공적으로 완료됬었을 경우, 결과는 영구적으로 반영되어야 한다.
🧑🏻💻 SQL vs NoSQL
• SQL
- 관계형 데이터베이스.
- 데이터는 정해진 스키마에 따라 테이블에 저장된다.
• NoSQL
- 비관계형 데이터베이스.
- 반정형화, 비정형화된 데이터에 적합하다.
- 대용량의 데이터 저장에 유리하다.
🧑🏻💻 Sharding
• 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법
🧑🏻💻 Oracle의 SID vs Service Name
• SID
- 인스턴스의 유니크한 이름으로 단 하나의 인스턴스를 지칭한다.
• Service Name
- 여러 개의 인스턴스를 모아 하나의 시스템을 구성할 때 사용되는 TNS alias이다.
'Interview' 카테고리의 다른 글
[기술면접] Web(웹 프로그래밍) (0) | 2023.03.29 |
---|---|
[기술면접] Java(자바) (0) | 2023.03.29 |