CS 88

[DB] 무결성 (Integrity)이란?

무결성이란? 20대 초중반의 남자들은 자유로운 생활을 살다가 군대를 가게 된다. 군대라는 집단에 속해진 남자들은 그동안의 생활을 뒤로하고 군인으로써 지켜야 할 규칙과 규약 아래 놓이게 된다. 로마에 가면 로마법을 따르듯, 어느 집단에 속해진 구성원은 그 집단의 법을 지키며 살아가야 집단의 구성원으로써 인정받는다. 그렇지 않으면 감옥에 들어가 집단에서 제외된다. 데이터 베이스도 이와 같다. 데이터가 데이터베이스에 들어와 데이터로써 인정받으려면 데이터베이스가 제공하는 제약조건을 지켜야한다. 제약조건을 지킨 데이터를 무결성이 있다고 말한다. 하지만 제약조건을 위반하게 되면 해당 데이터는 데이터로 인정받지 못한다. 실생활의 데이터를 모순없이 저장하고 여러 사람이 동시에 사용할 수 있는 데이터베이스를 만들려면 D..

CS/DB 2021.06.25

[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)라고 한다. 외부 질의는 부질의에서 ..

CS/DB 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..

CS/DB 2021.06.25

[DB] SQL1 (Oracle)

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

CS/DB 2021.06.25

[DB] Oracle의 구조

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

CS/DB 2021.06.24

[DB] 관계해석(Relational Calculus)

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

CS/DB 2021.06.24

[DB] 관계형 데이터 모델

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

CS/DB 2021.06.24

[DB] 파일시스템

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

CS/DB 2021.06.24

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

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

CS/DB 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