개발자 면접 공부/네트워크&DB 14

DB 정규화

1. 개요 오늘은 DB의 정규화에 대해서 알아보겠습니다. 2. 정규화? 정규화란 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 이러한 테이블을 분해하는 정규화 단계가 정의되어 있으며 여기서 테이블을 어떻게 분해되는지에 따라 정규화 단계가 달라진다. 각각의 정규화 단계에 대해 알아봅시다. 3. 제1 정규화 제 1 정규화는 테이블의 컬럼이 원자값을 갖도록 테이블을 분해하는 것 입니다. 예를 들어 아래와 같은 고객 취미 테이블이 존재한다고 하면 위의 테이블에서 추신수와 박세리는 여러 개의 취미를 가지고 있기 때문에 제1 정규형을 만족하지 못하고 있습니다. 그렇기 때문에 이를 제1 정규화하여 분해 하..

DB 이상현상

1. 개요 오늘은 DB에 이상현상에 대해 공부하겠습니다. 2. DB의 이상현상? 데이터베이스에서 정규화를 수행하지 않으면, 데이터의 중복이 발생하고 전체적인 무결성이 저하됩니다. 이러한 원인은 데이터 이상현상(Anomaly)에 발생하며, 이상 현상으로 인해 현실세계의 실제 값과 데이터 베이스에 저장된 값이 일치하지 않는 문제가 발생합니다. 데이터 이상은 삽입이상, 업데이트 이상, 삭제 이상 세 가지 유형이 존재합니다. 다음은 이상 현상을 설명할 대학교 테이블입니다. 학번 학생명 학과 코드 학과명 학과장 코드 학과장명 1 도우너 101 경영학과 1000 워런 버핏 2 고길동 101 경영학과 1000 워런 버핏 3 또치 102 물리학과 2000 아인슈타인 4 마이콜 102 물리학과 2000 아인슈타인 5 둘..

B+ Tree

1. 개요 오늘은 B+ Tree에 대해 공부하도록 하겠습니다. 2. B+ Tree?? 이전 B트리 포스팅에 이어서 B+트리에 대해 포스팅 해보겠습니다. 동작 방식은 B트리와 굉장히 유사합니다. 하지만 다른점이라면 리프노드는 연결리스트의 형태를 띄어 선형 검색이 가능하다는 점입니다. 이러한 특징점 때문에 굉장히 작은 시간복잡도에 검색을 수행할 수 있습니다. 이전 B트리 포스팅에서 삽입 & 삭제 과정을 자세히 설명했기 때문에 이번 포스팅에서는 B트리와 B+트리의 차이점 위주로 설명하겠습니다. 실제 DB의 인덱싱은 B+트리로 이루어져있다고 합니다. 다음 그림은 인덱싱을 나타낸 것입니다. 인덱싱은 어떠한 자료를 찾는데 key값을 이용해 효과적으로 찾을 수 있는 기능입니다. 다음과 같은 인덱싱을 B+트리로 나타내..

B-Tree

1. 개요 오늘은 B-Tree에 대해 공부하도록 하겠습니다. 2. B-Tree란?? B트리는 이진 트리와 다르게 하나의 노드에 많은 수의 정보를 가지고 있을 수 있는 자료구조입니다. 최대 M개의 자식을 가질 수 있는 B트리를 M차 B트리라고 하며 다음과 같은 특징을 같습니다. - 노드는 최대 M개부터 M/2개 까지의 자식을 가짐 - 노드에는 최대 M-1개 부터 [M/2]-1개의 키가 포함될 수 있음 - 노드의 키가 X개라면 자식의 수는 X+1개 입니다. - 최소차수는 자식수의 하한값을 의미하며, 최소차수가 t라면 M = 2t -1을 만족합니다. (최소차수 t가 2라면 3차 B트리이며, key의 하한은 1개입니다.) 아래의 사진은 차수가 3인 B트리 입니다. 파란색 부분은 각 노드의 key를 나타내며, 빨..

데이터 베이스 인덱스

1. 개요 오늘은 데이터베이스에 인덱스에 대해 알아보겠습니다. 2. 인덱스(INDEX)??? 인덱스(Index)는 데이터 베이스의 테이블에 대한 검색 속도를 향상시켜주는 자료구조이다. 이블의 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다, 컬럼의 값과 물리적 주소를 (key, value)의 한 쌍으로 저장한다. 인덱스는 책에서의 목차 혹은 색인이라고 생각하면 된다. 책에서 원하는 내용을 찾을 때 목차나 색인을 이용하면 훨씬 빠르게 찾을 수 있는데, 마찬가지로 테이블에서 원하는 데이터를 찾기 위해 인덱스를 이용하면 빠르게 찾을 수 있다. 그러므로 데이터 = 책의 내용, 인덱스 = 책의 목차, 물리적 주소 = 책의 페이지 번호라고 ..

데이터 베이스에 트랜잭션(Transaction)

1. 개요 오늘은 데이터 베이스에 트랜잭션(Transaction)에 대해 공부하겠습니다. 2. 트랜잭션이란? -데이터 베이스의 상태를 변화시키 위해 수행하는 작업 단위 라고 설명이 됩니다. 상태를 변화를 시킨다는 것은 즉 -> SQL 질의어를 통해 DB에 접근하는 것 입니다. -SELECT -INSERT -DELETE -UPDATE 가 있습니다. 작업 단위 -> 더 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것 예시) 사용자 A가 사용자 B에게 만원을 송금한다. 이때 DB에서는 - 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 를 통해 사용자 A의 잔고를 변경 - 2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 를 통해 사용자 B의 잔고를 변경 현재 작업 단위 : 출금..

SQL 기초 3 (일부 결과값 조회, 집합함수)

1. 개요 오늘은 SQL 기초 3 일부 결과값 조회 및 집합함수에 대해 알아봅시다. 2. ROWNUM, TOP Rownum 과 top은 SQL 쿼리 결과 중 상위 몇 개만 보여주는 쿼리입니다. Select 컬럼명 1, 컬럼명 2, ... from 테이블명 where 조건절 Limit 숫자 예시로 학생중에 major 가 ComputerEngineering 이며 성적이 상위 10위권안에 있는 친구들을 조회하세요 select * from student where major = "ComputerEngineering" order by grade desc limit 10; 이렇게 표현이 가능합니다. 3. 집합 함수 집합함수는 테이블 전체 레코드를 대상으로 특정 컬럼을 적용해서 한 개의 값을 리턴하는 함수입니다. C..

SQL문 쿼리 기초 2 논리 연산자 DISTINCT 연산자

1. 개요 오늘은 SQL문 쿼리 기초인 논리 연산자와 DISTINCT 연산자를 알아보겠습니다. 2. 논리연산자 논리연산자는 다른 언어 처럼 And, Or, Not 연산자가 있습니다. 언어로는 &,|,! 이라는 표기로 연산자를 사용을 합니다. 하지만 SQL문에서는 어떻게 사용하는지 예시를 통해 알아보겠습니다. 학생 ID가 20001111이며 Major 가 ComputerEngineering인 학생을 찾아줘 그러면 select * from student where ID = 20001111 AND Major = "ComputerEngineering"; 이렇게 표현을 합니다. 그럼 다음 예시도 보겠습니다. 학생 에서 major 가 ComputerEngineering 과 Economic인 학생의 이름을 찾아주세요..

SQL문 쿼리 기초 1

1. 개요 오늘은 SQL문 쿼리 기초에 대해서 공부하도록 하겠습니다. 2. SQL? SQL은 (Structured Query Language)에 약자입니다. SQL은 다음과 같이 정의합니다. - 관계형 데이터베이스 (RDB) 에서 사용하는 표준 징의 언어를 말합니다. - 사용 방법이나 문법이 다른 언어에 비해 단순합니다. - 모든 DBMS에서 사용 가능합니다. - 인터프리터 언어입니다. - 대소문자 구별을 하지 않습니다. 이러한 특징을 가지고 있습니다. 한마디로 데이터베이스의 언어라고 생각하시면 됩니다. SQL문을 사용하여 데이터베이스를 조회 및 생성, 삭제를 할수 있는 기능이 있습니다. 3. DML DML은 데이터베이스의 테이블에 있는 내용을 직접 조작하는 기능을 가지고있는 언어입니다. CRUD(Cre..

블로킹 소켓 (Blocking Socket), 논 블로킹 소켓(Non-Blocking Socket)

오늘은 블로킹 소켓 과 논 블로킹 소켓에 대해 알아보겠습니다. 1. 블로킹과 논 블로킹 이것은 제가 예전에 개시했던 동기 비동기 블로킹 논블로킹 을 보시고 오시는걸 추천드립니다. https://chogyujin-study.tistory.com/51 블로킹(Blocking), 논 블로킹(Non-Blocking), 동기(Sync), 비동기(ASync) 오늘은 블로킹, 논 블로킹 추가로 동기, 비동기에 대해 알아보겠습니다. 동기&비동기 vs 블로킹&논블록킹 개념 차이 이 개념들을 처음 접하거나 컴퓨터 공학에 대해 잘 모르는 사람은 이 개념들 chogyujin-study.tistory.com 2. 블로킹 소켓 블로킹 소켓은 소켓 함수 호출 시 조건이 만족되지 않으면 함수는 리턴하지 않고 해당 스레드는 대기 상태..