목록DataBase/이론 (8)
만족
데이터베이스의 성능을 좌우하는 주요 요소인 인덱스에 대해 알아보자. 데이터베이스의 크기가 충분히 크지 않을 때(테이블 하나에 10000개정도?)는 인덱스를 걸지 않아도 딱히 눈에 띌만한 성능 저하가 나타나지는 않지만 10만개, 100만개처럼 늘어나다보면 문제가 두드러진다. 예를 들어, 위 쿼리 결과는 800만개의 행이 저장된 테이블에 대해 무지성 쿼리를 날린 결과인데, 실행 시간이 5초나 걸렸다. 엥? 5초면 괜찮은거 아니냐? 할 수도 있는데, 우리가 데이터베이스를 주로 사용하는 환경은 단일 사용자가 아닌 다중 사용자 대상이므로 여러 명의 사용자가 저런 쿼리를 날리게 되면 걸리는 시간은 더욱 늘어난다. 게다가, 느리기만 하면 그나마 다행이지... 컴퓨팅 자원도 엄청나게 소모한다. https://satis..
이번에는 데이터 모델링 시 유용하게 사용할 수 있는 패턴들에 대해 알아볼 것이다. Association Pattern 어떤 두 개체가 연관이 있기는 한데, 개체의 속성으로 추가하기에는 애매한 상황일 때 적용할 수 있다. 가령 음식 개체와 음식 제조 회사 개체가 있을 때, 모든 음식 제조 회사가 같은 음식을 만들 때 같은 가격과 같은 재료를 사용하지는 않는다. 이럴 경우 음식 가격과 음식 재료에 대한 정보를 회사 개체에 넣을 것인지, 음식 개체에 넣을 것인지가 애매해진다. 연관 패턴을 적용하면, 음식 가격/재료 속성을 포함하는 음식 제품이라는 새로운 개체를 만들고 음식 개체와 음식 제품 개체는 1:N 관계, 음식 제조 회사 개체와 음식 제품 개체가 1:N 관계를 갖게 만들 수 있다. Multivalued ..
Data Modeling을 위한 기본 개념에 무지하다면 아래 포스트를 읽어보고 오는 것을 추천한다. https://satisfactoryplace.tistory.com/232 [Database] Data Modeling (ER Modeling) 관계형 DB를 설계할 때 가장 많이 사용되는 기법으로 ER Modeling이 있다. ER Modeling은 이름에서부터 알 수 있듯이, Entity와 Relation을 이용해 현실 세계를 묘사한다. Entity Entity는 개체라고도 하며, 단독 satisfactoryplace.tistory.com Attribute ER 다이어그램이 Entity를 위와 같이 표현한 것과 달리, Crow Foot Notation에서는 아래와 같이 표현한다. 개체 표현이 더 간소화..
관계형 DB를 설계할 때 가장 많이 사용되는 기법으로 ER Modeling이 있다. ER Modeling은 이름에서부터 알 수 있듯이, Entity와 Relation을 이용해 현실 세계를 묘사한다. Entity Entity는 개체라고도 하며, 단독으로 존재할 수 있으며 다른 개체와 구별되는 object이다. 개체는 이름과 애트리뷰트를 갖는다. 이름은 개체의 이름이고, 애트리뷰트는 개체가 가질 수 있는 속성이다. 예를 들어, 사람이라는 개체는 성별, 나이, 키, 몸무게라는 애트리뷰트를 가질 수 있다. Attribute 첫 번째로 애트리뷰트는 단순 애트리뷰트와, 복합 애트리뷰트로 나눌 수 있다. 가령 사람의 나이라는 애트리뷰트는 더 이상 나눌 수 없는 단순 애트리뷰트이지만, 사람의 거주지 주소라는 애트리뷰트..
셀렉트, 프로젝션은 릴레이션을 피연산자로 갖는 단일 연산자이고, 디비전은 두개의 릴레이션을 피연산자로 갖는 이항 연산자이고, 반환하는 값은 모두 하나의 릴레이션이다. 셀렉트(SELECT) 시그마 기호σ, 조건(선택), 피연산자로 이루어진 단일 연산자이다. 주어진 릴레이션에 대해 원하는 조건을 만족하는 튜플을 뽑아 새로운 릴레이션을 만든다. σ이름='홍길동'(국민) 하면 이름 주민등록번호 홍길동 123456-1234567 홍길동 234567-2345678 처럼 나온다. 결과값은 피연산자의 튜플 갯수보다 작거나 같다. 프로젝션(PROJECTION) 프로젝션 기호∏, 애트리뷰트 집합, 피연산자로 이루어진 단일 연산자이다. 주어진 릴레이션에 대해 각 튜플에서 원하는 애트리뷰트 집합으로만 이루어진 새로운 릴레이션..
집합 연산자는 이항 연산자로, 피연산자 두개가 필요하며 피연산자는 릴레이션이여야 한다. 합집합 릴레이션 R과 S의 튜플을 모두 합쳐 새로운 릴레이션 T를 만든다. 단 관계 대수에서 릴레이션은 중복 튜플을 허용하지 않으므로 중복 튜플은 하나만 표시한다. 교집합 릴레이션 R과 S의 튜플에서 중복되는 튜플만을 포함하는 새로운 릴레이션 T를 만든다. 단 관계 대수에서 릴레이션은 중복 튜플을 허용하지 않으므로 중복 튜플은 하나만 표시한다. 차집합 릴레이션 R에서 S에 존재하는 튜플들을 제외한 새로운 릴레이션 T를 만든다. 곱집합 릴레이션 R과 S에 대해 모든 가능한 튜플 조합을 가진 새로운 릴레이션 T를 만든다. 곱집합은 카테시안 곱이라고도 한다. 릴레이션 T의 차수는 R의 차수+ S의 차수이며, 릴레이션 T의 ..
열(column)= 필드(field)= 애트리뷰트(attribute) => 애트리뷰트는 관계 데이터 모델에서 사용하는 개념으로 관계형 데이터베이스의 열, 필드와는 약간의 차이점이 있다 행(row)= 레코드(record)= 튜플(tuple) => 튜플은 관계 데이터 모델에서 사용하는 개념으로 관계형 데이터베이스의 행, 레코드와는 약간의 차이점이 있다 릴레이션 스키마= 애트리뷰트의 집합(a set of attributes) 릴레이션 인스턴스= 어느 한 시점에서의 튜플의 집합(a set of tuples about specific time) => 데이터 추가, 삭제 등으로 인해 튜플 집합은 시간에 따라 변한다 도메인(domain) 도메인은 애트리뷰트(행)이 취할 수 있는 값들의 집합이다. 타입도 도메인으로 볼..
세타조인, 동일조인, 자연조인, 세미조인, 외부조인에 대해 알아보자. 조인은 기본적으로 두 개의 릴레이션에 대해 진행하는 연산으로 이항 연산자이며, 양쪽 외부 조인을 제외한 모든 조인은 두 개의 릴레이션에서 공통된 애트리뷰트가 하나 이상 존재해야 한다. 조인은 두 릴레이션에 대해 먼저 곱연산을 진행하고 난 다음의 릴레이션에 대해 열이나 행을 필터링하는 과정을 하나의 연산으로 묶은 것이라 보면 되겠다. 세타조인(Theta Join; ⋈AΘB) T= R⋈(AΘB) S라는 식이 있다고 해보자. 이는 R과 S 릴레이션을 조인하되, R의 속성 A와 S의 속성 B가 세타 관계가 성립하는 새로운 T 릴레이션을 생성한다. 세타에는 =, < 등 비교연산자가 포함될 수 있다. Relation R A AA 1 안녕 1 하세..