전체 702

SQL 기본 내장함수

TO_CHAR - char형으로 변경 - 날짜, 숫자 모두 char형으로 변환 가능 SYSDATE - 오늘의 날짜를 출력 - 예시 SELECT SYSDATE FROM TABLE - 결과 EXTRACT - 년, 월, 일 등을 추출하는 함수 - 예시 SELECT EXTRACT(YEAR from sysdate), EXTRACT(MONTH from sysdate), EXTRACT(DAY from sysdate) from TABLE - 결과 TRUNC - 버림하는 함수 - 예시 SELECT TRUNC(숫자,옵션) from TABLE --"숫자"를 "옵션"자리 까지 절사 - 결과 DECODE - 조건문을 만드는 함수 - DECODE(조건1, 조건1 성립시 출력값, 조건2, 조건2 성립시 출력값 ... , '..

DB/SQL 2022.02.15

뷰(View)

뷰의 정의 - 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 생성한 가상 테이블 뷰의 특징 - 참조한 테이블이 변경되면 뷰도 변경된다 - 뷰의 검색은 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력 수정 삭제는 제약이 있다. - 특정 컬럼만 조회 되므로 보안성이 향상된다. - 한번 생성된 뷰는 변경할 수 없다. - ALTER이용하여 변경이 불가하다 사용 예시 CREATE VIEW T_EMP AS SELECT * FROM EMP;

DB/[이론] 2022.02.15

트랜젝션(transaction)의 정의 및 특징

트랜젝션이란 -쪼갤 수 없는 업무 처리의 최소단위 - A가 B에게 돈 1000원을 주었다면, A는 -1000, B는 +1000이 되어야 한다. 한 사람만 돈을 얻거나 잃는 일은 있을 수 없다. 이러한 업무처리의 최소단위를 묶어주는 것이 트랜젝션의 역할이다. 커밋(commit)과 롤백(rollback) - 커밋 : 트랜잭션 처리가 정상적으로 된 경우 결과를 반영함 - 롤백 : 오류가 발생한 경우 모든 동작을 원래대로 되돌림 트랜젝션의 특징 1. 일관성 : 트랜잭션의 결과로 DB상태가 모순되지 않아야 한다. 2. 원자성 : 작업이 모두 실행되거나, 하나도 실행되지 않아야 한다. 3. 연속성 : 트랜잭션 결과는 영구적으로 보장한다 4. 고립성 : 트랜잭션 연산 중간결과에 다른 트랜잭션이 접근할 수 없다.

DB/[이론] 2022.02.14

데이터베이스 종류

계층형 - 폴더와 파일등의 계층 구조로 데이터를 저장하는 방식 - 하드디스크나 DVD파일시스템 - 가장 오래된 데이터베이스 - 프로세스 변경에 따른 데이터 구조 변경이 어려움 네트워크형 - 그래프 구조의 데이터베이스 - 다대다 관계를 유지하고 데이터의 연결을 위해 포인터를 사용한다 - ex) 관계형 데이터베이스 - 행과 열을 가지는 표 형식의 데이터를 저장하는 형태의 데이터베이스 객체 지향 데이터베이스 - 관계형 데이터베이스는 새로운 데이터타입 생성 및 확장, 복합 객체표현시 상호 관련된 엔티티 처리가 어려움 - 사용자 정의 데이터타입 지원 및 상속성 명세 가능 - 비정형 복합 정보의 모델링 가능 - 트랜젝션 처리, 동시처리, 백업 및 복구 등에 취약하여 많이 확대되지 못함 키 밸류 스토어(KVS) - ..

DB/[이론] 2022.02.14

[ERD] 속성, 관계

속성 1. 분해 여부에 따른 속성의 종류 - 단일 속성 : 하나의 의미로 구성된 것(회원ID, 이름) - 복합 속성 : 여러개의 의미가 있는 것(주소 시 군 구) - 다중값 속성 : 속성에 여러 값을 가질 수 있는 것 (상품리스트) 2. 특성에 따른 속성의 종류 - 기본 속성 : 본래의 속성(이름, 계좌번호, 주문일시) - 설계 속성 : 모델링 과정에서 발생되는 속성(상품코드, 지점코드) - 파생 속성 : 다른 속성에 의해 만들어지는 속성 (합계, 평균) ​ 관계 (1) 식별관계 : 기본키끼리 (2) 비식별관계 : 기본키---기본키아닌것

DB/[이론] 2022.02.14

3층 스키마

3층 스키마란 - 스키마란? : 데이터베이스의 구조와 제약조건에 대한 구체적인 명세 - 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고, 이들간의 관계를 정의한 ANSI표준 - 데이터베이스의 독립성을 확보하기 위한 방법 데이터베이스 독립성 1. 데이터베이스 독립성확보하면? (1) 데이터 복잡도증가 (2) 데이터 중복 제거 (3) 사용자 요구사항 변경에 따른 대응력 증가 (4) 관리 및 유지보수 비용절감 2. 독립성의 종류 (1) 논리적 독립성 : 응용프로그램에 영향을 주지 않고 논리적 구조를 변경할 수 있는 것. (2) 물리적 독립성 : 논리적 구조에 영향을 미치지 않고 물리적 구조를 변경할 수 있는 것. 스키마의 종류 1. 외부 스키마 (1) 사용자 관점, 업무상 관..

DB/[이론] 2022.02.14

데이터 모델링의 의미 및 주요특징

데이터 모델링의 의미 복잡한 현실세계에 존재하는 데이터(사람 사물 현상)들을 단순화하여 일정한 표기법으로 컴퓨터 세계의 데이터베이스로 옮기는 작업 데이터 모델링의 특징 - 추상화 : 현실세계를 간략하게 표현 - 단순화 : 누구나 쉽게 이해할 수 있도록 표현 - 명확성 : 명확하게 의미해석 필요 데이터 모델링의 단계 1. 개념적 모델링 (1) 현실세계에서 나타나는 정보 구조를 추상적으로 개념화 하는것 (2) 업무 전체에 대해서 데이터 모델링 수행 (3) 복잡하게 표현하지 않고 중요한 부분을 위주로 (4) 추상화 수준이 높고 포괄적인 수준 2. 논리적 모델링 (1) 사람의 이해를 위한 개념적 설계의결과를 데이터베이스 저장에 용이한 논리적 구조로 변환하는것 (2) 식별자 도출, 모든 릴레이션 정의, 속성과 키..

DB/[이론] 2022.02.14

객체 지향 설계 5원칙 SOLID

SRP(the single responsibility principle) : 단일책임의 원칙 - 하나의 클래스는 하나의 method만을 갖게 됨에 따라 수정에 대한 이유는 한가지가 되어야 함. - 실제로 사용이 어렵다) OCP(the open closed principle) : 개방 폐쇄의 원칙 - 하나의 클래스는 수정에는 페쇄되어 있고, 확장에는 개방되어 있어야 한다. - 다형성과 추상화에 관련된 내용 - 기능 개선시 직접적인 수정보다는 상속을 통한 개선이 좋음 LSP(the Liskov Substitution Principle) : 리스코프 치환의 원칙 - 상속을 하게 되는 경우 IS-A 관계가 성립하기 때문에 지켜져야 하는 원칙 - 하위클래스는 상위클래스로 참조가 가능한 상속와 관련된 원칙 ISP(..

디자인패턴이란? (Design Pattern)

디자인 패턴이란? 반복적으로 해결해야 할 문제를 어떻게 풀것인지에 대한 솔루션. 1. 생성패턴(creation pattern) : 객체의 생성과정에 관여하는 패턴 - Abstract Factory : 각각의 구체적인 클래스를 지정하지 않고 서로 서로 관련성이 있는 객체들끼리는 쉽게 교체될 수 있도록 고안한 패턴 - Builder : 객체의 생성과 합성, 생성과 표현코드를분리. 인스턴스들이 어떻게 만들고, 어떻게 맞붙는지에 대한 부분을 캡슐화한다. - Factory Method : 부모 클래스에 알려지지 않은 구체 클래스를 생성하는것. 자식 클래스가 어떤 객체를 생성할지 결정하도록 함. 부모 클래스에서 구채 클래스의 이름을 감추기 위해 사용 - prototype(원형패턴) : 프로토타입 객체를 생성하고 이..

객체지향 설계와 원리

객체와 클래스 - 객체는 독립적으로 존재하는 실세계의 사물 (Ex-학생, 물건, 도시) - 클래스는 유사한 객체들의 모임 - 클래스(학생) 내의 객체들은 같은 속성(학번, 전공, 성적)을 가지고, 고유한 속성값(김영희: 13학번,컴공,4.3, 이영철:14학번,경영,4.2)을 가진다 캡슐화(encapsulation) - 모듈별로 정보은닉을 하여 모듈간의 독립성을 보장해주는것 - 단위 모듈의 처리 완전성을 높히고 타 모듈과의 종속성을 최소화 - 이를 통해 이해하기 쉽고, 수정이 쉬운 소프트웨어 개발 가능 상속(inheritance) - 클래스를 계층화하고 상위 클래스의 속성과 기능을 하위클래스에서 사용할 수 있게 하는것 - 높은 수준의 코드 재활용성을 제공 다형성(polymorphism) - 동일한 이름이라..

소프트웨어 세가지 관점

기능 관점 - 소프트웨어가 어떠한 기능을 수행하는가 관점에서 시스템을 기술 - 유스케이스 다이어그램 : 행위자가 어떤 용도로 시스템을 사용하는가를 나타내는 사용 예. 사건의 흐름과 과정대로 시나리오를 작성. - 예시 정보 관점 - 소프트웨어의 정적인 정보구조를 포착하는 경우 사용 - 시스템에 사용되는 정보 객체를 찾아내고 객체의 툭성, 객체 사이의 관계와 연관성 규명 동적 관점 - 소프트웨어 동작과 제어에 초점을 맞추어, 시스템의 상태와 상태가 변하는 사건과 시간들을 묘사 - 예시

소프트웨어 아키텍처 스타일

저장소 구조 - 한 서브시스템에서 데이터를 생성하고, 다른 서브시스템에서 데이터를 사용하는 경우, 모든 공유데이터를 한곳에 보관하여 모든 서브 시스템들이 데이터를 공유할 수 있도록 만든 구조 - 중앙자료구조와 독립된 컴포넌트로 구성된 아케틱쳐, 컴포넌트간의 통신은 이뤄지지 않는다. - 그림 MVC(Model-View-Controller)구조 - 모델(Model) : 애플리케이션의 핵심 기능을 포함, 상태 변화시 컨트롤러와 뷰에 전달 - 뷰(View) : 결과물 생성을 위해 모델로 부터 정보를 수신 - 컨트롤러(Controller) : 사용자로부터 입력을 받아 모델과 뷰에 명령을 전달 클라이언트 - 서버 모델 - 클라이언트 : 서비스를 요구, 서버 : 서비스를 제공 - 분산시스템으로 구현, 네트워크 시스..

모듈 독립성의 평가 (응집도(cohesion), 결합도(coupling))

응집도(cohesion) - 모듈 내부가 얼마나 강한 연관성으로 뭉쳐져 있는가를 나타내는 모듈 성숙도의 측정치 - 모듈 내의 각 구성요소들이 공통의 목적을 달성하기 위해 서로 얼마나 관련있는지 연관정도를 나타냄 - 모든 요소들이 단일 기능을 수행하고, 그 상위 모듈을 위해 수행되는 기능적 응집도가 가장 높은 응집도이며 아무 관련없는 처리요소들로 모듈이 형성되는 우연적 응집도가 가장 낮은 응집도 - 하나의 논리적 기능을 수행하거나 하나의 논리적 엔티티를 나타내는 것이 바람직하다. 결합도(coupling) - 모듈 사이의 상호 연관성의 복잡도를 의미 - 모듈간의 상호 교루가 많고, 의존이 많을수록 결합도가 높아진다 - 인터페이스가 정확히 설정되어 있지 않거나, 기능이 정확히 나누어져 있지 않을 때 불필요..

소프트웨어 설계 원리

추상화(abstraction) - 상세한 수준의 구현 고민이 아닌, 상위수준에서 제품의 구현을 먼저 생각하는것(필수적인 것만). - data 추상화, control 추상화, procedure 추상화로 나뉨. - 시스템을 분할하여 컴포넌트가 어떻게 상호작용 하는지, 컴포넌트의 구현 방법을 생략하고, 외부 인터페이스에 초점을 맞추는 것이 추상화의 개념 - ex) print()라는 함수가 있을 때, print함수의 내부 구조 및 내부적인 동작과정을 생각하지 않고, print()함수가 "출력함수이다" 라고 이해하는 것. 정보은닉(information hiding) - 각 모듈의 내부 내용을 감추고, 인터페이스를 통해서 메세지를 전달할 수 있도록 하는 개념 - 내부 정보 접근을 제한하여 한 모듈이 다른 모듈의 구..

순차자료구조, 연결자료구조

순차자료구조 연결자료구조 메모리 저장 방식 메모리 저장 시작위치부터 빈자리 없이 자료를 순서대로 연속적으로 저장하는 방식 메모리에 저장된 물리적 위치나 순서에 상관없이 링크에 의해 논리적인 순서를 표현하는 방식 논리/물리 순서 일치 여부 논리적인 순서와 물리적인 순서가 일치하는 방식 논리적인 순서와 물리적인 순서가 일치하지 않음 삽입, 삭제 삽입, 삭제 시 연속적인 물리주소를 유지하기 위해 원소들을 이동, 오버헤드 발생 삽입 삭제되어도 물리적인 순서는 변경되지 않음 탐색 데이터 탐색시 즉각적으로 접근 가능 데이터 탐색시 O(n)의 복잡도를 가짐 프로그램기법 배열(동적배열, 정적배열) 포인터

역공학(reverse engineering)

역공학의 정의 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일. 시스템을 이해하여 수정하는 소프트웨어 유지보수 단계에 수행하는 일련의 활동. 소프트웨어 생명주기의 마지막 단계에서 얻어지는 프로그램 또는 문서 등을 이용하여 생명주기 초기 단계의 산출물에 해당하는 정보 또는 문서를 만들어 내는일. 리버스 엔지니어링 input : 원시코드, 목적코드, 라이브러리, 문서 output : 구조도, 자료 흐름도, 제어 흐름 그래프, 개체 관계도 역공학이 필요한 경우 - 기 가동중인 시스템의 유지보수가 어려운 경우 - 변경이 빈번하여 시스템 효율이 저하된 경우 - 파일 시스템으로 개발된 업무를 관계형 데이터베이스로 재구축 하려는 경우 - 기본 메인 프레임을 다운 사이징 하는 ..