함수적 종속성
·
독서/데이터베이스
정규화란 개념적 스키마 구조에서 보다 효율적인 스키마 구조를 만들기 위한 규칙이다. 정규화는 함수적 종속성을 기본으로 하기 때문에 정규화 학습 전에 함수적 종속성을 이해할 필요가 있다. 이상(Anomaly) 이상 현상이란 개념적 설계 단계에서 스키마 구조를 정제한 과정 없이 바로 구축해 사용한다면 여러 문제가 발생하게 되는데 이것을 이상 현상이라고 한다. 즉, 데이터 중복으로 인해 테이블 조작 시 예상하지 못한 현상이 발생하는데 그 이유는 속성들 간에 존재하는 여러 종류의 종속 관계를 하나의 릴레이션에 표현했기 때문이다. 따라서 하나의 테이블에 표현된 관계성을 잘게 자를 필요가 있다. 삽입 이상 테이블 관계가 잘못 설계가 되어서 새로운 데이터가 삽입할 때 발생하는 이상 현상이다. 예를 들어 복합 키로 구..
SQL 메모 정리 [작성중]
·
독서/데이터베이스
SQL (Structured Query Language) 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용되는 언어로 크게 세 가지로 구분될 수 있다. 속성 설명 주요 명령어 DDL 데이터베이스, 테이블 등을 생성, 삭제 또는 구조 변경을 위한 명령어 CREATE, ALTER, DROP DML 데이터베이스의 데이터를 조회, 저장, 삭제, 수정하기 위한 명령어 INSERT, UPDATE, DELETE, SELECT 등 DCL 저장된 데이터를 관리하기 위하여 데이터의 보안성 및 무결성 등을 제어하기 위한 명령어 GRANT, REVOKE 등 관계형 데이터베이스란? 관계형 데이터베이스는 키와 값으로 이뤄진 테이블로 이루어져 있으며, 이처럼 데이터의 종속성을 관계로 표현하는 것을 의미한다. 일관된 테이블..
HTTP 응답 상태 코드
·
독서/네트워크
HTTP 응답 상태 코드 클라이언트가 HTTP 요청을 보내면 서버는 데이터와 함께 상태 코드로 요청에 대한 정보를 돌려준다. Information 1xx 100 Continue 지금까지 상태가 괜찮으며 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알림 101 Switching Protocol 클라이언트가 보낸 Upgrade 요청 헤더에 대한 응답에 들어가며 서버에서 프로토콜을 변겨할 것임을 알림 Successful 2xx 이 클래스의 응답 코드는 클라이언트 요청에 대해 수신, 이해, 수락이 성공적이었다고 나타낸다. 200 ok 요청이 성공적으로 되었고, HTTP 메소드에 따라 의미가 달라진다. GET : 리소스를 불러와서 메시지 바디에 전송 HEAD : 개체 헤더가..
트랜잭션과 잠금
·
독서/데이터베이스
트랜잭션이란 작업의 완전성을 보장하는 것으로 하나의 트랜잭션에 일어나는 모든 변경은 완전히 성공하거나 완전히 실패하도록 만들어주는 기능이다. 이것은 하나의 작업에서 일부만 성공해 데이터가 변경이 일어난 경우를 막기 위함인데 만약 서로 다른 트랜잭션에 동일한 데이터에 접근할 경우에는 잠금이 필요하게 된다. 잠금이란 동시성을 제거하기 위한 기능으로 하나의 레코드 또는 테이블에서 다른 트랜잭션에 의해 작업 중인 데이터에 접근해 수정하려는 행위를 막기 위한 기능이다. 데이터는 일관성을 지켜 신뢰성을 얻어야 하기 때문에 이 두 개의 기능은 매우 중요하다고 할 수 있다. MySQL에서의 트랜잭션 MySQL에서 테이블 엔진에 따라 트랜잭션은 다르게 일어나는데 MyISAM 경우 부분 업데이트를 통해서 실패한 레코드만 ..
Generator
·
메모
Generator Generator란 Generator(이하, 제너레이터) 함수는 일반 함수와 다르게 여러 개의 값을 하나씩 반환할 수 있는 함수다. 때문에 제너레이터 함수는 function* 으로 선언하고 return 뿐만 아니라 yield 키워드로 값을 반환하는 특별한 문법 구조를 가진다. 이때 return을 주의해야 하는데, return으로 반환된 값은 for ...of 나 스프레드 문법 등에서 처리할 수 없다는 점을 기억해야한다. function* generateSequence() { yield 1; yield 2; return 3; } let generator = generateSequence(); for(let value of generator) { alert(value); // 1, 2가 출..
Iteration protocol
·
메모
반복 프로토콜(Iteration protocol) const obj = { [Symbol.iterator]() { let i = 3; return { next() { return {value: --i, done: i < 0}; } } } } // 지연 순회를 할 수 없다. for (const a of obj) { console.log(a); } Iteration protocol(이하 반복 프로토콜)은 1개 이상의 데이터를 가질 수 있는 객체의 내부 순회를 추상화하기 위한 규약(protocol)으로 다음과 같은 형태로 구현된다. 객체가 Symbol.iterator에 { value, done }를 리턴하는 next() 메소드를 가지는 것을 규칙으로 하며, 이를 구현한 객체를 iterable 객체라고 표현한다..