학교 수업 13

[DB시스템 구현] SQL 검색 ②

Like 연산자 현실에서 데이터를 검색할 때, 한 조건에 맞는 데이터를 검색하고 싶을 때가 있습니다. 예를 들어, 주소지가 서울인 학생을 찾는다거나, 주민등록번호를 기준으로 성별을 찾는다거나 하는 경우가 이에 해당하죠. 이럴 때, SQL에서는 '=' 연산자 대신 like연산자를 이용합니다. 우선, like연산자에 사용가능한 문자열 패턴의 종류에 대해 알아보겠습니다. ① _ : 임의의 한 개의 문자를 말합니다. ② % : 임의의 문자 여러개를 의미합니다. 사용 예를 들어보겠습니다. '%서울%' : '서울'이라는 단어가 포함된 문자열 '서울%' : 서울로 시작하는 문자열 '_ _ _' : 3 개의 문자로 구성된 문자열 '_ _ _%' : 최소 세 개로 구성된 문자열 이런 식으로 사용됩니다. 예시문제 ) 김씨..

[DB 시스템 구현]SQL 레코드 검색 ①

SQL에서 가장 많이 사용하고, 가장 복잡하며 가장 어려운 레코드 검색에 대해 알아보겠습니다. 기본 구조 레코드 검색에서의 기본 구조는 다음과 같습니다. select 필드리스트 from 테이블리스트 where 조건 from 절 안에 테이블의 리스트가 들어가야 한다는 점을 주의해서 보시기 바랍니다. 추가적으로 이 select문의 출력값은 테이블입니다. 즉, from절 안에 또 다른 select문이 들어갈 수 있다는 점을 의미합니다. 지금은 이해가 안될수도 있습니다. 후에 계속 올리는 포스팅을 읽어보시다 보면 이해가 되실겁니다. 기본적인 레코드 검색 예시 코드를 한 번 보겠습니다. 예시는 학생들의 이름과 학번을 출력하는 코드입니다. select name, dept_name from department, st..

[DB 시스템 구현] 틀리기 쉬운 SQL문제 정리하기

이번 포스팅에선, 많은 사람들이 SQL 문제를 풀면서 틀리는 혹은 헷갈리는 문제를 학교 교수님께서 하신 강의를 바탕으로 정리하였습니다. 우선, 사용하는 테이블들의 관계도는 다음과 같습니다. 연결되어 있는 것들은 foreign key 입니다. 1. 컴퓨터 공학과 학생의 학번과 이름 찾기 위와 같은 관계도를 가진 데이터 베이스에서, 컴퓨터 공학과 학생의 학번과 이름을 찾으라고 하면 대부분 다음과 같이 진행합니다. 문제는 없을지 몰라도, 시간은 매우 오래걸립니다. SQL에서 서로 다른 두 테이블을 바탕으로 원하는 결과값을 찾을 때, 두 테이블을 합집합한 후 해당 값을 찾습니다. 이렇게, 아무 조건 없이 그냥 찾으라고 하면 중복된 값들도 계속 체크하기 때문에 실행시간이 매우 오래걸립니다. 그래서 애초에 찾을 때..

[DB 시스템 구현] SQL ①

이전 포스팅들에서 DBMS에 대해 공부하였으니 이제 본격적으로 SQL에 대해 공부해보도록 하겠습니다. 우선, SQL은 DDL과 DML로 구성됩니다. DDL DDL은 Data Definition Language의 약어로, 데이터 정의 언어를 뜻합니다. 데이터의 저장 구조를 명시하는 언어로 테이블을 정의, 수정, 삭제하는 언어를 말합니다. DML DML은 Data Manipulation Langunage로 사용자가 데이터에 접근하고 조작할 수 있도록 하는 언어를 뜻합니다. 주로 레코드의 검색, 삽입, 삭제, 수정하는 언어를 말합니다. 테이블 생성 방법 테이블으 생성하는 방법은 다음과 같다. create table department ( dept_id varchar2(10), dept_name varchar2..

[DB 시스템 구현] 오라클 구조

이번 포스팅에서는 오라클의 구조에 대해 알아보겠습니다. 오라클의 구조는 논리적 구성요소와 물리적 구성요소로 나눌 수 있습니다. 논리적 구성요소 데이터 블록 오라클의 논리적 구성요소에는 가장 먼서 데이터 블록이 있습니다. 데이터 블록은 데이터가 저장되는 가장 작은 단위입니다. 만약, 저장해야 할 데이터가 늘어나면 데이터 블록의 배수로 저장공간을 확보하여 저장하게 됩니다. 데이터 블록의 표준 크기는 db_block_size 라는 설정값에 저장되며, show parameter db_block_size 관리자 계정에서 다음과 같은 명령어를 통해 블록의 크기를 확인할 수 있습니다. 익스텐트(extent) 데이터 블록의 다음 단계인 논리적 데이터 저장 공간입니다. 연속적인 데이터 블록이 여러 개 모여 익스텐트를 구..

[DB 시스템 구현] 오라클 설치방법

오늘은 구체적 실습을 위해 오라클을 설치하는 방법에 대해 알아보겠습니다. 우선 제 컴퓨터의 사양은 다음과 같습니다. 운영체제 : Window 11 HOME SSD : 1TB RAM : 16GB 이 때, 주의하실 점이 있습니다. 윈도우는 현재 window 11과 window 10을 모두 제공하고 있는데, window 11버전과 window 10버전이 설치방법이 약간 다릅니다. 저는 수업에서 oracle database 21c 버전을 다운받았기 때문에, 동일한 버전을 다운받도록 하겠습니다. 밑 링크에 접속하여 본인 운영체제에 맞는 버전을 선택하여 설치합니다. https://www.oracle.com/kr/database/technologies/xe-downloads.html Oracle Database Ex..

[DB 시스템 구현] 관계형 데이터베이스① : 관계형 데이터 모델

관계형 데이터베이스는 관계형 데이터 모델, 관계형 데이터베이스, 관계 대수 이렇게 총 세 파트로 나눠서 설명드리겠습니다. 관계형 데이터 모델 관계형 데이터 모델을 알기 전에 데이터 모델이 무엇인지 알아야 합니다. 데이터 모델이란 단순하게 말하면 데이터를 표현하는 방법입니다. 주로 데이터를 좀 더 간편하게 표현할 수 있도록 하는 것을 말합니다. 컴퓨터 공학에서 '중요한 부분만 추출하는 것'을 추상화 라고 표현합니다. 데이터 모델 또한 데이터를 추상화하는 과정이라고 말할 수 있습니다. 실제 데이터가 갖는 특성을 살리면서, 동시에 목적에 맞게 관심있는 정보만 추려 단순화한 후 표현하는 방식을 데이터 모델이라고 합니다. ​ 관계형 데이터 모델은 테이블로 정의된 데이터 모델을 말합니다. 좀 더 풀어서 설명해보면 ..

[DB 시스템 구현] 데이터와 데이터베이스

Database 우선, 간단하게 데이터 베이스에 대해 알아보자. 데이터 베이스는 데이터 + 베이스 합성어이다. 데이터란 팩트, 즉 사실들을 말한다. objective하고 measurement 즉 측정이 가능하다. 베이스란 기지, 진지 라는 뜻에서 사용된다. 이 둘을 합치면 데이터 베이스는 팩트들, 데이터들을 모아놓은 기지를 말한다는 것을 알 수 있다. 데이터는 정형화되고, 기록할 만한 가치가 있따고 판단되는 현상이나 사건, 아이디어에 대한 묘사를 의미한다. 쉽게 설명하자면 한 사람을 정의하는 데이터는 굉장히 많다. 예를 들어 한 사람에 대해 대학교에서는 이름, 학년, 학번, 학점, 등록금 납부 여부 등을 데이터로 사용한다. 반면 결혼정보회사를 가면 이름, 나이, 직업, 연봉 등을 데이터로 사용한다. 이처..

[SW 설계 및 테스트] 테스트 주도 개발

테스트 주도개발의 개념 테스트 주도 개발 방식은 테스트를 기반으로 코드를 구현하는 개발 방식이다. TDD(Test Driven Development)라고도 부른다. 보통 개발의 경우, 코드 구현을 모두 마친 후, 테스트를 진행한다. 그러나 테스트 주도 개발 방식의 경우에는 테스트를 먼저 하면서, 테스트에 걸리지 않을 최소한의 개발 하고, 다음 테스트를 진행하는 형식으로 개발이 이루어진다. 테스트 주도 개발 방식을 사용하는 이유는 다음과 같다. 보통 개발 중 오류가 아예 없을 순 없는데, 오류를 최대하 빨리 발견하는 것이 오류를 최대한 빠르게 해결하도록 해주며, 오류를 빨리 해결하게되면 그만큼의 시간과 돈을 아낄 수 있다. 이해를 돕기 위해 간단한 그래프를 보면서 이야기해보자. 이 그래프에서 오류가 들어간..

[SW설계 및 테스트]Junit 5

Junit 5는 가장 최근에 개발된 JUnit으로 매우 쉽고 간결하게 테스트 코드를 작성할 수 있다는 장점이 있다. JAVA4를 사용했던 Junit4와는 다르게 JAVA8을 사용하기 때문에, lambda등 최근 많이 사용되는 식들을 사용할 수 있다. Junit 5의 아키텍처는 다음과 같다. 수업에서 gradle과 IntelliJ를 사용하기 때문에 JUnitPlatform을 사용하였다. 테스트 라이프 사이클 테스트 라이프 사이클은 테스트가 실행될 때 생명주기이다. Junit5에서는 총 5가지의 어노테이션이 존재한다. 우선, 테스트라이프 사이클 순서를 간단하게 그림으로 나타내면 다음과 같다. 각 어노테이션들에 대해 자세히 알아보자. @BeforeAll BeforeAll은 static method로 class..