2024/06/15 13

[DataBase] 04. Intermediate SQL

Intermediate SQLSQL에 대한 지식을 확장복잡한 작업을 수행하는 강력한 쿼리를 가능하게 함Joined RelationsJoin 작업은 두 개의 relation을 가져와 결과로 또 다른 relation을 반환합니다.Join 작업은 카티션 곱으로, 두 relation의 튜플이 일치하는지 확인합니다 (일부 조건 하에).두 테이블의 공통 값을 사용하여 두 테이블의 열을 결합하는 데 사용됩니다.SQL 쿼리에서 테이블을 결합하는 데 Join 키워드를 사용합니다.Join 결과에 존재하는 attribute을 지정합니다.세 가지 유형의 Join:Natural joinInner joinOuter joinNatural Join in SQLNatural join은 동일한 attribute에 대해 동일한 값을 갖는..

DataBase 2024.06.15

[DataBase] 03. Introduction to SQL(2)

SQL에서의 집합 연산 (SET Operations in SQL)SQL은 테이블 데이터에 대해 수행될 수 있는 집합 연산을 지원합니다.이는 테이블에 저장된 데이터로부터 특별한 조건 하에 의미 있는 결과를 얻기 위해 사용됩니다.UNION (합집합)UNION ALLINTERSECT (교집합)INTERSECT ALLEXCEPT (차집합)EXCEPT ALL집합 연산 UNION (합집합), INTERSECT (교집합), EXCEPT (차집합)위의 각 연산은 자동으로 중복을 제거합니다.모든 중복을 유지하려면 다음을 사용하십시오:UNION ALL (모든 합집합)INTERSECT ALL (모든 교집합)EXCEPT ALL (모든 차집합)Union 연산 (Union operation)UNION은 두 개 이상의 SELECT..

DataBase 2024.06.15

[DataBase] 03. Introduction to SQL(1)

이 부분은 직접  테이블을 만들고 SQL 언어를 사용해보면서 익히는 것이 중요해요!SQL PartsDDL (데이터 정의 언어, Data Definition Language)DML (데이터 조작 언어, Data Manipulation Language)DCL (데이터 제어 언어, Data Control Language)TCL (트랜잭션 제어 언어, Transaction Control Language) SQL PartsDDLData definition language (DDL)은 데이터 구조, 특히 데이터베이스 스키마를 정의하기 위한 컴퓨터 프로그래밍 언어와 유사한 구문입니다.DDL 문은 데이터베이스 객체(테이블, 인덱스, 사용자 등)를 생성, 수정, 제거합니다.일반적인 DDL 문은 CREATE, ALTER,..

DataBase 2024.06.15

[DataBase] 02. Introduction to Relational Model

관계형 모델 (Relational Model)관계형 모델은 데이터베이스 관리에서 데이터 구조와 언어를 사용하여 데이터를 관리하는 접근 방식입니다.모든 데이터는 튜플(tuple) 형태로 표현되며, relation으로 그룹화됩니다.관계형 모델로 구성된 데이터베이스를 관계형 데이터베이스(relational database)라고 합니다.관계형 모델의 목적은 데이터를 명시하고 쿼리를 지정하는 선언적 방법을 제공하는 것입니다.사용자는 데이터베이스가 포함하는 정보와 원하는 정보를 직접 명시하며, 데이터베이스 관리 시스템 소프트웨어가 데이터를 저장하고 쿼리에 응답하기 위한 데이터 구조를 설명하는 과정을 담당합니다.modern DB(mySQL, ...)에서 사용되고 있다.관계형 데이터 모델 (Relational Data..

DataBase 2024.06.15

[DataBase] 01. Introduction

Database Management System (DBMS)데이터베이스 관리 시스템(DBMS)은 데이터베이스를 생성하고 관리하는 시스템 소프트웨어입니다.DBMS는 사용자와 프로그래머에게 데이터를 생성, 검색, 업데이트 및 관리하는 체계적인 방법을 제공합니다.DBMS는 최종 사용자가 데이터베이스에서 데이터를 생성, 읽기, 업데이트 및 삭제(Create, Read, Update, Delete, 줄여서 CRUD라고 함)할 수 있게 합니다.DBMS는 본질적으로 데이터베이스와 최종 사용자 또는 응용 프로그램 간의 인터페이스 역할을 하여 데이터가 일관되게 조직되고 쉽게 접근할 수 있도록 보장합니다.사용자 데이터베이스를 생성, 유지 관리 및 접근을 제공하는 소프트웨어 시스템입니다.DBMS는 OS가 hardware r..

DataBase 2024.06.15

[자료구조] 트리 - 분리 집합

분리 집합(Disjoint Set)집합의 정의 : 특정 조건에 맞는 원소의 모임분리 집합(Disjoint Set) : 서로 공통된 원소를 갖지 않는, 즉 교집합을 갖지 않는 복수의 집합분리 집합의 개념은 2개 이상의 집합을 일컬을 때만 사용할 수 있음분리 집합은 교집합을 허락하지 않기 때문에 소속 관계가 분명해야 하는 데이터를 다룰 때 아주 유용함ex) 도서 판매 관리 프로그램에서 일반 도서 집합과 베스트셀러 집합을 만들고, 베스트셀러들의 BookPrice가 베스트셀러 집합의 원소가 되도록 함이처럼 분리 집합은 원소 또는 개체가 '어느 집합에 소속되어 있는가?'라는 정보를 바탕으로 무언가를 하는 알고리즘에 응용할 수 있음분리 집합 표현 보통의 트리와 이진 트리는 부모가 자식을 가리키는 포인터를 갖고 있음..

[자료구조] 수식 트리

수식 트리(Expression Tree)수식 이진 트리(Expression Binary Tree)라고 부르기도 함일반적으로 다음 두가지 규칙을 가짐피연산자는 잎 노드이다.연산자는 뿌리 노드 또는 가지 노드이다.ex) 1 * 2 + (7 - 8)의 경우 피연산자 1, 2, 7, 8은 모두 잎 노드, 연산자들은 모두 뿌리 노드 or 가지 노드임뿌리 노드와 가지 노드 모두 피연산자를 양쪽 자식으로 가짐여기서 피연산자는 수(Number)일 수도, 또 다른 식(Expressioin)일 수도 있음ex) + 연산자는 하위 트리가 표현하는 수식 (1 * 2)와 (7 - 8)을 피연산자로 가지고 있음수식 트리는 가장 아래에 있는 하위 수식 트리(잎 노드)로 부터 수 또는 계산 결과값을 병합해 올라가는 과정을 반복하며 계..

[자료구조] 이진 트리

이진 트리(Binary Tree)하나의 노드가 자식 노드를 2개까지만 가질 수 있는 트리예시수식을 트리 형태로 표현하는 계산하는 수식 이진 트리(Expression Binary Tree)아주 빠른 데이터 검색을 가능하게 하는 이진 탐색 트리(Binary Search Tree)이진 트리의 종류노드의 최대 차수가 2임모든 이진 트리의 자식 노드 수는 0, 1, 2 중 하나포화 이진 트리(Full Binary Tree): 잎 노드를 제외한 모든 노드가 자식을 둘 씩 가진 이진트리잎 노드들이 모두 같은 깊이에 위치한다는 특징을 가짐완전 이진 트리(Complete Binary Tree): 잎 노드들이 트리 왼쪽부터 차곡차곡 채워져 있는 트리포화 이진 트리로 진화하기 전 단계임트리의 노드를 가능한 완전한 모습으로 ..

[자료구조] 트리 ADT

트리 ADT트리(Tree)란?나무를 닮은 자료구조HTML이나 XML 문서를 다룰 때 사용하는 DOM, 운영체의 파일 시스템 등이 트리 구조로 이루어져 있음트리의 구성요소트리는 뿌리, 가지, 잎 세 가지 요소로 이루어져 있다.세 가지 요소 모두 똑같은 노드이지만 어디에 위치하는지에 따라 불리는 이름이 달라진다뿌리 : 트리 자료구조의 가장 위에 있는 노드를 가리킴가지 : 뿌리와 잎 사이에 있는 모든 노드를 말함잎 노드(단말 노드) : 가지의 끝에 있는 마지막 노드를 잎 노드(단말 노드)라고 한다.부모, 자식 형제 관계가 존재한다. 위 그림을 봐보자노드 B, C, D를 보면 B에서 C와 D가 뻗어 나오는데 이때 B는 C와 D의 부모(Parent)이고, C와 D는 B의 자식(Children)이다.그리고 한 부모..

[C++ STL] 1.8 컨테이너 어댑터(Container Adaptor)

컨테이너 어뎁터(container adaptor)이미 존재하는 컨테이너를 기반으로 만들어진 컨테이너에 대해 알아본다각 자료구조에 대한 기본적인 내용은 이미 알고있다고 가정하고 글을 작성합니다!래퍼를 제공하는 이유코드에 의미를 부여의도하지 않는 함수를 실수로 사용하지 못하도록 제한특별한 인터페이스를 새롭게 제공std::stackLIFO 구조를 사용하기 때문에 스택은 컨테이너의 한쪽 끝에서만 데이터를 삽입/삭제한다벡터나 덱은 이러한 기능을 기본적으로 지원하기 때문에 스택을 구현하기 위한 용도로 사용할 수 있다push_front()로 맨 앞 원소에 접근할 수 있기 때문에 벡터나 덱을 직접 사용하기에는 문제가 있다이와 달리 std::stack을 사용하여 작성된 소스 코드는 어떤 작업을 하고 있는지 직관적으로 알..