본문 바로가기

Programming

Chapter2 - 관계 연산 관계 연산 모든 절차식 관계형 질의 언어는 하나의 릴레이션이나 릴레이션의 쌍에 적용할 수 있는 몇 가지 연산을 제공한다. 이러한 연산은 결과가 항상 하나의 릴레이션으로 표현된다는 훌륭한 속성을 가지고 있다. 이 속성은 모듈식(modular) 방법으로 몇 가지 연산을 하나로 통합할 수 있다. 특히, 관계 질의의 결과 역시 하나의 릴레이션이기 때문에, 관계 연산은 질의의 결과에 적용할 수 있을 뿐만 아니라 릴레이션의 집합에도 적용할 수 있다. 특정 관계 연산은 언어에 따라서 다양한 방법으로 표현되지만 일반적인 체계는 이 장에서 설명하는 방식과 일치한다. 3장에서는 SQL로 연산들을 표현하는 방법을 다룰 것이다. 가장 많이 쓰이는 연산은 하난의 릴레이션에서 어떤 조건을 만족하는 특정 투플을 선택하는 연산이다(.. 더보기
Chapter2 - 관계형 질의어 관계형 질의어 질의어(query language) 는 사용자가 데이터베이스로부터 정보를 요청할 때 사용하는 언어이다. 이들은 대체로 표준 프로그래밍 언어보다 고급 단계의 언어이다. 질의어는 절차식 언어와 비절차식 언어로 구분할 수 있다. 절차식 언어(procedural language)에서는 원하는 결과를 얻기 위해 어떠한 연산을 수행해야 할지 사용자가 시스템에 알려 준다. 비절차식 언어(nonprocedural language)에서는 사용자가 정보를 얻기 위한 구체적 수행 과정을 제공하지 않고, 어떤 정보를 원하는지에 대해서만 기술한다. 실제로 사용되는 질의 언어는 절차식 언어와 비절차식 언어의 요소가 모두 존재한다. 여러 종류의 "순수(pure)" 질의 언어가 존재한다. 관계 대수는 절차식 언어이고,.. 더보기
Chapter2 - 스키마 다이어그램 스키마 다이어그램 데이터베이스 스키마는 주 키와 외래 키 종속성을 가지고 있는데, 이는 스키마 다이어그램(schema diagram)을 이용하여 시각적으로 나타낼 수 있다. 그림 2.8은 그동안 다루었던 대학교의 스키마 다이어그램을 나타낸다. 각 릴레이션은 네모 상자로 나타낼 수 있으며, 해당 릴레이션의 속성은 네모 상자 안에 나열되고 릴레이션의 이름은 네모 상자 위에 쓴다. 주 키로 쓰이는 속성은 선을 그어서 표현한다. 외래 키 종속성은 참조하는 릴레이션의 외래 키 속성으로부터 참조된 릴레이션의 주 키로 이르는 화살표로 나타낸다. 참조 무결성 제약조건은 외래 키에 비해서 스키마 다이어그램에 잘 표현되지 않는다. 개체 - 관계형 다이어그램이라고 부르느 다른 다이어그램에 대해서 논의할 것이다. 개체-관계형.. 더보기
Chapter2 - 키 키 주어진 릴레이션 안에서 투플을 구별하는 방법이 있어야 한다. 이것은 릴레이션의 속성(attribute)으로 표현되어야 한다. 즉, 투플의 속성의 값은 그 투플을 유일하게 구별할 수 있어야 한다. 다르게 표현하면, 한 릴레이션에 있는 두 개의 투플의 모든 속성의 값이 같아서는 안된다. 수퍼 키(superkey)를 간단히 표현하면, 한 릴레이션에서 그 투플을 유일하게 식별할 수 있도록 해주는 하나 혹은 그 이상의 속성들의 집합이다. 예를 들면, instructor 릴레이션의 ID 속성은 하나의 instructor 의 name 속성은 같은 이름을 가진 교수가 있을 수 있기 때문에 수퍼키가 아니다. 릴레이션 r의 스키마에 존재하는 속성들의 집합을 R이라고 하자. R의 부분집합 K가 r의 수퍼키가 되기 위해서.. 더보기
Chapter2 - 데이터베이스 스키마 데이터베이스 스키마 데이터베이스에 대해서 언급할 때, 데이터베이스의 논리적 설계인 데이터베이스 스키마(database schema)와, 어떤 한 순간에 데이터베이스에 저장되어 있는 데이터의 스냅샷인 데이터베이스 인스턴스(database instance)를 잘 구별해야 한다. 릴레이션 개념은 프로그래밍 언어에서 변수의 개념에 해당된다. 마찬가지로 릴레이션 스키마(relation schema)의 개념은 프로그래밍 언어에서의 형정의(type definition)에 해당된다. 일반적으로 릴레이션 스키마는 속성과 그 속성이 가지는 도메인의 명세로 구성된다. 각 속성의 도메인에 대해 정확히 정의하는 것은 SQL을 배울 때까지 일단 보류해 두기로 한다. 릴레이션 인스턴스의 개념은 프로그래밍 언어에서 변수의 값과 비슷.. 더보기
[C++] 백준 2309번 : 일곱 난쟁이 https://www.acmicpc.net/problem/2309 #include #include using namespace std; int main() {cin.tie(NULL);ios::sync_with_stdio(false);int ary[9];int n,sum = 0;for (int i = 0; i > ary[i];sum += ary[i];} int sum2 = sum;for (int i = 0; i < 8; i++){sum2 = sum;sum2 -= ary[i];for (int j = i + 1; j < 9; j++){if ((sum2 - ary[j]) == 100){ary[i] = -1;ary[j] = -1;goto outside;}}}outside: sort(ar.. 더보기
Chapter2 - 관계형 모델 소개 데이터 모델은 데이터, 데이터의 관계, 데이터의 의미, 일관성 제약조건 들을 기술하기 위한 개념적 도구의 모임이다. 관계형 모델은 데이터와 이런 데이터의 관계를 표현하기 위해 테이블의 집합을 사용한다. 테이블은 개념적으로 간단명료하기 때문에 널리 사용되었다. 오늘날 대부분의 데이터베이스 시스템이 관계형 모델에 기반을 두고 있다. 관계형 데이터베이스는 논리적 단계와 뷰 단계에서 데이터를 설명하고, 데이터 저장의 세부적인 하우 단계를 추상화 한다. 개체 관계 모델은 데이터베이스 디자인에서 널리 사용되는 상위 단계의 모델이다. 사용다들이 관계형 데이터베이스에서 데이터를 이용할 수 있도록 하기 위해서는 우선 몇 가지 쟁점을 짚고 넘어가야 한다. 가장 중요한 쟁점은 데이터 무결성(integrity)과 데이터 보호.. 더보기
Chapter1 - 요약 요약 데이터베이스 관리 시스템(DBMS)은 서로 관련이 있는 데이터의 모임과 그 데이터에 접근하기 위한 프로그램의 집합으로 구성된다. 데이터는 특정 조직에 관한 정보를 기술한다. DBMS의 주요 목적은 데이터베이스에 정보를 저장하고 또 이를 검색하기 위한 편리하고도 효율적인 환경을 제공하는 데 있다. 데이터베이스는 오늘날 세계 어디서나 널리 사용되고 있으며 대부분의 사람들이 직접적으로든 간접적으로든 매일 여러 번씩 이를 이용하고 있다. 데이터베이스 시스템은 대규모의 정보를 관리하도록 설계되었다. 데이터의 관리는 정보의 저장을 위한 구조를 정의하는 작업과 정보의 조작을 위한 기법을 제공하는 작업 모두를 포함한다. 또한, 데이터베이스 시스템은 시스템의 고장이나 불법적인 액세스로부터 저장된 정보를 안전하게 지.. 더보기