목록전체 글 (122)
기록
V모델은 폭포수 모델의 변형으로, 테스트 단계를 추가 확장하여 테스트 단계가 분석 및 설계와 어떻게 관련되어 있는지 나타낸다. 폭포수 모델이 산출물 중심이라면 V모델은 각 개발단계를 검증하는 데 초점을 두므로 오류를 줄일 수 있다. 단위 테스트 (unit test) 목표 : 개별 모듈 검증 내용 : 단위테스트는 모듈테스트라고 하며, 시스템을 구성하는 모듈이 기능을 올바르게 수행하는지 판별한다. 통합 테스트 (integration test) 목표 : 모듈 간의 인터페이스 확인 내용 : 단위테스트를 마친 각 모듈을 통합하는 과정에서 발생할 수 있는 오류를 찾는다. 모듈 사이의 상호작용이 적절하게 수행되는지, 모듈이 올바르게 연계되어 동작하고 있ㄴ느지를 확인한다. 시스템 테스트 (system test) 목표 ..
폭포수 모델(waterfall model) = 선형 순차적 모델 (linear sequential model) 폭포수 모델의 개발 절차 폭포수 모델에서는 폭포의 물이 위에서 아래로 떨어지듯이 계획, 분석, 설계, 구현, 테스트, 유지보수의 각 단계가 하향식(top-down)으로 진행되며, 병행되거나 거슬러 반복되지 않는다. 이 모델에서는 요구사항분석단계가 끝나면 '요구 분석 명세서'라는 문서가 산출된다. 이 명세서를 기준으로 사용자에게 이상 유무를 확인받고 다음 단계인 설계 절차로 넘어간다. 이렇게 각 단계의 산출물에 대해 확인 절차를 거침으로써 서로 간의 책임 소재를 분명히 할 수 있다. 계획(planning) 단계 문제를 정의한 후 프로젝트 영역을 결정 작업 분할 구조도(WBS: Work Breakd..
ㅡ CUBE CUBE는 입방체라는 의미이며, ROLLUP과 마찬가지로 동작을 연상해서 붙인 명칭이다. 구문 사용법은 ROLLUP과 동일하다. CUBE란, GROUP BY에 부여된 집약 키를 가능한 모든 조합으로 섞어서 하나의 결과에 포함시키는 기능이다. 이 때문에 조합 수는 2^n이 된다. (n은 키의 수) ㅡ GROUPING SETS 마지막으로 소개할 GROUPING 연산자는 GROUING SETS이다. 이것은 ROLLUP이나 CUBE에서 구한 결과 중 일부 레코드만 필요한 경우에 사용한다. CUBE는 집약 키의 모든 가능한 조합을 구한다. 이중에서 '상품분류', '등록일' 각각을 단독 집약 키로 한 경우만 구하고 싶다. 반대로 말하면, 합계 레코드와 집약 키로 2개 키를 사용한 레코드가 불필요할 때 ..
오늘자 포스팅 중 틀린 데이터 값이 있어서 바꿔줬다. update Goods set sell_price = 100 where goods_id = '0008'; ㅡ 합계 행을 함께 구하고 싶다 SELECT문 2번 사용 후 UNION ALL로 합치는 방법도 있지만, 외형적으로 보기 좋지 않고 DBMS 내부 리소스도 높아지는 방법이다. GROUPING 연산자로 집약 단위가 다른 집약 결과를 간단하게 구할 수 있다. GROUPING 연산자에는 다음 세 가지 종류가 있다. - ROLLUP - CUBE - GROUPING SETS ㅡ ROLLUP 사용법 -- ROLLUP으로 합계 행과 소계를 함께 구한다. select goods_classify, sum(sell_price) as 합계 from goods group..
윈도우 함수의 출력 형식에 대한 주의점이 있다. 바로 레코드의 정렬 순서다. 윈도우 함수를 사용할 때 OVER 구 안에 ORDER BY 구를 사용하기 때문에 이 ORDER BY에서 지정한 순서로 정렬된다고 착각할 수 있다. OVER 구 내의 ORDER BY는 단지 윈도우 함수가 어떤 순서로 계산할지 결정하기 위한 것으로, 출력 순서에는 영향을 끼치지 않는다. select goods_name, goods_classify, sell_price, rank() over (order by sell_price) as 랭킹 from Goods; DBMS에 따라 다르지만, 이 SELECT문의 출력 결과의 정렬 순서는 보장되지 않는다. 그렇다면 랭킹 열을 오름차순으로 제대로 정렬하려면? 간단하다. select 문 마지막..
ㅡ 집약 함수를 윈도우함수로 사용 집약함수를 윈도우함수로 사용하는 방법을 알아보자. 모든 집약함수는 윈도우함수로 사용할 수 있으며, 구문은 윈도우 전용 함수를 사용할 때와 동일하다. -- SUM함수를 윈도우 함수로 사용. select goods_id, goods_name, sell_price, SUM (sell_price) OVER (ORDER BY goods_id) AS 누적합계 from Goods; 지금까지처럼 집계 대상이 되는 열을 인수로 지정한다, 다만 단순한 합계가 아니다. 일반적으로 '누계'라 부르는 방식의 집계 방법으로, 시계열 순으로 그때그때의 매출 금액의 총액을 산출할 때 자주 사용하는 방법이다. -- AVG 함수를 윈도우함수로 사용 select goods_id, goods_name, s..
윈도우 함수는 OLAP 함수라고도 한다. OLAP란, OnLine Analytical Processing의 약자로, 데이터베이스를 사용한 실시간(온라인) 데이터 분석처리다. 윈도우 함수는 이 OLAP 용도로 사용하기 위해 표준 SQL에 추가된 기능이다. MySQL은 아직도 윈도우 함수를 지원하고 있지 않다.. 윈도우 함수로 사용할 수 있는 대표적 함수 (1) 집약함수(SUM, AVG, COUNT, MAX, MIN)를 윈도우 함수로 사용 (2) RANK, DENSE_RANK, ROW_NUMBER 등의 윈도우 전용 함수 윈도우 함수 구문 OVER ( PARTITION BY ORDER BY ) 중요한 키워드는 PARTITION BY와 ORDER BY다. 이 두가지의 역할을 이해하는 것이 윈도우 함수를 이해하는..
지금까지 다음 네 가지 집합 연산자를 학습했다. - UNION (합) - EXCEPT (차) - INTERSECT (교차) - CROSS JOIN (직적) 나눗셈도 집합 연산에 존재한다. 집합 연산의 나눗셈은 일반적으로 관계 나눗셈이라고 한다. SELECT DINSTINCT emp FROM EmpSkills AS ES1 WHERE NOT EXISTS -- 차가 존재하지 않아야 한다 (SELECT skill FROM Skills EXCEPT SELECT skill FROM EmpSkills AS ES2 WHERE ES1.emp = ES2.emp); 나눗셈은 집합 연산 중 가장 까다로운 연산이다. 하지만 실무에서 의외로 사용하는 경우가 많으며, 중급으로 올라가기 위해서는 마스터해야하는 기술이다.
앞서 배운 집합연산은 행 지향 연산이다. 이들 집합연산을 사용하면 행이 늘거나 줄어든다. 한편, 이 집합연산들에는 열 수를 변화시킬 수 있는 힘이 없다. 집합 연산 대상의 테이블은 열 수가 일치한다는 것을 전제로 하기 때문이다. 이번 포스팅에서 배울 결합(JOIN)이라는 연산은, 다른 테이블에서 열을 가지고와 열을 늘리는 처리다. 내부 결합 ㅡ INNER JOIN (내부의 정보만 가지고 결합) 가장 자주 쓰이는 결합이다. SELECT a.store_id, a.store_name, a.goods_id, b.goods_name, b.sell_price FROM StoreGoods AS a INNER JOIN Goods AS b ON a.goods_id = b.goods_id WHERE a.store_name..
집합 연산이란? 데이터베이이스에서의 집합은 레코드의 집합을 의미한다. 집합 연산은 레코드끼리 더하거나 빼는, 이른바 레코드 사칙연산이다. 이번 포스팅에서는 테이블 덧셈과 뺄셈을, 다음 포스팅에서는 테이블 결합을 배워보자. 테이블 덧셈 ㅡ UNION (합집합) UNION은 레코드 덧셈을 수행하는 집합연산자이다. SELECT goods_id, goods_name FROM Goods UNION SELECT goods_id, goods_name FROM Goods2 ORDER BY goods_id; UNION 뿐만 아니라 모든 집합 연산자는 중복 행을 제외한다. 집합 연산의 주의사항 1) 연산 대상이 되는 레코드의 열 수가 같아야 한다. (에러 발생) 2) 덧셈 대상이 되는 레코드의 열이 같은 데이터형일 것 (..