본문 바로가기

반응형

분류 전체보기

(122)
[DB이론] 관계형 모델 관계형 모델관계형 모델관계형 모델의 기본 요소는 릴레이션(테이블) 이다.attribute는 sql에서 말하는 열(colum), tuple은 sql에서 말하는 행(row) 이다.릴레이션은 튜플의 집합이다.관계형 모델과 SQL합집합릴레이션 끼리의 덧셈을 말한다. - SQL에서 UNION차집합릴레이션끼리의 뺄셈 - SQL에서 EXCEPT교집합릴레이션끼리으 공통집합 - SQL에서 INTERSECT곱집합릴레이션끼리 대진표를 조합하는 연산으로 SQL에서는 FROM 구에 복수으 티에비르을 지정한 경우 곱집합으로 계산 된다. - CROSS JOIN이라고 한다.선택튜플의 추출 혹은 제한 -> SQL 에서 SELECT 문투영속성의 추출 SELECT 구에 결과로 반환할 열을 지정하는 것SELECT a FROM A - a 속..
[DB이론] Index IndexIndex ?: RDBMS에서 검색 속도를 높이기 위해서 사용되는 기술: Table의 컬럼을 따로 파일로 저장하여서, 검색시 해당 Table의 레코드를 full scan하는 것이 아니라, 저장한 Index 파일을 검색하여서 검색 속도를 빠르게한다.: Array의 index를 알 때, O(1) 의 시간복잡도로 접근할 수 있는 개념과 비슷하다.일반적으로 테이블에 Index를 작성하면 테이블 데이터와 별개로 Index용 데이터가 저장장치에 만들어진다. 이때 이진트리 데이터 구조로 작성될 수 있다.Index 작성 할 때, SQL Server나 MySQL에서 Index는 테이블 내의 객체가 되고, 테이블 내에 이름이 중복되지 않도록 지정해서 관리해야한다. Index 작성과 삭제Inde 작성CREATE I..
[DB이론] Transaction TransactionTranscation ?: 데이터베이스 내에서 한꺼번에 수행되어야할 일련의 연산: 전부 실행되거나, 혹은 전부 실행이 안되거나여러개의 프로세스를 마치 하나처럼 동작하는 방식==단일화된 작업 -> 성공 or 실패 만 존재 한다.Transaction의 모든 연산은 반드시 한꺼번에 완료가 되어야 하며, 그렇지 않은 경우에는 한꺼번에 취소되어야 하는 원자성을 가지고 있다.정상적으로 완료가 되어서, 성공적으로 종료 -> COMMIT작업결과가 데이터베이스에 반영취소 혹은 비정상 적인 종료 -> ROLLBACK작업결과가 모두 취소되고 데이터베이스에 영향 없음 Django 에서 Transaction 처리 (출처) settings.py 에서 ATOMIC_REQUESTS = True 설정을 해준다. 데..
[Data Structure] Tree - Linked List로 표현하기 Tree를 Linked List로 표현하기 리스트로 트리를 표현한 방법과 다르게 위의 방법은 Node와 Reference를 이용한다. -> 즉 Linked List로 표현중요한 것은 Left, right는 다른 Binary Tree instance를 참조한다는 점이다.예를들면, 우리가 새로운 Left Child를 트리에 추가 할 때, 우리는 또다른 BinaryTree instance를 생성하고, root의 self.leftchild를 새 tree의 Reference로 지정한다.리스트로 tree를 만들었을 때와 마찬가지로 Left Child를 추가할 때, Left Child가 없으면 그냥 root에 node를 넣으면 되고 만약 Left Child가 있다면 원래 Node를 한 레벨 낮추고 새 Node ins..
[Data Structure] Tree - 기본 정의 및 용어 && Python 리스트로 트리 표현하기 Tree목적tree 자료구조가 무엇인지 이해하고, 어떻게 사용되는지 이해한다.어떻게 tree가 map 자료구조로 실행되는지 본다.tree를 리스트를 통해 실행한다.클래스와 레퍼런스를 이용해서 tree르 실행하여본다.재귀적 자료 구조로서 tree를 실행한다.힙을 이용하여서, Priority Queue로 실행하여 본다. 특징tree 자료구조는 root와 그것의 leaves를 가지고 있다.tree의 특성계층화한 node의 children은 또 다른 node의 children과 독립적이다.각각의 node는 unique 하다.subtree를 더 아래 level의 계층에 영향을 주지 않고, tree의 다른 position으로 옮길 수 있다. 용어Nodetree의 메인 파트이다. 추가적인 정보를 가지는데, paylo..
[Data Structure] Hashing - 이론 HahsingSearch 알고리즘과 관련해서, 정렬이 되어있을 때, binary Search로 O(logn)의 성능을 낼 수 있다.이에 반해서, Hashing은 최대 O(1)의 성능을 낼 수 있다.Hash table은 Slot으로 이루어져있는데, 각각Slot의 이름은 숫자로 되어있고, 0부터 시작한다.이를 통해서 쉽게 item을 찾을 수 있다.item과slot을 맵핑하는 방법으로 Hash Function을 이용한다. Hash Function은 Slot name의 범위내의 int 값을 리턴한다. 위와같이 Hash Table이 만들어 지면, search는 O(1)에 할 수 있다.그러나, Hash Function의 결과 값이 같으면 한 Slot에 여러 Item이 들어 가게 되는데 이것을 Collision 이라..
[Data Structure] Deque - 이론 && ADT Deque양쪽 끝에서(rear, front) 삽입, 삭제를 모두 수행할 수 있다.Deque가 Stack과 Queue의 특징을 모두 취할 수 있어도 LIFO, FIFO 순서를 정하도록 요구하지는 않는다.전적으로 Deque를 어떻게 사용할지는 사용자에 선택에 달려 있다. class Deque: def __init__(self): ''' 데큐를 리스트로 초기화한다. ''' self.deque = [] ​ def isEmpty(self): ''' 데큐의 길이가 0인지를 확인한다. ''' return len(self.deque) == 0 ​ def addFront(self, item): ''' 데큐의 Front에 item을 추가한다. ''' self.deque.append(item) ​ def addRear(se..
[Data Structure] Queue - 이론 && ADT QueueQueue는 rear로 item이 추가되고, front로 item이 삭제된다.이러한 특징을 First In, First Out - FIFO라고 한다.중간에 점프를 뛸 수 없고 front로 갈 때까지 순서대로 기다려야만 한다.Queue의 예로 프린터에서 프린트 하는 것도 있고OS에서 스케쥴링, 키보드 타이핑치는것 등등도 Queue의 예로 볼 수 있다. class Queue: def __init__(self): ''' 리스트를 이용해서 큐를 초기화한다. ''' self.queue = [] ​ def isEmpty(self): ''' 큐의 길이가 0인지를 확인한다. ''' return len(self.queue) == 0 ​ def enqueue(self, item): ''' 큐의 rear에 item..

반응형