query
프로그래밍/Database
2020. 8. 23.
[MySQL] Explain_Query 동작 방식 및 성능 파악하기
DB Schema 설계는 Business Logic에 대한 이해로부터 비롯된다. 이 때, Schema의 설계에는 2가지가 포함된다고 생각한다. Business Logic에 부합하는 Entity들을 구상하여 Entity들 간의 관계(Relation)를 확실하게 규정하는 것과 실제 사용성의 측면에서 지나치게 복잡한 구조는 지양하여, 효과적인 쿼리 수행 성능을 위한 구조를 마련하는 것이 포함된다. 이 중, Entity 들 간의 관계를 규정하는 부분에 대해서는 아래 링크의 포스팅을 통해 언급한 적이 있다. 2020/04/07 - [프로그래밍/Database] - [DB] 정규화(Normalization)와 역정규화(DeNormalization) [DB] 정규화(Normalization)와 역정규화(DeNorma..
프로그래밍/Database
2020. 4. 7.
[DB] 정규화(Normalization)와 역정규화(DeNormalization)
정규화 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. (출처 Wikipedia) Data Model 과정에서 Entity 사이의 관계(Level, Depth 등)를 분석하여 다수의 Relation으로 분리하는 과정을 말한다. 정규화는 이렇게 함으로써 데이터의 일관성(Consistency)과 모델의 응집도(Cohesion)를 높이는 것을 지향한다. 정규화는 일관성(Consistency)을 향상시킨다. 정규화는 하나의 논리적 Database에서 여러 테이블에 동일한 데이터(column)가 관리되지 않도록 설계하는 과정이다. 만약, 여러 테이블에서 필요한 데이터라면 해당 Entity의 Level은 최상위 Level에 속하게 될 것이고..
프로그래밍/Database
2020. 3. 29.
[DB] 트랜잭션(Transaction)이란?
Transaction이란? 데이터베이스의 상태를 변화시키기 위해서 수행해야 할 연산들의 집합으로 하나의 작업 처리를 위한 논리적 단위를 뜻한다. 데이터베이스의 상태를 변화시킨다는 것을 간단하게 표현하면, SELECT, INSERT, DELETE, UPDATE의 쿼리를 사용하여 DB에 접근하는 것을 의미한다. 일반적인 경우, 작업 처리의 단위는 한 건의 쿼리(즉 연산)가 아닌 여러 개의 연산이 복합적으로 구성되는 것이 일반적이다. 현재 작성하고 있는 글을 등록하는 작업을 생각해보자. 글의 내용을 작성한 뒤, 등록 버튼을 눌렀을 때 새로운 글이 등록된 최신 글 목록이 보여지는 작업 처리의 단위는 등록할 때의 INSERT와 최신 리스트를 보여주는 SELECT가 하나의 단위에서 구성되는 것으로 이러한 작업의 단..
프로그래밍/Database
2020. 3. 25.
[MySQL] Inner Join과 Left Join의 차이
신입 개발자 면접에서 단골 질문이었다. " Inner Join과 Outer Join의 차이점을 아시나요? " 아마 join과 관련된 차이점을 검색할 때 가장 많이 나오는 이미지가 아래의 이미지일 것이다. 가장 간단하게 표현하면 Inner Join : Table A와 Table B의 교집합을 조회 Outer Join : Table A와 Table B의 합집합을 조회 사물의 이름을 저장하고 있는 table_A와 무게를 저장하고 있는 table_B, 그리고 해당 사물과 무게의 관계를 표현하는 rel_table_a_b 3개가 있는 상황이라고 해보자. Left Join 즉, Left Outer Join을 한 결과는 아래와 같다. select * from table_a as a left join rel_table_..