물리적 데이터 모델링과 역정규화 물리적 데이터 모델링은 논리적 데이터 모델링 단계까지 설계한 데이터 모델을 실제로 구현하는 단계를 의미한다. 이제부터는 실제 데이터베이스의 성능이 중요해진다. 데이터베이스의 성능을 확인할 수 있는 지표는 다양하지만, 그 중 하나는 ‘Slow Query’가 발생하는 지점을 찾는 것이다. ‘MySQL find slow query’ 등으로 검색하면, 다양한 슬로우 쿼리를 찾기 위한 도구들과 방법들이 나타난다. 슬로우 쿼리를 발견했다면 이를 개선시킬 방법을 찾아야 한다. 여기서는 ‘역정규화’, 즉 정규화됐던 표를 성능적 이점을 얻기 위해 역정규화하는 방법을 소개한다. 그러나, 역정규화는 기본적으로 혹독한 대가를 치르게 한다. 역정규화를 함으로써 치르게 되는 대가를, 지불할 만 한..
논리적 데이터 모델링 논리적 데이터 모델링은, 개념적 데이터 모델링 단계에서 설계한 데이터 모델을 관계형 데이터베이스의 패러다임에 맞추어 옮기는 작업을 말한다. 논리적 데이터 모델링 단계에서 한 가지 중요한 유의점은, 이 과정에서는 구체적인 데이터베이스 제품을 선택하는 단계는 아니라는 점이며, 사양이나 성능 등의 문제는 신경쓰지 않는다. 논리적 데이터베이스 모델링 단계에서는 위와 같이, 개념적 데이터베이스 모델을 스키마 형태로 그린다. 위 사진이 데이터베이스 스키마의 한 예시이다. Mapping Rule (매핑 룰) 개념적 데이터베이스 모델링의 결과를 관계형 데이터베이스 이론에 근거하여 데이터베이스 스키마로 변환하는 과정을 말한다. ▢ Entity → Table ○ Attribute → Column ◇ ..
개념적 데이터 모델링 개념적 데이터 모델링이란? 업무라는 복잡한 현실속 문제에서, 특징을 추출하여 개념적인 데이터 모델을 세우는 작업이다. 업무와 논리적 데이터 모델링 단계를 연결하는 가교 역할을 하지만, 사실 개념적 데이터 모델링이 데이터 모델링의 절반 이상을 먹고 들어간다고 볼 수 있다. 이 단계에서 개념적 데이터 모델을 잘 설계한다면, 이후의 단계는 그냥 개념적 데이터 모델을 차근차근 컴퓨터 레벨로 옮기는 작업이기 때문이다. 개념적 데이터 모델링을 하는 이유이자 장점은 크게 두 가지가 존재한다. 현실에서 필요한 정보를 추출하는 필터의 역할 개념에 대해서 다른 사람과 대화할 수 있게 하는 언어의 역할 우리가 복잡한 현실을 모방할 때, 우리에게 필요한 정보만을 추출하고, 나머지 불필요한 부수적인 정보들..
본 글은 생활코딩 관계형 데이터 모델링 강의를 수강하고 이를 정리한 글입니다. 관계형 데이터 모델링이란? 현실은 믿을 수 없을 정도로 매우 복잡합니다. 이렇게 복잡한 현실의 문제를 해결하기 위해 동원된 컴퓨터라는 기계는, 매우 강력하지만 똑똑하지는 않은 기계입니다. 이 기계를 활용하기 위해서는, 현실의 문제를 기계가 이해할 수 있게 변형하는 작업이 필요합니다. 일반적으로 모델링이란 말은 ‘현실을 모방한 것’을 의미합니다. 현실은 매우 복잡하기에 이를 그대로 복제하는 것은 불가능하지만, 일반적으로 우리가 요구하는 어떤 기능을 만족하는 가상의 개념을 모방하는 것은, 비교적 매우 쉽습니다. Data Modeling이란 매우 복잡한 현실의 문제를 컴퓨터가 이해할 수 있는 데이터로 모방하는 것을 의미합니다. 인간..
본 글은 갖고노는 MySQL 데이터베이스 by 얄코 강의를 수강하고 이를 정리한 글입니다. 식별자와 인덱스 PK, Unique, FK (기본키, 고유키, 외래키) 1. 기본키(Primary Key, PK) 중복되지 않는 고유값 NOT NULL PK는 테이블 당 하나만 있어야 함 -- 기본키 넣는 방법 1 CREATE TABLE people ( first_name CHAR(2) **PRIMARY KEY**, last_name CHAR(3), nickname VARCHAR(10) ); -- 기본키 넣는 방법 2 CREATE TABLE people ( first_name CHAR(2), last_name CHAR(3), nickname VARCHAR(10), **PRIMARY KEY (first_name)**..
본 글은 갖고노는 MySQL 데이터베이스 by 얄코 강의를 수강하고 이를 정리한 글입니다. 데이터 조작하기 1. MySQL 설치하기 MacOS에서는 homebrew를 이용해서 간단하게 설치할 수 있다. $ brew install mysql MySQL을 설치하고서는, 보안을 강화하기 위해 다음 명령어를 실행하여 보안 패키지를 설치할 것이 권장된다. $ mysql_secure_installation 그렇다면 여러 가지 옵션들이 나오는데(패스워드 설정, Anonymous 유저 삭제, 기본 테스트 스키마 삭제할 것인지 등), 원하는 것을 선택해주면 된다. 나의 경우는 전부 Y로 체크했다. 비밀번호같은 경우는 강도를 설정하라는 안내도 나올 수 있다. MySQL 서버를 실행하려면 다음 두 가지 명령어 중 하나를 이..
본 글은 갖고노는 MySQL 데이터베이스 by 얄코 강의를 수강하고 이를 정리한 글입니다. SELECT 심화, 복합적인 데이터 가져오기 1. 서브 쿼리(Sub Query) 서브 쿼리는 쿼리 안에 들어가있는 또다른 쿼리를 말한다. 1. 비상관 서브 쿼리 메인 쿼리 문과 서브 쿼리 문이 서로 관계가 없는 것, 테이블을 서로 참조하지 아니하는 것 SELECT CategoryID, CategoryName, Description, (SELECT ProductName FROM Products WHERE ProductID = 1) FROM Categories; -- Categories 내에서, ProductID = 1인 ProductName을 Products에서 뽑아냄 CategoryID CategoryName De..
본 글은 갖고노는 MySQL 데이터베이스 by 얄코 강의를 수강하고 이를 정리한 글입니다. RDBMS 관계형 데이터베이스 관리 시스템(RDBMS)는 표를 기준으로 데이터를 저장 및 관리하는 시스템을 의미한다. 역사적으로 오래 사용되어 왔고 많은 곳에서 사용되는, 가장 기본이 되는 데이터베이스 시스템이다. 트랜잭션 취소도 쉬워 안정적이고, 또한 데이터의 구조를 일관적으로 가져갈 수 있다는 장점때문에 널리 이용된다. SQL이라는 데이터베이스 관리용 언어를 사용하게 되며, RDBMS의 대표적인 제품으로는 MySQL, PostgreSQL, MSSQL 등이 있다. 본 글은 MySQL에서 사용되는 SQL의 문법을 정리한 글이다. 한편 이 링크로 들어가면 MySQL 쿼리문을 실제로 시험해볼 수 있는 에디터가 나온다...