전체 글
[SQL] 정규화(Normalization)와 반정규화(De-Normalization)
정규화란?정규화는 데이터의 일관성, 최소한의 데이터 중복, 최소한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다.정규화된 모델은 테이블이 분해된다. 테이블이 분해되면 직원 테이블과 부서 테이블 간에 부서코드로 조인(join)을 수행하며 하나의 합집합으로 만들 수 있다.정규화를 하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다.절차문제점정규화는 데이터 조회(select) 시에 조인(join)을 유발하기 때문에 CPU와 메모리를 많이 사용한다.아래 코드를 프로그램화 한다면 중첩된 루프(Nested Loop)를 사용해야 한다.[ANSI JOIN}select 사원번호, 부서코드, 부서명, 이름, 전화번호, 주소from 직원, 부서where 직원.부서코드 = 부서.부서코드;s..
IPsec의 개념
Secure Protocolstcp/ip 5계층에서 보안 관련된 프로토콜은 많이 존재한다. 대표적인 예를 들어보면 다음과 같다. 1) Application Layer - HTTPS, SSH, PGP, S/MIME2) Transport Layer - SSL/TLS3) Network Layer - IPsec, VPN4) Data Link Layer - L2TPIPsec이란?IPsec는 Internet Protocol Security의 약자이다.Network layer에서 IP패킷을 암호화하고 인증하는 등의 보안을 위한 표준이다.안전한 인터넷 프로토콜(IP) 통신을 위한 인터넷 프로토콜들의 모음이다.IPSec가 제공하는 보안 서비스의 범위는 호스트나 보안게이트웨이 사이이다.VPN을 구현하는데 사용되는 프로토콜..
[SQL] GROUP BY 절 사용법 (그룹별 집계)
SQL Server에서 GROUP BY 절은 특정 칼럼을 기준으로 집계 함수를 사용하여 건수(COUNT), 합계(SUM), 평균(AVG) 등 집 계성 데이터를 추출할 때 사용한다. GROUP BY 절에서 기준 칼럼을 여러 개 지정할 수 있으며, HAVING 절을 함께 사용하면 집계 함수를 사용하여 WHERE 절의 조건절처럼 조건을 부여할 수 있다. GROUP BY 절은 중복제거를 할 때도 사용 가능하다. SQL Server에서는 GROUP BY 절을 사용할 경우 그룹 칼럼을 기준으로 자동으로 ORDER BY가 되지만 명시적으로 ORDER BY를 사용하여 쿼리문을 작성하는 것이 좋다.기본적인 GROUP BY 절 사용법직업(job) 별로 급여(sal) 총합계를 구하는 예제이다.GROUP BY 절의 칼럼은 S..
[SQL] INSERT 문 사용법 3가지 (데이터 입력)
SQL Server에서 데이터를 입력하기 위해서는 INSERT 문을 사용한다. SQL Server 2008부터 여러 행을 입력할 수 있는 기능이 추가되었으며, SELECT 해서 INSERT 하는 방법으로도 여러 건의 데이터를 입력할 수 있다. INSERT와 UPDATE를 동시에 수행하기 위해서는 MERGE 문을 사용하거나 프로시저를 생성하여 사용하면 된다.기본적인 INSERT 방법INSERT INTO [테이블명] ([칼럼1], [칼럼2], [칼럼3] ...) VALUES ([값1], [값2], [값3] ...)입력할 칼럼의 개수와 값을 개수를 동일하게 입력하면 된다. INSERT INTO dbo.dept(deptno, dname, loc)VALUES(50, 'IT TEAM', 'SEOUL'); 입력할 테..
멀티 프로세싱 vs 멀티 프로그래밍 vs 멀티 태스킹 vs 멀티 스레딩
멀티 프로세싱 (Multi processing)다수의 프로세서가 협력적으로 일을 처리하는 것이다. 프로세서는 CPU나 Microprocessor라는 하드웨어를 의미하며, 프로세스는 실제 메로리에 적재되어 프로세서에 의해 실행되고 있는 프로그램이다. 보통 하나의 프로세서 (CPU)가 하나의 작업을 맡지만 멀티 프로세싱은 다수의 프로세서가 다수의 작업을 함께 처리하는 것이다. 멀티 프로세싱의 장점은 하나의 프로세서가 고장이 나더라도 해당 프로세서가 진행 중인 작업은 다른 프로세서에서 수행하고 있기 때문에 작업이 정지되지 않는다, 또한, 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용한다면 각 데이터를 각 프로세서에게 할당할 필요 없이 하나의 공간에 데이터를 저장한 후 이를 공유하여 사용하도록 한..
애플리케이션 테스트 종류
V 모델애플리케이션 테스트와 소프트웨어 개발 단계를 연결하여 표현소프트웨어 개발 단계에 따라 단위테스트, 통합테스트, 시스템테스트, 인수테스트각각의 개발 단계에 완성도를 개발자 관점에서 검증하고 사용자 관점에서 확인기존 폭포수 모델에서 확장된 형태를 보이며 어느 단계에서 발생한 오류인지 추적이 가능하고 신뢰성이 높다단위 테스트 (Unit Test)개념코딩이 완료된 직후 소프트웨어 설계의 최소 단위인 모듈 (함수, 프로시저)이나 컴포넌트에 초점을 맞춰 테스트모듈의 기능 수행 여부를 판정하고 내부에 존재하는 논리적인 오류를 검출사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행수행 방법1. 명세 기반 테스트목적 및 실행 코드 기반의 블랙박스 테스트를 진행최소 기능 단위로 테스트하기 때문에 일반적..
함수적 종속 (Functional Dependency)
개념함수적 종속이란 어떤 릴레이션 R이 있을때 X와 Y를 각각 속성의 부분집합이라고 가정해보자. 여기서 X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의 값이 달라질 때, Y는 X에 함수적 종속이라고 한다. 이 경우 X를 결정자, Y를 종속자라고 한다. 이를 기호로 표현하면 X→Y이다. 이런 함수적 종속관계에는 완전 함수적 종속과 부분 함수적 종속 및 이행적 함수 종속이 있다. 이 릴레이션에서는 '학번'을 알면 '이름', '나이', '성별' 속성을 식별할 수 있으며, '힉번'이 다르면 그에따른 값도 다르다. 따라서 '이름', '나이', '성별' 속성은 '힉번'에 함수적인 종속관계다. 같은 이유로 전공 속성또한 '전공코드'에 함수적인 종속관계에 있다.학번→이름, 학번→나이, 학번→성별1) ..
블록 암호 모드 (CFB, OFB, CTR)
CFB 모드CBC 모드와 CFB 모드 비교● Cipher FeedBack 모드(암호 피드백 모드) -> 피드백(FeedBack): 암호화 입력의 사용 의미 ● CFB 모드에서는 1단계 앞의 암호문 블록을 암호알고리즘의 입력으로 사용 초기화 벡터최초의 암호문 블록을 만들어낼 때는 1단계 앞의 출력이 존재하지 않으므로 대신에 IV를 사용'CFB 모드는 평문 블록과 암호문 블록 사이에 오직 XOR만 있음 CFB 모드와 스트림 암호CFP 모드는 평문 블록과 암호문 출력의 XOR를 이용 암호문을 생성XOR에 의한 암호화와 비슷 (일회용 패드 : 평문 XOR 랜덤 비트열) 키 스트림 (Key Stream)CFB 모드에서 암호 알고리즘이 생성하는 비트열키 스트림을 생성하기 위한 의사 난수 생성기로서 암호 알고리즘을..
사용자 인증(Authentication)과 권한 부여(Authorization)에 대한 이해
인증과 권한 부여의 차이사용자 인증 - 컴퓨터 보안에서 말하는 인증이란 어떤 실체가 그 실체가 맞는지 확인하는 것이다.여기에는 4가지 유형이 있다. 지식 기반 인증(What you know) • 고객이 알고있는 정보 기반으로 인증 • 비밀번호 등 • 유추가 가능하고 유출의 우려가 있음 소유 기반 인증(What you have) • 고객이 소유하고 있는 것을 기반으로 인증 • 공인인증서, 시크리트 카드, OTP, 문자인증 등 • 지식 기반 인증과 함께 사용되면 강력함 • 복제/분실의 우려 존재 생체(존재) 기반 인증(What you are) • 고객이 가지고 있는 고유한 생체적 특징을 기반으로 인증 • 지문인증, 홍체인증 등 • 분실이나..
테스트 기법 (화이트박스 / 블랙박스)
1. 화이트 박스 테스트 (White Box Test)화이트 박스 테스트는 모듈의 원시 코드를 오픈시킨 상태에서 코드의 논리적 모든 경로를 테스트 하는 방법이다.Source Code의 모든 문장을 한 번 이상 수행하여 모듈 안의 작동을 직접 관찰할 수 있다.산출물의 기능별로 적절한 프로그램의 제어 구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검한다.테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트 (Dynamic Test)에 해당한다.테스트 종류기초 경로 검사 (Basic Path Testing) : 기초 경로는 수행 가능한 모든 경로를 의미하며, Mocabe의 순환 복잡도를 사용하여 선형 독립 경로 수를 결정한 다음 얻어진 각 경로에 대한 테스트 사례를..