인덱스란? 데이터베이스 인덱스는 데이터베이스의 효율적인 검색 및 데이터 접근을 지원하기 위해 사용되는 자료 구조다. 인덱스는 테이블의 컬럼 또는 컬럼의 조합에 대한 정렬된 데이터 구조로, 검색 속도를 향상시키고 데이터 접근 시간을 줄여준다. 인덱스는 데이터를 빠르게 찾을 수 있는 하나의 장치라고 볼 수 있다. 즉 메모리 영역의 일종의 목차를 생성하는 개념이다. B - Tree 인덱스는 보통 B - Tree라는 자료 구조로 이루어져 있다. B - Tree는 루트 노드, 리프 노드 그리고 루트 노드와 리프 노드 사이에 있는 브랜치 노드로 나뉜다. 트리 탐색은 맨 위 루트 노드부터 탐색이 일어나며 브랜치 노드를 거쳐 리프 노드까지 내려온다. 위의 그림처럼 이렇게 루트 노드부터 시작하여 마지막 리프 노드에 도달..
트랜잭션이란? 트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다. 즉 여러 개의 작업을 하나로 묶은 실행 유닛이다. 트랜잭션은 데이터베이스의 일관성과 무결성을 보장하기 위해 사용된다. 트랜잭션은 ACID 원칙에 기반을 두고 있다. Atomicity (원자성) 트랜잭션은 작업의 모든 단계가 완료되거나 아무 것도 수행되지 않은 상태를 보장하는 특징이다. 트랜잭션을 커밋했는데, 문제가 발생해 롤백하는 경우 그 이후에 모두 수행되지 않음을 보장하는 것을 말한다. 예를 들어 내가 마트에서 물건을 사려고 한다고 가정해보자. 나는 지금 100만원이 있고 내가 사려는 물건은 50만원이다. 이 때 물건을 구매하기 위해서는 3단계의 과정을 거친다. 1) 내가 얼마를 가지고 있는지 확인한다..
데이터 베이스 스키마란? 데이터베이스 스키마란, 데이터페이스에서 사용하는 데이터 구조, 데이터베이스 객체의 구성 및 관계 등을 정의하는 논리적인 구조를 의미한다. 데이터베이스 스키마는 데이터베이스의 구조와 데이터의 종류를 정의하는데 사용된다. 즉, 데이터베이스에 저장되는 데이터의 타입, 크기, 제약 조건, 테이블 간의 관계 등을 정의한다. 데이터베이스 스키마는 물리적인 데이터베이스 객체와 무관하며, 데이터베이스 객체를 생성할때 사용되는 템플릿 또는 설계도와 같은 역할을 한다. 따라서, 데이터베이스 스키마는 데이터의 무결성 및 일관성을 유지하기 위한 중요한 요소이다. 데이터베이스 스키마는 대개 데이터베이스 설계자 또는 데이터베이스 관리자가 작성하며, SQL 문법을 사용하여 생성할 수 있다. 예를 들어, C..
생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org Internet과 DATABASE의 관계 만약 DATABASE로 일을 하려고 한다면 2가지가 필요할 것이다. Database Server Database Client DATABASE는 Client 와 Server 모델을 따르며 다수의 Client들은 하나의 서버에 연결될 수 없다. Database Server는 Backend에서 작동하는 소프트웨어이며 DATABASE가 만들어지고 저장되는 장소이다...
생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org JOIN 위에는 author와 topic 테이블이 생성되어져 있다. 우리가 하고 싶은것은 이 2개의 테이블을 결합하는 것이다. 두 개의 테이블을 자세히 보면 id 값이 서로 연결되어 있다는 것을 알 수 있다. 그래서 우리는 이것을 이용해서 다음과 같이 두 개의 테이블을 JOIN 할 수 있다. SELECT * FROM topic LEFT JOIN author ON topic.author_id = au..
생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org 관계형 데이터베이스의 필요 테이블에서 데이터들이 셀 수 없을만큼 늘어나고 용량이 늘어난다면 데이터들은 중복될 수 밖에 없다. 데이터가 많아지면 데이터들에 대한 수정이 어려워진다. 관계가 있으면 유지보수가 상당히 용이해진다. 그리고 좋은 관계형 데이터베이스를 만들려면 정보의 이상 현상(Anomaly)가 생기지 않도록 해야한다. 이상 현상(Anomaly) 갱신 이상(Modification Anomaly..
생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org SQL SQL은 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조적 질의 언어이다. 테이블의 생성 이제 MySQL에 테이블을 한번 봐 보자 CREATE TABLE topic( id INT(11) NOT NULL AUTO_INCREMENT, title VARCHAR(100) NOT NULL, description TEXT NULL, created DATETIME NOT NULL, autho..
생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org MySQL 이란? MySQL은 1995년에 발표된 오픈소스 RDBMS다. RDBMS의 종류로는 많은 데이터 베이스들이 있지만, 그 중 MySQL을 첫번째로 공부하는 이유는 MySQL이 가장 널리 사용되고 있는 RDBMS이며 무료이고 오픈 소스라는 점에서 많은 기업들이 MySQL을 사용하고 있기 때문이다. MySQL의 구조 MySQL의 구조는 크게 3가지로 나뉜다. 표(table): 데이터를 기록하는..