본문 바로가기

728x90

DB

(31)
[DB] SQL - 식별자 개념과 관계 정리 식별자란?식별자의 개념여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할수 있는 논리적인 이름하나의 엔티티에 구성되어 있는 여러 개의 속성 중에 대표속성하나의 엔티티는 반드시 하나의 유일한 식별자가 존재식별자의 특징유일성최소성 - 유일성을 만족하는 최소의 수불변성존재성 - Not Null식별자 분류분류 기준식별자 종류설명예시대표성 여부주식별자엔티티 내의 각 어커런스를 고유하게 구분하며, 타 엔티티와의 참조 관계 연결에 사용됨사원 엔터티의 사원번호 보조식별자엔티티 내의 각 어커런스를 고유하게 구분하지만, 대표성이 없어 타 엔티티와의 참조 관계 연결에 주로 사용되지 않음고객 엔터티의 주민등록번호생성 여부내부식별자엔티티 내부에서 스스로 생성되는 식별자고객 엔터티의 고객번호외부식별자타 엔티티와의 관계를 ..
[DB] SQL - 엔터티와 속성 관계 정리 ERD란?구조화된 데이터를 저장하기 위해 데이터베이스를 쓴다. 이 데이터의 구조 및 그에 수반한 제약 조건들은 다양한 기법에 의해 설계될 수 있다.그 기법 중 하나가 개체-관계 모델링(Entity-Relationship Modelling)이다. 줄여서 ERM이라고 한다. ERM 프로세스의 산출물을 가리켜 개체-관계 다이어그램(Entity-Relationship Diagram)이라 한다.ERD 구성요소ERD 관계명(Relationship Name) 설정 규칙의 표시관계명은 관계 표현에서 중요한 요소이다.관계 설정이 완료되면, 각 관계에 적절한 이름을 부여해야 한다.관계명은 항상 ‘현재형 동사’를 사용하여 표현한다.예시: 주문한다, 소속된다, 작성한다지나치게 포괄적인 단어 사용은 지양한다.예: ‘관리한다’보..
[DB] 데이터 모델링 개념 데이터 모델링이란?데이터 모델링(data modeling)이란 주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업을 말하며, 일반적으로 이를 물리적인 데이터베이스 모델로 환원하여 고객의 요구에 따라 특정 정보 시스템의 데이터베이스에 반영하는 작업을 포함한다.복잡한 '현실세계'를 단순화시켜 표현하는 것모델이란? 사물 또는 사건에 관한 양상이나 관점을 연관된 사람이나 그룹을 위하여 명확하게 하는 것모델이란 현실 세계의 추상화된 반영핵심 개념추상화복잡한 현실세계를 일정한 형식에 맞추어 표현중요한요소만 선별하여본질적인 구조로표현단순화복잡한 현실을 약속된 규약과 표기법으로 간단히 표현불필요한 요소 제거, 이해와설계용이성향상명확화애매모호함 제거, 현실을 정확하게 기술누구나 이해할수 있는 구조로 표현세가지 관점..
[DB] SQL - 트리거(Trigger)란? 트리거란?트리거란 특정 테이블에 INSERT, DELETE, UPDDATE 같은 DML 문이 수행 되었을 경우 DB에서 자동으로 동작하도록 작성된 프로그램이다.즉, 사용자가 직접 실행하는게 아닌 데이터 변경이 감지되면 자동으로 동작하도록 만든 규칙이라고 생각하면 된다.트리거의 특징사용자가 직접 실행하지 않는다 (자동 실행)DML 이벤트(INSERT, UPDATE, DELETE)에 반응행 단위 또는 문장 단위로 동작 (MySQL은 FOR EACH ROW만 지원)주로 로그 기록, 데이터 백업, 무결성 유지 등의 용도로 활용됨트리거의 실행 단위에 따른 분류트리거는 실행 단위에 따라 두 가지로 분류할 수 있다.1. 문장 단위 트리거하나의 DML 문장이 실행될 때 단 한 번만 실행된다.Oracle, Postgre..
[DB] MySQL - 파티션을 사용해 대용량 데이터 다루기 파티션(Partition)이란?테이블 하나를 물리적으로 나눈 것처럼 데이터를 분산 저장할 수 있는 기능이다.하지만, MySQL에서는 내부적으로 분리되어 처리되기 때문에, 파티션이 얼마나 있든 사용자는 하나의 테이블로 보게 된다.주로 대용량의 테이블을 여러 개의 테이블로 분산시키기 위해 사용한다.파티션의 종류파티션은 크게 2가지로 나눌 수 있다.수직으로 분할하는 수직 파티션테이블의 열(column) 을 나눠서 두 개 이상의 테이블로 분리자주 조회되는 컬럼과 드물게 쓰는 컬럼을 나눠서 성능 최적화JOIN으로 원래의 데이터 구조 복원 가능수평으로 분할하는 수평 파티션데이터의 행(row) 을 기준으로 파티션을 나누는 방식RANGE, LIST, HASH, KEY 등으로 구현 가능PARTITION BY 구문으로 명..
[DB] MySQL - 파티션 구조 변경 및 CRUD 파티션 구조MySQL에서는 파티션이 크게 2가지로 나뉜다.수평, 수직으로 나뉘는데 이 중 수직 파티션의 경우에는 파티션 기능보다는 테이블 자체를 쪼개는 설계 방식에 가깝다.즉, MySQL에서 제공하는 PARTITION기능은 수평 파티션에 해당하는 기능이라는 소리다.수직 파티션은 DB 설계 전략이지 MySQL에서 수평 파티션처럼 ALTER TABLE ... DROP PARTITION과 같은 방법으로 직접적으로 다룰 수 없다.때문에 이 글에서 다룰 파티션은 수평 파티션에 관한 내용이라고 생각하면 된다.파티션 구조 변경 방법MySQL에서는 여러 명령어를 통해 파티션 구조를 변경할 수 있다.아래 명령어를 표로 정리해뒀다.명령어설명ADD PARTITION파티션 추가DROP PARTITION기존 파티션 제거REOR..
[DB] MySQL - 사용자 및 권한 관리 사용자 권한 관리란?SQL을 사용하다보면 여러 사용자를 운영해야할 경우가 생긴다.예를 들자면, 개발자에게는 읽기 / 쓰기 권한만 부여하거나, 외부 파트너에게는 읽기 권한만 부여하는 등 사용자를 여러개를 만들어 운영해야 하는 경우가 자주 발생한다.자주 사용하는 사용자 생성, 권한 부여, 회수, 삭제 확인 과 같은 명령어나 문법 사용 예시를 확인해보자.주요 명령어 및 문법기능문법사용자 생성CREATE USER '계정'@'호스트' IDENTIFIED BY '비밀번호';권한 부여GRANT 권한 ON DB명.테이블 TO '계정'@'호스트';권한 회수REVOKE 권한 ON DB명.테이블 FROM '계정'@'호스트';사용자 삭제DROP USER '계정'@'호스트';권한 확인SHOW GRANTS FOR '계정'@'호스..
[DB] MySQL - EXPLAIN 사용해보기 EXPLAIN이란?EXPLAIN은 SQL문이 실행될 때 MySQL이 어떤 방식으로 데이터를 처리하는지를 보여주는 명령어다.해당 쿼리를 실행할 때 MySQL은 어떤 테이블부터 읽고, 어떤 인덱스를 사용하며, 몇 건을 탐색할 예정인지와 같은 실행 계획을 알 수 있다.쿼리의 속도 문제 원인 파악이나, 인덱스 활용 여부 확인 등에 사용한다.왜 사용할까?쿼리가 느릴 때 원인 분석을 할 수 있다.인덱스가 실제로 사용되고 있는지 확인이 가능하다.이를 통해 접근 방식을 개선해 속도를 향상 시킬 수 있다.INSERT에서의 사용 예시그렇다면 EXPLAIN을 어떻게 써야하는지 한번 알아보자.아래 테이블을 예시로 들어보겠다.empnoenamejobsaldeptno7369SMITHCLERK800207499ALLENSALESMA..

728x90