CS(24)
-
[Database] 인덱스(Index)
DB Index란? 인덱스는 데이터베이스 테이블에 있는 데이터를 빨리 찾기 위한 용도의 데이터베이스 객체이며 일종의 색인기술 테이블에 index를 생성하게 되면 index Table을 생성해 관리한다. 인덱스는 테이블에 있는 하나이상의 컬럼으로 만들 수 있고 가장 일반적인 B-tree 인덱스는 인덱스 키(인덱스로 만들 테이블의 컬럼 값)와 이 키에 해당하는 컬럼 값을 가진 테이블의 로우가 저장된 주소 값으로 구성된다. 목적 RDBMS에서 검색 속도를 높이기 위한 기술 Table의 Column을 색인화 함 (따로 파일로 저장) → 해당 Table의 Record를 Full scan 하지 않음. → 색인화 된 (B+ Tree 구조로) Index 파일 검색으로 검색 속도 향상 과정 Table을 생성하면 MYD,..
2023.12.07 -
[Database] 이상(Anomaly)
Anomaly 정규화를 해야하는 이유 : 잘못된 테이블 설계로 인해 Anomaly (이상 현상)가 나타나기 때문이다. 이상 현상은 테이블을 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말한다. 이상 현상의 종류 1. 삽입 이상(Insertion Anomaly) 자료를 삽입할 때 의도하지 않은 자료까지 삽입해야만 자료를 테이블에 추가가 가능한 현상 불필요한 데이터를 추가해야지, 삽입할 수 있는 상황 = Insertion Anomaly 기본키가 {Student ID, Course ID} 인 경우 -> Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생함. 결국 Course ID를 Null로 할 수밖에 없는데, 기본키는 Null이 될 수 없으므로, ..
2023.12.07 -
[Database] SQL과 NOSQL
MySQL과 같은 SQL을 사용할까? 아니면 MongoDB와 같은 NoSQL을 사용할까? - 보통 Spring에서 개발할 때는 MySQL을, Node.js에서는 MongoDB를 주로 사용한다. 하지만 그냥 단순히 프레임워크에 따라 결정하는 것이 아니다. 프로젝트를 진행하기에 앞서 적합한 데이터베이스를 택해야 한다. SQL (관계형 DB) SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있다. 관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. 데이터는 관계를 통해 여러 테이블에 분산된다. 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정..
2023.12.05 -
[Database] SQL Injection (보안)
SQL Injection이란? 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말한다. 주로 사용자가 입력한 데이터를 제대로 필터링, 이스케이핑하지 못했을 경우에 발생한다. 공격 방법 1) 인증 우회 보통 로그인을 할 때, 아이디와 비밀번호를 input 창에 입력하게 된다. 쉽게 이해하기 위해 가벼운 예를 들어보자. 아이디가 abc, 비밀번호가 만약 1234일 때 쿼리는 아래와 같은 방식으로 전송될 것이다. SELECT * FROM USER WHERE ID = "abc" AND PASSWORD = "1234"; SQL Injection으로 공격할 때, input 창에 비밀..
2023.12.05 -
[Database] 조인(Join)
조인이란? 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다. JOIN 종류 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN SELF JOIN 1. Inner Join 교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다. SELECT A.NAME, B.AGE FROM EX_TABLE A INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP 2. LEFT OUTER JOIN 기준테이블값과 조인테이블과 중복된 값을 보여준다. 왼쪽테이블 기준으로 JOIN을 한..
2023.12.04 -
[Database] 키(Key)
키의 개념 Key란? : 조건에 만족하는 Tuple을 검색, 정렬시 구분할 수 있는 기준이 되는 속성(Attribute) 왜 필요할까? 중복이 되지 않고 이상 현상(삽입, 수정, 삭제 이상)을 방지하기 위해 특정 데이터를 검색하거나 정렬하고 싶을 때 원하는 값을 얻고 식별하기 위해 키의 종류 1. 기본키(Primary Key) 후보키 중 선택한 Main Key - 유일무이한 값을 가진 키 특징 속성이 항상 고유한 값을 가져야함 Null 값을 가질 수 없음 동일한 값이 중복될 수 없음 테이블에 기본키는 하나만 만들 수 있음 2. 후보키(Candidate Key) Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합. (기본키로 사용할 수 있는 속성들) 2가지 조건 만족 유일성 : Key로 하나의..
2023.12.04