-
Join, View, Transaction....
Join Expression앞에서는 정보들을 결합할 때 Cartesian Product를 사용했긴 했는데, 사실 Join을 이용하는 방법이 있다. 참고로 join이 튀어나온 이유는 딱 한가지, Cartesian Product 만으로는 다루기 매우 지랄맞은 경우가 있기 때문이다. ▶ Natural Join쨋든 정보의 결합에 join이 사용되게 되며, 이에 대한 대표적인 경우로 natural join이 있겠다. natural join은 두 릴레이션 사이의 Cartesian Product와는 다르게, 양쪽 공통 attribute의 value가 같은 튜플들 만을 뱉어낸다. select name, course_idfrom student, takeswhere student.ID = takes.ID;select na..
-
기초적인 SQL 문법 (DML)
SQL 언어는 크게 세가지로 나눌 수 있다.Data-definition language (DDL) : Schema, Relation등에 대해 관리한다.Data-manipulation language (DML) : select, insert, delete from....Data-control lagnuage (DCL) : save point, rollback, commit.....그리고 그중에서 정말 죽어라 줄창 쓸 DML 분법에 대해서 좀 알아보도록 하자. Queries on Multiple Relationsselect namefrom friendswhere dept_name = 'medical' and salary > 70000;Select-From-Where은 단일 릴레이션에 대한 쿼리에서는 사실..
-
Sorting in Linear Time
Merge/Heap/Quick Sort같이 Comparsion을 이용한 Sorting의 경우 최저 하한선이 O(NLogN)가 된다. (Decision Tree를 통해 시각화 하면 -> n개 element에 대해서 Decision Tree의 Height 만큼인 LogN번 Comparision 해야 되기 때문.) 하지만 Counting/radix/bucket Sort의 경우 저러한 하한선을 깨고 (경우에 따라서) O(N) 안에 정렬을 마무리 할 수 있다! 이는 정수의 범위 제한/분포 같은 추가 정보를 이용한 것이다. Counting Sort Counting Sort는 n개의 요소들이 0 to k의 정수라고 가정할 때 작동한다. 그럼 한번씩 순회하면서 0 to k의 element가 각각 몇개인지 세고, 그 ..
-
QuickSort
Quick Sort는 Merge Sort와 비슷하게, 아래와 같이 분할 정복을 사용한다.Divide : 배열 A[p..r]을 A[p..q-1]과 A[q+1..r]로 나눈다.Conquer : 재귀를 이용해서 배열A[p..r]과 A[q+1..r]에 대해서 Quick Sort를 시행한다.Combine : 서브 배열들이 이미 정렬된 관계로 딱히 합칠 필요는 없다. 그리고 이는 아래와 같은 의사 코드로 표현해 낼 수 있다.// Let A -> matrix and p,r -> indexPartition(A, p, r) x = A[r] i = p-1 for j = p to r-1 if A[j] 대충 하나를 Pivot으로 잡아서 서브어레이를 만들어 내고, 정렬을 때린 다음 다시 서브 어레이를 돌린다고..
-
Relational Algebra
The relational algebra consists of a set of operations that take one or two relations as input and produce a new relation as their result."인풋으로 1 or 2개의 관계를 가지고 새 관계를 생성하는 것"을 관계 대수라고 한다.사실 DB를 직접적으로 조회/제어함에 있어서 Relational Algebra를 쓸 수 있는건 아니고, 단지 SQL 쿼리를 던지는 데 있어서 Relational Algebra가 폭넓게 사용되는 것 뿐이다. 쨋든 여러가지 Operation과 Relational Algebra에 대해 알아보자. Select Operationselect operation은 말 그대로 주어진 술..
-
Introduction to DB...
데이터베이스 시스템은 큰 용량의 정보를 안전하게 담는데 있어서 적합하게 설계되어 있고, 이러한 데이터베이스를 관리해 주는 프로그램을 Database-management System(DBMS)라고 한다. 대표적인 DB로는 Oracle, MySQL, Porstge, Mongo등이 있겠다. 참고로 Supabase나 Firebase는 BaaS의 축에 들어감으로 DB라 하기에는 조금 거시기한 감이 있다. 쨋든 데이터베이스 시스템은 고가치/고용량/다수에 의해 접근 가능한 정보들을 저장 및 관리하는데 사용된다. 대게는 (상대적으로 작은 데이터를 불러오고 업데이트 하는) 온라인 처리를 하거나, 데이터 분석에 있어서 사용된다. 여기서 문득 드는 생각. 그냥 데이터를 JSON이나 CSV같은 파일에 때려박으면 안되는 것인..
-
[Linux] Permission and Ownership
리눅스 시스템의 모든 파일과 디렉터리에는, Permission과 Ownership이 부여된다. 이때 파일 속성은 ls -l을 사용하여 확인 할 수 있다.- rw-rw-r-- 1 rainyk users 22665 Feb/6/2026 coludflare~~의 경우, 처음 글자는 파일 유형 -> rwxrwxrwx (read/write/execution) 권한 여부 -> 물리적 파일 -> 소유자명 -> 그룹명 -> 크기(바이트) -> 마지막 변경 시간 -> 파일 명 과 같이 해석할 수 있다. 이때 퍼일의 허가권이나 소유권을 설정하려면, chmod/chown/chgrp/umask등을 사용할 수 있겠다. 세부적으로 들어가자면.... 1) 소유권과 관련 명령어소유권은 임의의 파일 또는 디렉터리에 대해 사용자와 그룹..
-
전기산업기사 취득 후기
필자는 26년 1회차 필기시험에 응시했고, 26년 2회차 실기시험에 응시했다.솔직히 필기는 그러려니 하는데, 실기 공부할때는 힘도 들고 왜 해야하는지도 의문이 들어서(단순히 태양광 사업으로 인생을 날로 먹겠다는 망상에서 스타트한 시험이었다.) 대충 봤는데.... 물시험으로 나와서 붙었다.정작 다음에 뭘 해야 할지 모르겠다.국가자격증 시험이 늘 그렇지만 특정 점수를 넘기는 것 자체는 다회 시도하거나 공략만 하면 크게 문제될 소지는 없어 보인다.