Computer Science 85

[HUFS/자료구조] #7 정렬과 탐색

정렬(sort) 정렬이란 데이터를 순서대로 재배열하는 것으로 비교가 가능한 모든 속성들이 정렬의 기준이 될 수 있으며 오름차순(ascending order)/내림차순(descending order)이 있다 여러 개의 필드로 구성되는 레코드는 정렬의 대상이며 정렬 키를 기준으로 정렬된다 정렬 알고리즘은 1차적으로 내부 정렬(메인 메모리), 외부 정렬(+외부 기억 장치)로 나뉘며, 단순하지만 비효율적 방법: 삽입, 선택, 버블 정렬 등 복잡하지만 효율적 방법: 퀵, 힘, 병합, 기수 정렬, 팀 등으로 세분화된다 1. 선택 정렬(selection sort) 2. 삽입 정렬(insertion sort) 3. 버블 정렬 +++ 3장의 집합 자료구조를 항상 정렬하도록 수정해보자 탐색과 맵 구조 탐색이란 테이블에서 ..

[HUFS/데이터베이스] #14 데이터베이스 설계

설계 단계는 개념적/논리적/물리적 설계로 나뉘며 개념적 설계 단계에서는 E-R 다이어그램 스키마 설계(정적) 및 트랜잭션 모델링(동적), 논리적 설계 단계에서는 목표 DBMS(관계형 DB)의 스키마 설계 및 트랜잭션 인터페이스 설계, 물리적 설계 단계에서는 목표 DBMS에 맞는 물리적 설계 및 트랜잭션 세부 설계가 진행된다 * 목표 DBMS는 관계형 DB 중에서도 Oracle, DB2, mySQL 등 다양하다! 데이터베이스를 설계할 때 고려사항은 다음과 같다 무결성(integrity): 데이터의 모든 제약조건을 만족시켜야 함 일관성(consistency): 데이터간 응답(트랜잭션의 시작과 끝)이 일치해야 함 회복(recovery): 컴퓨터 셧다운 및 응용프로그램 장애에 대한 복구 이 외에도 불법 접근을 ..

[HUFS/데이터베이스] #13 데이터 모델링과 E-R 모델

데이터 모델링 데이터 모델링은 현실의 대상을 컴퓨터상의 데이터로 매핑(mapping)하는 것이다 개념적 데이터 모델링은 값을 E-R모델로 모델링 하는 것이며, 관계 데이터 모델 릴레이션을 최종적으로 물리적 구조로 변환한다 데이터 모델이란? D(데이터 모델) = S(구조): 릴레이션 및 데이터의 정적 성질 O(연산): 카티션프로덕트, 합집합 등 데이터의 동적 성질이자 조작 기법 C(제약 조건): 관계 데이터 모델의 논리적 제약들 * 최근에는 객체 지향 데이터 모델 및 객체-관계 데이터 모델도 사용한다 개체는 다른 것과 구별되는 객체로 개체 타입(entity type)을 통해 표현된다 ~ 개체 인스턴스들의 집합인 개체 집합으로 개체의 이름과 애트리뷰트들로 정의된다 1. 단순 애트리뷰트: 더 이상 작은 구성 ..

[HUFS/데이터베이스] #12 데이터 종속성과 정규화

데이터의 논리적 표현 스키마 설계 = 데이터베이스의 논리적 설계 애트리뷰트, 엔티티, 관계성 파악 관련된 애트리뷰트들을 릴레이션으로 묶기 (데이터 종속성 고려: 학번 ~ 학생) 데이터 변경(삽입, 삭제, 변경) 시 이상현상 대비 이상(anomaly)현상이란? 삭제 이상: 연쇄 삭제에 의한 정보 손실 삽입 이상: 원하지 않는 정보의 강제 삽입 갱신 이상: 중복 데이터의 일부 갱신으로 정보의 모순성 발생 해결책: 애트리뷰트들 간의 여러 종속관계를 분해하여 각각의 릴레이션으로 표현 하나의 종속성을 하나의 릴레이션으로 -> 정규화 과정 정규형(normal form): 이상 현상이 발생하지 않도록 제약 조건을 만족하는 릴레이션 스키마 변환: 애트리뷰트들과 제약조건(종속성)을 수집한 후 여러 릴레이션으로 분할 외부..

[HUFS/자료구조] #5 큐와 덱

큐(Queue) 후입선출인 스택과 달리 선입선출(FIFO) 구조의 자료구조이다 큐는 일상생활에서 광범위하게 사용된다 ex) 서비스센터 콜, 프린터 인쇄 작업, 실시간 스트리밍 버퍼링, 각종 대기열 등 큐의 구현 앞서 본 직선 형태의 큐가 선형 큐이다 배열을 원형으로 사용하는 원형 큐는 front와 rear가 시계방향으로 돌아간다 클래스 형태 파이썬 리스트로 원형 큐를 구현해보자! 큐를 응용해 너비우선탐색을 해보자 파이썬은 queue모듈로 큐와 스택 클래스를 제공한다! 덱(Deque) 덱(double-ended queue)은 전단과 후단에서 모두 삽입/삭제가 가능하다! 즉, 만들어 둔 원형 큐를 상속받아 일부 기능을 추가해 덱을 구현할 수 있다! 우선순위 큐 선출선입 개념을 가진 큐에 실생활의 우선순위의 ..

[HUFS/데이터베이스] #11 View & Embedded SQL

SQL 뷰(view) 기존 테이블에서 유도되어 만들어지는 가상 테이블(virtual table)로 외부 스키마를 구성한다 물리적 구현X, 카탈로그에 SELECT-FROM-WHERE 형태 SQL문으로만 저장된다 테이블을 들여다보는 창문 역할이기에 뷰를 변경하면 테이블도 변경된다 이렇게 생성된 뷰는 마치 테이블처럼 활용할 수 있으며 기존 테이블로 치환이 가능하다 뷰의 제거는 DROP VIEW를 하면 되는데,, 다만 기본키를 포함하는 경우에도 이론상 변경이 가능할 뿐, 다음과 같은 경우에는 불가능 상수나 연산자, 함수가 포함된 산술 식으로 뷰의 열이 구성된 경우 DINSTINCT나 GROUP BY, HAVING이 사용된 경우 두 개 이상의 테이블이 관련된 경우 변경할 수 없는 뷰를 기초로 정의된 경우 뷰의 장..

[HUFS/데이터베이스] #10 SQL 조작문

SQLite는 한 문장이 하나의 Transaction(작업 단위)로 처리됨 (begin -> commit or rollback) 데이터 검색 SELECT - FROM - WHERE 을 통해 가장 기초적인 검색이 가능하다 SQL의 테이블과 relation의 차이? 추상적인 릴레이션은 SQL의 테이블로 구체화되어 보여지는데,, 한 테이블 내에 똑같은 레코드(행) 중복이 가능하고 따라서 기본키가 반드시 필요하진 않다 ~ 이론상 SQL의 테이블은 튜플의 집합이 아니라 중복을 허용하는 다중 집합(multiset)인 셈이다 테이블의 SELECT 결과가 또 다시 테이블이 되는 폐쇄 시스템(closed system)이다! COUNT: 해당 테이블의 중복을 허용한 튜플의 수를 반환한다 (distinct 추가 가능) AV..