반응형

파이썬 진법 변환

# 문자열로 된 num을 10진수 정수로 변환

num = 10

b = bin(num) // 2진수
o = oct(num) // 8진수
h = hex(num) // 16진수

print(b) // 출력 : 0b1010
print(o) // 출력 : 0o12
print(h) // 출력 : 0xa
반응형

'Programming > Python' 카테고리의 다른 글

[Python] 파이썬 list  (0) 2021.04.15
[Python] 부모 클래스 생성자 오버라이딩  (0) 2021.04.14
반응형

해싱

- 해싱은 Hash Table이라는 기억공간을 할당하고 해시 함수(Hash Function)을 이용하여 레코드 키에 대한 Hash Table 내의 Home Address를 계산한 후 주어진 레코드를 해당 기억장소에 저장하거나 검색 작업을 수행하는 방식이다.

- 해싱은 직접 접근(DAM) 파일을 구성할 때 사용되며 접근 속도는 빠르나 기억 공간이 많이 요구된다.

- 다른 방식에 비해 검색 속도가 가장 빠르다.

- 삽입, 삭제 작업의 빈도가 많을 때 유리한 방식이다.

- 키-주소 변환 방법이라고도 한다.

 

해시 테이블(Hash Table, 해시표)

- 해시 테이블은 레코드를 한 개 이상 보관할 수 있는 Bucket들로 구성된 기억공간으로 보조기억장치에 구성할 수도 있고 주기억장치에도 구성할 수 있다.

- 버킷(Bucket) : 하나의 주소를 갖는 파일의 한 구역을 의미하며 버킷의 크기는 같은 주소에 포함될 수 있는 레코드 수를 의미한다.

- 슬롯(Slot) : 한 개의 레코드를 저장할 수 있는 공간으로 n개의 슬롯이 모여 하나의 버킷을 형성한다.

- Collision(충돌 현상) : 서로 다른 두 개 이상의 레코드가 같은 주소를 갖는 현상이다.

- Sysnonym : 충돌로 인해 같은 Home Address를 갖는 레코드의 집합이다.

- Overflow : 계산된 Home address의 Bucket 내에 저장할 기억공간이 없는 상태로 Bucket을 구성하는 Slot이 여러 개일 때 Collision은 발생해도 Overflow는 발생하지 않을 수도 있다.

 

해싱 함수(Hashing Function)

1) 제산(Division)법 : 제산법은 레코드 키를 해시표의 크기보다 큰 수 중에서 가장 작은 소수로 나눈 나머지를 홈 주소로 삼는 방식, 즉 h(K) = K mod Q이다.

2) 제곱(Mid-square)법 : 레코드 키 값을 제곱한 후 그 중간 부분의 값을 홈 주소로 삼는 방식이다.

3) 폴딩(Folding)법 : 레코드 키 값을 여러 부분으로 나눈 후 각 부분의 값을 더하거나 XOR(배타적 논리합)한 값을 홈 주소로 삼는 방식이다.

4) 기수(Radix) 변환법 : 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초과한 높은 자릿수는 절단하고 이를 다시 주소 범위에 맞게 조정하는 방법이다.

5) 대수적 코딩(Algebraic Coding)법 : 기 값을 이루고 있는 각 자리의 비트 수를 한 다항식의 계수로 간주하고 이 다항식을 해시표의 크기에 의해 정의된 다항식으로 나누어 얻은 나머지 다항식의 계수를 홈 주소로 삼는 방식이다.

6) 계수 분석법(숫자 분석법) : 계수 분석법은 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 택해서 홈 주소로 삼는 방식이다.

7) 무작위법 : 난수를 발생시켜 나온 값을 홈 주소로 삼는 방식이다.

 

Overflow 해결법

1) 개방 주소법(Open Addressing) : 선형 방법이라고도 하며 Collision이 발생했을 때 순차적으로 그 다음 빈 버킷을 찾아 저장하는 방법이다.

2) 폐쇄 주소법(Close Addressing) : Overflow된 레코드들을 별도의 Overflow 영역에 저장하고 Chain(Pointer)으로 홈 버킷에 연결한다.

반응형
반응형

정규화

- 정규화란 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정이다.

- 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정이라고 할 수 있다.

- 정규형에는 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형이 있으며 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어난다.

- 정규화는 데이터베이스의 논리적 설계 단계에서 수행한다.

- 정규화는 논리적 처리 및 품질에 큰 영향을 미친다.

 

정규화의 목적

- 데이터 구조의 안정성을 최대화한다.

- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다.

- 효과적인 검색 알고리즘을 생성할 수 있다.

- 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지한다.

- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다.

 

Anomaly(이상)의 개념 및 종류

- 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입되는 현상

- 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 다른 값들도 함께 삭제되는 연쇄 삭제 현상

- 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

 

정규화의 원칙

- 정보의 무손실 표현, 즉 하나의 스키마를 다른 스키마로 변환할 때 정보의 손실이 있어서는 안 된다.

- 분리의 원칙, 즉 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리시켜 표현해야 한다.

- 데이터의 중복성이 감소되어야 한다.

 

정규화 과정

1) 1NF : 도메인이 원자값만으로 되어 있는 릴레이션이다.

2) 2NF : 1NF에서 부분적 함수 종속을 제거한다.

3) 3NF : 2NF에서 이행적 함수 종속을 제거한다.

4) BCNF : 결정자이면서 후보키가 아닌 것을 제거한다.

5) 4NF : 다치 종속을 제거한다.

6) 5NF : 조인 종속성을 이용한다.

반응형
반응형

관계대수

- 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다.

- 관계대수는 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과도 릴레이션이다.

- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.

 

순수 관계 연산자

- 종류 : Select, Project, Join, Division

 

일반 집합 연산자

- 종류 : UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CATESIAN PRODUCT(교차곱)

 

관계해석

- 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학 술어 해석에 기반을 두고 관계 데이터베이스를 위해 제안했다.

- 관계해석은 관계 데이터의 연산을 표현하는 방법으로 원하는 정보를 정의할 때는 계산 수식을 사용한다.

- 관계해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.

- 튜플 관계해석과 도메인 관계해석이 있다.

- 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등하며 관계대수로 표현한 식은 관계해석으로 표현할 수 있다.

- 질의어로 표현한다.

반응형

+ Recent posts