CS

CS/DataBase

[DataBase] 다대다(M:N) 관계 연결 테이블 구현

다대다 (M:N) 관계 두 개의 테이블이 서로의 행에 대해 여러개로 연관 되어 있는 상태를 다대다(M:N)관계라고 한다. 예를 들어 한명의 학생이 여러 수업을 수강하고, 한 수업은 여러 학생을 수용하는데 이를 ERD로 표현하면 다음과 같다. ERD (Entity Relationship Diagram) : 개체-관계 모델. 테이블간의 관계를 설명해주는 다이어그램이라고 볼 수 있으며, 이를 통해 프로젝트에서 사용되는 DB의 구조를 한눈에 파악할 수 있다. 즉, API를 효율적으로 뽑아내기 위한 모델 구조도라고 생각하면 된다. 다대다(M:N) 구현하기 논리적으로 다대다관계의 표현은 가능하지만 2개의 테이블만으로 구현하는 것은 불가하다. 다대다 관계를 실제로 구현하려면 각 테이블의 Primary Key를 외래키..

CS/DataBase

[DataBase] - 트랜잭션 격리 수준

트랜잭션 격리 수준 복수개의 트랜잭션이 한 번에 처리될 때, 특정 트랜잭션이 변경하거나 조회하고 있는 데이터에 대해 다른 트랜잭션에 대해 조회 허용 여부를 결정하는 것이다. 트랜잭션 격리 수준은 아래와 같이 4개로 구분된다. SERIALIZABLE (직렬화 가능) REPEATABLE READ (반복 가능한 읽기) READ COMMITTED (커밋된 읽기) READ UNCOMITTED (커밋되지 않은 읽기) 아래로 갈수록 격리 수준이 낮아지며 동시 처리 성능이 높아진다. 반면 위로 갈수록 격리 수준이 높아지며 동시 처리 성능은 낮아지지만 데이터 부정합 문제가 발생할 확률이 줄어든다. 트랜잭션 격리 수준에 따라 발생할 수 있는 문제 트랜잭션 격리 수준에 따라 발생할 수 있는 문제점을 간단히 짚고 넘어가도록 ..

CS/DataBase

[DataBase] Normalization (정규화)

정규화(Normalization) 이란 ? 정규화의 기본 목표는 테이블 간 중복된 데이터를 허용하지 않는다는 것이다. 이로 인해 무결성(Integrity)을 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 제1 정규화 - 1NF 제1 정규화란 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것이다. 다음과 같은 고객취미들 테이블이 있다고 하자. 위의 테이블에서 추신수와 박세리는 여러 취미를 가지고 있기 때문에 제1 정규형을 만족하지 못하고 있다. 그렇기에 이를 제1 정규화하여 분해할 수 있는데, 제1 정규화를 진행한 테이블은 아래와 같다. 제2 정규화 - 2NF 제2 정규화는 제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하..

CS/DataBase

[DataBase] Index (인덱스)

Index ? 인덱스란 데이터베이스 테이블의 검색 속도를 향상 시켜주는 자료구조라고 할 수 있다. 특정 컬럼에 인덱스를 생성하면 해당 컬럼의 데이터들을 정렬해서 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장한다. 인덱스를 이용하여 쿼리문을 작성하면 옵티마이저에서 판단하여 생성된 인덱스를 탈 수 있다. 옵티마이저 : 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 그렇다면 Index를 왜 쓸까 ?? 인덱스의 가장 큰 특징은 데이터들이 정렬 되어있다는 점이다. 이 특징으로 조건 검색이라는 부분에서 큰 장점이 된다. 1) 조건 검색 WHERE절의 효율성 테이블 내의 데이터가 쌓이면 테이블의 튜플은 내부적으로 순서가 뒤죽박죽 저장이 되고 이를 WHERE 절로 데이터..

엥재
'CS' 카테고리의 글 목록 (4 Page)