본문 바로가기

CS/데이터베이스

(13)
[DB] 정규화 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. 1. 이상현상 이상 현상이란? 데이터베이스를 잘못 설계하면 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입,수정,삭제 연산을 수행할 때 부작용들이 발생할 수 있다. 이러한 부작용을 이상 현상이라고 한다. 이상 현상을 제거해가면서 데이터베이스를 올바르게 설계해 나가는 과정이 정규화이다. 삽입 이상 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 위 테이블에서 (고객아이디, 이벤트번호)가 기본키이기 때문에, melon이라는 고객의 데이터를 위 테이블에 삽입하려면, 반드시 이벤트번호가 있어야 한다. 따라서, 이벤트 등록이 되지 않은 고객은 위 테이블에 삽입될 수 없다. 갱신 이상 중복 튜플 중 일부만 변경하여 .. 2024. 2. 1. 15:34
[DB] Real MySQL 8.0 - 8. 인덱스 & B-tree 이 글은 Real MySQL 8.0 책을 읽고 정리한 것입니다. Real MySQL 8.0 1권 《Real MySQL》을 정제해서 꼭 필요한 내용으로 압축하고, MySQL 8.0의 GTID와 InnoDB 클러스터 기능들과 소프트웨어 업계 트렌드를 반영한 GIS 및 전문 검색 등의 확장 기능들을 추가로 수록했다. www.aladin.co.kr 데이터베이스의 성능 튜닝은 어떻게 디스크 I/O를 줄이느냐가 관건일 때가 상당히 많다. 따라서, 이 장의 앞부분에서는 먼저 ‘랜덤 I/O’ 와 ‘순차 I/O’에 대해 설명하고자 한다. 8.1 디스크 읽기 방식 8.1.1 HDD와 SDD SDD는기존 하드 디스크 드라이브에서 데이터 저장용 플래터(원판)를 제거하고 그 대신 ‘플래시 메모리’를 장착하고 있다. DRAM보다.. 2024. 1. 23. 16:36
[DB] SQL - JOIN 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. JOIN 수행 원리 조인이란 두 개 이상의 테이블을 하나의 집합으로 만드는 연산이다. JOIN 절 뿐만 아니라, SQL문에서 FROM절에 두 개 이상의 테이블이 나열된 경우에도 조인이 수행된다. 다만, 여러개의 테이블에 대해 JOIN이 수행되더라도, JOIN은 실제 동작할 때 두개의 테이블을 대상으로 수행된다. 여러개의 테이블을 다룰때는 연쇄적으로 JOIN이 수행되는 것이다. 조인 기법은 여러가지가 존재하는 데, 대표적으로 NL JOIN, Hash JOIN, Sort Merge JOIN이 있다. 1. NL JOIN(Nested Loop JOIN) NL JOIN은 프로그래밍에서 사용하는 FOR 반복문을 중첩으로 사용한 것과 유사하다. 반복문의.. 2024. 1. 23. 11:28
[DB] Real MySQL 8.0 - 4.2 InnoDB 스토리지 엔진 아키텍처 이 글은 Real MySQL 8.0 책을 읽고 정리한 것입니다. Real MySQL 8.0 1권 《Real MySQL》을 정제해서 꼭 필요한 내용으로 압축하고, MySQL 8.0의 GTID와 InnoDB 클러스터 기능들과 소프트웨어 업계 트렌드를 반영한 GIS 및 전문 검색 등의 확장 기능들을 추가로 수록했다. www.aladin.co.kr 위 이미지는 InnoDB의 구조를 나타낸 그림이다. MySQL 8.0 기준으로, InnoDB가 가장 성능이 뛰어난 스토리지 엔진이다. MySQL의 스토리지 엔진 중 거의 유일하게 레코드 락을 지원하며, 이러한 장점 덕분에 높은 동시성 처리가 가능하다. (MyISAM은 테이블 락을 지원한다.) MySQL :: MySQL 8.0 Reference Manual :: 8.1.. 2024. 1. 22. 22:05
[DB] SQL 질문 정리 이 글은 데이터베이스 스터디 중 데이터베이스 기본개념 관련 질문을 정리한 것입니다. SQL에 대해서 설명해주세요. C언어와 같은 프로그래밍 언어와 어떤차이가 있나요? SQL이란 RDB와 상호작용하기 위한 컴퓨터 언어입니다. 데이터베이스를 관리 및 조작하기 위한 언어입니다. 이때, SQL은 DBMS가 어떤 동작을 수행하면 되는지 알려주는 역할을 합니다. C언어와 같은 프로그래밍 언어와 비교했을 때, SQL은 DB를 대상으로 하는 언어인 반면, C언어는 OS를 대상으로 한다는 점에서 다릅니다. 또한, SQL은 원하는 작업의 결과만을 기술하고, 그 작업이 어떻게 수행되는지 고려하지 않아도 되는 비절차적 언어인 반면, C언어는 절차적 언어입니다. 개발자가 작성한 SQL이 어떤 과정을 통해 실행 되는지 설명해주세.. 2024. 1. 18. 21:27
[DB] SELECT 문장 처리 순서 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. SELECT DISTINCT column, AGG_FUNC(column_or_expression), … FROM mytable JOIN another_table ON mytable.column = another_table.column WHERE constraint_expression GROUP BY column HAVING constraint_expression ORDER BY column ASC/DESC LIMIT count; 위와 같은 쿼리문을 예시로 들겠다. 위 쿼리에서 각 절은 아래의 순서로 실행된다. 1. FROM & JOIN FROM절과 JOIN절이 가장 첫번째로 실행되며, 수행되어야 할 데이터 셋을 결정한다. 만약 FROM & .. 2024. 1. 18. 19:33
[DB] SQL -DDL 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. CREATE 데이터베이스, 테이블, 프로시저등을 생성하기 위해서 사용된다. 테이블 생성 -- 문법 CREATE TABLE_테이블_이름 ( (1) 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값] (2) [PRIMARY KEY (속성)] (3) [UNIQUE (속성_리스트)] (4) [FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)] [ON DELETE 옵션] [ON UPDATE 옵션] (5) [CONSTRAINT 이름] [CHECK(조건)] ); -- 예시 CREATE TABLE Customer( CustomerID INT PRIMARY KEY, CustomerName VARCHAR(5.. 2024. 1. 17. 21:52
[DB] SQL 개요 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. SQL이란? RDB와 상호작용하기 위한 컴퓨터 언어로서, 데이터베이스로 부터 데이터를 관리하고 조작하고, 필요한 데이터를 검색하기 위한 언어이다. DBMS는 SQL 쿼리를 처리하여, 요청된 데이터를 검색한 이후, 반환한다. 이때 SQL은 DBMS가 어떤 동작을 수행하면 되는지 알려주는 역할을 한다. 예를 들어, 데이터베이스에 어떤 구조의 테이블이 생성되어야 하는지 명령을 내릴 수 있고, 테이블로 부터 특정 조건에 일치하는 데이터를 조회하고, 특정 형태로 데이터를 반환받을 수 있다. C언어와 비교한 SQL의 특징 SQL은 비절차적 언어 SQL 언어는, 원하는 작업의 결과만을 기술하고, 그 작업이 어떻게 수행될 것인지는 고려하지 않아도 되는 비.. 2024. 1. 17. 20:21
[DB] Real MySQL 8.0 - 4.1 MySQL 아키텍처 이 글은 Real MySQL 8.0 책을 읽고 정리한 것입니다. Real MySQL 8.0 1권 《Real MySQL》을 정제해서 꼭 필요한 내용으로 압축하고, MySQL 8.0의 GTID와 InnoDB 클러스터 기능들과 소프트웨어 업계 트렌드를 반영한 GIS 및 전문 검색 등의 확장 기능들을 추가로 수록했다. www.aladin.co.kr 4.1.1 MySQL의 전체 구조 MySQL은 대부분의 프로그래밍 언어로부터 접근 방법을 모두 지원한다. 위 이미지에 ‘MySQL Connectors’에 명시된 것 처럼, C, JDBC, ODBC, 등등 표준 드라이버를 제공한다. MySQL 서버는 ‘MySQL 엔진’과 ‘스토리지 엔진’으로 구분할 수 있다. 4.1.1.1 MySQL 엔진 MySQL 엔진은 대표적으로 .. 2024. 1. 12. 15:05
[DB] 데이터베이스 기본개념 관련 질문정리 이 글은 데이터베이스 스터디 중 데이터베이스 기본개념 관련 질문을 정리한 것입니다. 파일시스템과 데이터베이스의 차이점에 대해서 설명해주세요. 응용 프로그램의 관점에서 봤을 때, 두 데이터 저장기법의 가장 큰 차이점은, 먼저 파일 시스템은 데이터가 중복되고 프로그램이 데이터 구조에 종속되는 반면, 데이터베이스에서 데이터는 중복을 통제할 수 있으며 프로그램이 데이터 독립적이 된다는 점입니다. 동시 공유라는 특징에서는, 파일 시스템에서는 파일에 대해 오직 하나의 프로그램만 접근이 가능한 방면, 데이터베이스는 여러 프로그램이 동시에 데이터에 접근 가능하다는 차이점이 존재합니다. 데이터베이스의 특징에 대해 설명해주세요. DB의 특징 중 첫번째는 ‘실시간 접근’입니다. DB는 사용자의 요청에 대해 실시간으로 응답할.. 2024. 1. 11. 15:11
[DB] 데이터 모델링 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. 데이터 모델링 데이터 모델링이란? 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정을 말합니다. 현실세계 -> 컴퓨터 세계로 바로 변환하는 것은 그 절차가 모호하기 때문에, 세부적으로 데이터 모델링은 개념적 모델링과 논리적 모델링으로 나눠집니다. 개념적 모델링이란, 현실 세계의 대상에 대한 중요 데이터를 추출하여 개념 세계로 옮기는 작업을 말합니다. 여기서 핵심적인 포인트는 모~~든 데이터가 아닌 중요 데이터를 추출한다는 것입니다. 현실 세계의 개체가 가지고 있는 수많은 특성 중에서, 내가 필요로 하는 데이터만을 추출하는 추상화(또는 모델링) 작업을 수행하는 것입니다. 논리적 모델링이란, 개념적 모델링으로 도출한 .. 2024. 1. 11. 15:02
[DB] 스키마와 데이터베이스 3단계 구조 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. 데이터베이스 시스템 데이터베이스의 구성요소를 모두 모아, 데이터베이스 시스템이라고 말합니다. DB 시스템은 위와 같은 요소들로 구성되있습니다. 이 글에서는, 그 중 데이터베이스 3단계 구조와 스키마에 대해 알아볼 것입니다. 3단계 데이터베이스 구조 3단계 데이터베이스 구조는, 미국의 표준화 기관인 ANSI/SPARC에서 제안한 “데이터베이스의 복잡한 내부 구조를 감추고 일반 사용자가 데이터베이스를 쉽게 이해하고 이용할 수 있도록 만든 3단계 구조”입니다. 3단계 DB 구조는 아래의 단계로 구성됩니다. 내부 단계 → 외부 단계로 갈수록 추상화의 레벨이 높아집니다. 외부 단계 : 개별 사용자 관점 (집주인 관점) 개념 단계 : 조직 전체의 관점.. 2024. 1. 10. 18:33
[DB] 데이터베이스란? 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. 데이터베이스 기본 개념 데이터와 정보의 차이점 데이터 : 단순히 관찰하거나 측정하여 수집한 사실 이나 값 정보 : 데이터를 의사결정에 유용하게 활용할 수 있도록 처리하여 체계적으로 조직한 결과물 정보 처리 : 데이터를 상황에 맞게 분석하거나 해석하여 데이터 간의 의미를 파악 정보 시스템의 관점에서, 데이터를 저장하고 있다가 필요할 때 제공해주는 대상을 데이터베이스라고 말합니다. 데이터베이스의 정의 정의 : 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합 공유 데이터 : 특정 조직의 여러 사용자가 함께 소유하고 이용 → 다른 사용자들과 함께 사용할 수 있어야 함 통합 데이터 : 데이터의 중복을 최소화하.. 2024. 1. 10. 18:20