반응형

전체 글 287

[DB] 릴레이션 분해

릴레이션 분해 개요 릴레이션 분해란, 하나의 릴레이션을 두 개 이상의 릴레이션으로 나누는 것이다. 릴레이션을 분해하면 중복이 감소되고 갱신 이상이 줄어드는 장점이 있는 반면에, 바람직하지 않은 문제들을 포함하여 몇 가지 잠재적인 문제들을 야기할 수 있다. 첫 번째, 릴레이션이 분해되기 전에는 조인이 필요 없던 질의가 분해 후에는 조인을 필요로 하는 질의로 바뀔 수 있다. 두 번째, 분해된 릴레이션들을 사용하여 원래 릴레이션을 재구성하지 못할 수 있다. 무손실 분해(Lossless decomposition) 분해된 두 릴레이션을 조인하면, 원래의 릴레이션에 들어 있는 정보를 완전하게 얻을 수 있다. 여기서 손실이란 정보의 손실을 말한다. 정보의 손실은 원래의 릴레이션을 분해한 후에 생성된 릴레이션들을 조인..

CS/DB 2022.05.26

[DB] 함수적 종속성

함수적 종속성 개요 함수적 종속성은 정규화 이론의 핵심이다. 릴레이션의 애트리뷰트들의 의미로부터 결정된다. 릴레이션 스키마에 대한 주장이지, 릴레이션의 특정 인스턴스에 대한 주장이 아니다. 릴레이션의 가능한 모든 인스턴스들이 만족해야 한다. 실세계에 대한 지식과 응용의 의미를 기반으로 어떤 함수적 종속성들이 존재하는가를 파악해야 한다. 함수적 종속성은 제2정규형부터 BCNF까지 적용된다. 결정자 어떤 애트리뷰트의 값은 다른 애트리뷰트의 값을 고유하게 결정할 수 있다. 사원 릴레이션에서 사원번호는 사원 이름을 고유하게 결정한다. 주소는 사원 이름을 고유하게 결정하지 못한다. 결정자는 주어진 릴레이션에서 다른 애트리뷰트(또는 애트리뷰트들의 집합)를 고유하게 결정하는 하나 이상의 애트리뷰트를 의미한다. 결정자..

CS/DB 2022.05.26

[DB] 정규화 개요

릴레이션 정규화 부주의한 데이터베이스 설계는 제어할 수 없는 데이터 중복을 야기하여 여러 가지 갱신 이상을 유발한다. 어떻게 좋은 데이터베이스를 설계할 것인지, 데이터베이스에 어떤 릴레이션들을 생성할 것인지, 각 릴레이션에 어떤 애트리뷰트들을 둘 것인지 고민해야 한다. 정규화(Normalization)는 주어진 릴레이션 스키마를 함수적 종속성과 기본 키를 기반으로 분석하여, 원래의 릴레이션을 분해함으로써 중복과 세 가지 갱신 이상을 최소화한다. 좋은 관계 데이터베이스 스키마를 설계하는 목적 1. 정보의 중복과 갱신 이상이 생기지 않도록 한다. 2. 정보의 손실을 막는다. 3. 실세계를 훌륭하게 나타낸다. 4. 애트리뷰트들 간의 관계가 잘 표현되는 것을 보장한다. 5. 어떤 무결성 제약조건의 시행을 간단하..

CS/DB 2022.05.26

[DB] 다단계 인덱스

다단계 인덱스 인덱스 자체가 클 경우에는 인덱스를 탐색하는 시간도 오래 걸릴 수 있다. 인덱스 엔트리를 탐색하는 시간을 줄이기 위해서 단일 단계 인덱스를 디스크 상의 하나의 순서 화일로 간주하고, 단일 단계 인덱스에 대해서 다시 인덱스를 정의할 수 있다. 다단계 인덱스는 가장 상위 단계의 모든 인덱스 엔트리들이 한 블록에 들어갈 수 있을 때까지 이런 과정을 반복한다. 가장 상위 단계 인덱스를 마스터 인덱스 (master index)라고 부른다. 마스터 인덱스는 한 블록으로 이루어지기 때문에 주기억 장치에 상주할 수 있다. 대부분의 다단계 인덱스는 B+-트리를 사용한다 SQL의 인덱스 정의문 SQL의 CREATE TABLE문에서 PRIMARY KEY절로 명시한 애트리뷰트에 대해서는 DBMS가 자동적으로 기..

CS/DB 2022.05.20

[DB] 화일 조직

화일에는 다음과 같은 유형이 있다. 히프 화일 순차 화일 인덱스된 순차 화일 직접 화일 히프 화일 가장 단순한 화일 조직이다. 일반적으로 레코드들이 삽입된 순서대로 화일에 저장된다. 삽입 : 새로 삽입되는 레코드는 화일의 가장 끝에 첨부된다. 검색 : 원하는 레코드를 찾기 위해서는 모든 레코드들을 순차적으로 접근해야 함. 삭제 : 원하는 레코드를 찾은 후에 삭제한다. 삭제된 레코드가 차지하는 공간을 재사용하지는 않는다. 좋은 성능을 유지하기 위해 하프 화일을 주기적으로 재조직할 필요가 있다. 모든 레코드들을 참조하고, 레코드들을 접근하는 순서는 중요하지 않을 때 사용한다. (ex : SELECT 문) 특정 레코드를 검색할 때에는 비효율적 -> b개의 블록이 있다고 하면 평균적으로 b/2개의 블록을 읽어야..

CS/DB 2022.05.19

[게임 리뷰] 젤다의 전설 브레스 오브 더 와일드

2020년 군대 전역하고 목돈으로 스위치를 샀었다. 야숨이 그렇게 갓겜이라는 소리를 정말 많이 들었었고, 당연히 스위치 첫 게임으로 야숨을 선택했다. 그렇게 설렘을 가지고 야숨을 플레이 했지만, 튜토리얼에 해당하는 시작의 섬에서 진행할 때에는 생각보다는 재밌지 않았다. 소울류 게임, 콘솔 게임에 익숙하지 않았던 나로써는 조작이 꽤나 불편했다. 키마에 익숙해져서 시야 돌리는 것도 힘들었고 특히 에임 보정이 없어서 활 맞추기가 매우 힘들었다. 게임 난이도도 꽤 높았다. 몬스터 인공지능이 엄청 정교해서 전투 난이도가 높았고 쉴새없이 무기를 바꿔줘야 해서 파밍 스트레스도 많이 받았다. 그래도 탐험자제는 재미있었다. 일단 자유도가 매우 높아서 즐기고 싶은대로 즐길 수 있다는 게 정말 매력적이었다. 야숨의 메인 퀘..

게임/Switch 2022.05.18

[DB] 물리적 데이터베이스 설계

물리적 데이터베이스 설계 논리적인 설계의 데이터 구조를 보조 기억장치상의 화일(물리적인 데이터 모델)로 사상한다. 예상 빈도를 포함하여 데이터베이스 질의와 트랜잭션을 구분한다. 데이터에 대한 효율적인 접근을 제공하기 위하여 저장 구조와 접근방법들을 다룬다. 특정 DBMS의 특성을 고려하여 진행된다. 질의를 효율적으로 지원하기 위해서 인덱스 구조를 적절히 사용한다. 보조 기억 장치 사용자가 원하는 데이터를 검색하기 위해서 DBMS는 디스크 상의 데이터베이스로부터 사용자가 원하는 데이터를 포함하고 있는 블록을 읽어서 주기억 장치로 가져온다. 데이터가 변경된 경우에는 블록들을 디스크에 다시 기록한다. 블록 크기는 512바이트부터 수 킬로바이트까지 다양하다. (전형적인 블록 크기는 4,096바이트) 각 화일은 ..

CS/DB 2022.05.16

[DB] ER 스키마를 관계 모델의 릴레이션으로 사상하기

ER 스키마를 관계 모델 릴레이션으로 사상하기 논리적 설계 단계에서 ER 스키마를 관계 데이터 모델의 릴레이션들로 사상한다. ER 스키마에는 엔티티 타입과 관계 타입이 존재하지만 관계 데이터베이스에는 엔티티 타입과 관계 타입을 구분하지 않는다. 릴레이션으로 사상할 대상이 ER 스키마에서 엔티티 타입인지 또는 관계 타입인지, 엔티티 타입이라면 정규 엔티티 타입인지 또는 약한 엔티티 타입인지, 관계 타입이라면 2진 관계인지, 3진 이상의 관계인지 등에 따라 사상하는 방법이 달라짐 ER 모델을 릴레이션들로 사상하는 7개의 알고리즘 단계가 있음. 단계 1. 정규 엔티티 타입과 단일 값 애트리뷰트 엔티티 타입 E에 대해 릴레이션 R을 생성함 E에 있던 단순 애트리뷰트들은 릴레이션 R에 모두 포함시킴 E에서 복합 ..

CS/DB 2022.05.15

[DB] ER 모델

ER 모델 데이터베이스 설계를 용이하게 하기 위해서 P.P. Chen이 1976년에 제안 현재는 EER(Enhanced Entity Relationship) 모델이 데이터베이스 설계 과정에 널리 사용됨 실세계를 엔티티, 애트리뷰트, 엔티티들 간의 관계로 표현함 기본적으로 엔티티, 관계, 애트리뷰트가 있고, 기타로는 카디날리티 비율, 참여 제약조건 등이 있음 적은 노력으로 쉽게 배울 수 있고, 전문가가 아니어도 이해하기 쉬우며, 자연어보다 정형적이고, 구현에 독립적임 엔티티 엔티티 : 사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체 사원처럼 실체가 있는 것도 있고, 생각이나 개념같이 추상적인 것도 있음 엔티티 타입 엔티티들은 엔티티 타입(또는 엔티티 집합)들..

CS/DB 2022.05.14

[DB] 데이터베이스 설계 개요

개념적 데이터베이스 설계 실세계의 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델을 구축 엔티티는 서로 구분이 되면서 조직체에서 데이터베이스에 나타내려는 객체를 의미 관계는 두 개 이상의 엔티티들 간의 연관을 나타냄 프로세스는 관련된 활동을 나타냄 무결성 제약조건은 데이터의 정확성과 비즈니스 규칙을 의미 데이터베이스 설계 개요 한 조직체의 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정 모든 주요 응용과 사용자들이 요구하는 데이터 및 데이터 간의 관계를 표현 DB 개발은 일반적으로 프로젝트의 라이프 사이클을 따름 데이터베이스 설계 주요 단계 요구사항 분석, 개념적 설계, DBMS 선정, 논리적 설계, 스키마 정제. 물리적 설계, 튜닝 등 여러 작업으로 이뤄짐 데이터베이스 설..

CS/DB 2022.05.13
반응형