전체 글 669

[DB] SQL3 (Oracle)

중첩질의(nested query)에 대해서 알아보자. 중첩질의는 관계해석과 연관이 있는 SQL문이다. 관계해석은 명제를 통해서 테이블을 표현한다. 그래서 명제의 변수가 되는 튜플의 범위를 서술해주어야한다. 중첩질의는 SQL문을 중첩시켜, 출력되는 레코드(튜플)의 범위를 지정하는데 주로 사용되므로 관계해석을 기반으로 한 SQL문이다. IN, NOT IN SELECT title FROM course WHERE course_id IN ( SELECT distinct course_id FROM class WHERE classroom = '301호' ); IN 뒤에 나오는 SQL문을 부질의(subquery)라고 한다. IN 앞에 나오는 SQL문을 외부질의(Outer query)라고 한다. 외부 질의는 부질의에서 ..

DB/DB Basic 2021.06.25

[DB] SQL2 (Oracle)

SQL은 통계에서 자주 사용되는 연산을 함수로 제공한다. 이를 집계함수(aggregate function)이라 한다. 집계함수에는 count, sum, avg, max, min이 있다. 집계함수의 X는 필드이다. 테이블은 필드로 테이블을 정의하고 레코드로 테이블을 생성한다. 집계함수의 X는 레코드로 들어간 필드의 값들을 의미한다. SELECT count(distinct dept_id) FROM student; 학생 테이블에 저장된 학과 ID가 포함된 레코드의 개수를 세는 SQL문이다. distinct를 통해, 중복되는 학과 ID를 제거했다. 집계되는 레코드는 WHERE을 통해서 조건을 걸어줄수도 있다. SELECT count(*) FROM student s , department d WHERE s.dep..

DB/DB Basic 2021.06.25

[DB] SQL1 (Oracle)

테이블은 두 가지 집합을 포함한 그릇과도 같다. 두 가지 집합이 바로 필드와 레코드이다. 테이블을 필드 중심으로 설명하면 이는 테이블 스키마가 된다. 테이블을 레코드 중심으로 설명하면 테이블 인스턴스가 된다. 테이블을 생성하려면 먼저 필드를 정의하여 테이블 스키마를 생성한 후, 레코드를 추가하여 테이블 인스턴스를 만들어야 한다. 그러므로 테이블 스키마 생성과 테이블 인스턴스 생성의 SQL문은 다르다. SQL의 종류 DDL(Data Definition Language)은 데이터 정의 언어라고 부르며, 이는 테이블 스키마와 관련된 SQL이다. CREATE 테이블 생성, ALTER 테이블 수정, DROP 테이블 삭제 DML(Data Manipulation Language)은 데이터 조작 언어로, 이는 테이블 ..

DB/DB Basic 2021.06.25

[DB] Oracle의 구조

지난 포스팅까지는 관계대수, 관계해석에 대해서 알아보았다. 관계대수와 관계해석은 사용자가 테이블을 얻는 과정을 '수학적으로' 표현한 관계질의어다. 그렇다면 관계대수와 관계해석이 어떻게 실제 환경에서 구현되는지 알아보자. DBMS로는 Oracle을 선택하였다. Oracle은 표준질의어는 SQL의 확장판인 PL/SQL이다. SQL이 가지는 편리함에 더하여 제어문과 반복문 같은 구조적 프로그래밍도 가능하다. 관계대수와 관계해석은 실제 프로그램 환경인 Oracle에서 PL/SQL로 구현된다. 그럼 Oracle의 구조부터 간단히 살펴보자. 테이블스페이스(Tablespace) DBMS가 Disk와 대화하며 데이터의 입출력을 담당할 것 같지만 사실 그렇지 않다. 데이터의 입출력이 실제로 이루어지는 곳은 OS의 파일시..

DB/DB Basic 2021.06.24

[DB] 관계해석(Relational Calculus)

테이블이란 레코드로 이루어진 집합(SET)이다. 테이블에는 집합의 조건에 부합하는 레코드들만 저장될 수 있다. 집합의 표현법에는 여러가지가 있다. 원소나열법, 벤다이어그램 그리고 조건제시법. Oracle DBMS나 MYSQL DBMS는 원소나열법처럼 테이블의 레코드가 쭉 나열해서 보여준다. 관계질의어를 통해 테이블을 표현할 수도 있다. 관계질의어는 관계대수와 관계해석이 있다. 관계대수는 이전 포스팅에서 다루었다. 관계해석 (Relational Calculus) 관계해석은 조건제시법을 사용하여 테이블을 표현한다. 여기서 명제와 조건의 개념을 구분해야 한다. 명제는 참과 거짓이 구분되는 문장이다. 그리고 조건은 항상 참인 문장이다. 그러므로 명제가 참이 되면 조건이 된다. 관계해석은 명제를 참으로 만드는 레..

DB/DB Basic 2021.06.24

[DB] 관계형 데이터 모델

DBMS는 한 가지 데이터 모델을 선택해야 한다. 데이터 모델이란? 현실세계를 단순화하고 정형화된 형태로 표현하는 방식으로 실제 데이터의 특성을 살리면서 목적에 맞는 정보만 단순화하여 표현하는 방식이다. DBMS가 가장 많이 선택하고 있는 데이터 모델 방식은 관계형 데이터 모델(relational data model)이다. 관계형데이터모델(Relational Data Model) 관계형 데이터 모델이란 테이블 형식을 이용하여 데이터를 정의한 모델를 의미한다. 테이블은 릴레이션이라고도 부른다. 릴레이션(relation)은 수학적인 의미로 보면 두 개 이상의 집합(속성)을 구성하는 원소들의 순서쌍(튜플)으로 이루어진 집합을 의미한다. 예를들어, 이름 집합과 주소 집합이 하나의 릴레이션을 구성한다. 그리고 이..

DB/DB Basic 2021.06.24

[DB] 파일시스템

DBMS는 Disk에 읽고 쓸수 있는 기능이 있다. DBMS가 Disk에 접근할 수 있는 이유는 OS가 중개하기 때문이다. Disk의 읽기/쓰기 기능은 OS의 파일시스템이 담당한다. DBMS는 그저 OS에게 Read/Write 서비스를 요청하는 것 뿐, 실질적인 Read/Write는 OS가 담당한다. 그렇다면 왜 '파일'시스템일까? Disk는 '자료(Data)'가 저장되는 공간이다. 그리고 그 자료는 '파일' 단위로 저장된다. 우리는 하드디스크에 데이터를 저장할 때, 데이터만 저장하지 않는다. '파일'단위로 저장한다. 한글파일 , PPT파일, 메모장 파일, 게임파일처럼 파일단위로 디스크에 저장된다. 그러므로 데이터를 수정할 일이 있으면 파일 전체를 메모리에 올려야한다. 한글 파일에 자기소개서를 저장해놓았..

DB/DB Basic 2021.06.24

[DB] 데이터베이스의 정의

데이터베이스를 이해하려면 자료(Data) 정보(Information) 지식(Knowledge) 에 대해서 알아야 한다. 간단히 말하면, 현실세계에서 표본을 추출한 것이 자료(Data)이고 자료를 처리하면 정보(Information)가 된다. 그리고 정보를 토대로 추론을 하면 지식(Knowledge)이 된다. 자료란? 실세계, 실체, 현상, 사건, 아이디어 같은 현실세계에서 가치가 있다고 판단되어 실체를 묘사하여 추출한 원소적인 단위값을 의미한다. 그러므로 자료란 아직 가공되지 않은 일차적인 표현이다. 데이터베이스에 저장되는 데이터는 영구적(persistent) 데이터이다. 반대로 RAM이나 플립플롭처럼 휘발성이 있는 기억장치에 저장되는 데이터는 일시적(transient) 데이터이다. 정보란? 데이터로부터..

DB/DB Basic 2021.06.24

HDLC 프로토콜( High-Level Data Link Control )

HDLC 프로토콜은 OSI 2계층인 데이터 링크 계층의 표준 프로토콜이라 할 수 있다. 현재는 잘 사용되고 있지 않다. 그 이유는 주소(Address) 부분이 8bit 밖에 되지 않아 256가지의 호스트만 접근가능하기 때문이다. 그러나 HDLC 프로토콜은 데이터 링크 계층의 표준처럼 인식되고 있기에 살펴볼 가치가 있다. 기본용어 호스트 : 데이터 통신을 위해 연결된 컴퓨터 주국(Primary Station) : 명령(Command)을 전송하는 호스트 종국(Secondary Station) : 명령에 응답(Response)하는 호스트 혼합국(Combined Station) : 주국과 종국의 기능을 모두 가진 호스트 명령(Command) : 주국에서 전송되는 메시지 응답(Response) : 종국에서의 회신..

CS/NETWORK 2021.06.24

프레임 구조

프레임의 구조를 살펴보자. Preamble (프리앰블) (7byte) 프레임의 가장 첫 번째 부분이다. Preamble은 '서두, 전문'이라는 의미를 갖는다. 7byte 크기로 송신호스트와 수신호스트 간의 클록 동기를 맞출 시간을 확보하는 역할을 한다. 송신호스트는 프레임을 전송한 후 일정시간 동안 긍정응답이 돌아오지 않으면 해당 프레임을 재전송하는 타임 아웃기능을 갖고 있다. 개인적인 생각에는 타임아웃 기능을 위한 클록동기 시간을 확보하기 위해 Preamble이 있는게 아닐까 싶다. Start Dlimiter (시간 구분자) (1byte) 프레임 시작을 의미한다. 프리앰블은 각 바이트는 10101010 비트 패턴을 갖는다. Start Dlimiter는 10101011 비트열이므로 프리앰블과 구분된다. ..

CS/NETWORK 2021.06.24