전체 글 705

테이블 파티션의 종류

Range Partition - 값의 범위를 기준으로 여러 개의 파티션으로 데이터를 나누어 저장하는것 - ex) 봉급을 기준으로 200~4000이하인 파티션과, 5000~7000천 이상인 파티션 생성 List Partition - 특정 값을 기준으로 분할하는 방법 - 부서번호가 10번인 파티션과, 20번인 파티션으로 분류 Hash Partition - 데이터베이스 관리시스템이 내부적으로 해시함수를 사용하여 데이터를 분할 - 데이터베이스 관리 시스템이 알아서 분할하고 관리하는것

DB/SQL 2022.02.17

group by 관련함수

ROLLUP - 계층별로 group by를 수행 - rollup 뒤에 컬럼이 두개이상오면, 순서에 따라 결과가 달라짐 - 예시 SELECT DEPTNO,JOB,sum(sal) FROM table GROUP BY ROLLUP(DEPTNO,JOB) - 결과 GROUPING SET - 조합별 group by 쌍을 확인한다. - 예시 SELECT JOB,DEPTNO,count(*) FROM table GROUP BY GROUPING SETS(JOB,DEPTNO) - 결과 CUBE - 조합별, 소계 등 모든 경우의 group by 쌍을 확인한다. - 코드예시 SELECT DEPARTMENT_ID,JOB_ID,SUM(SALARY) FROM table GROUP BY GROUPING CUBE(DEPARTMENT_I..

DB/SQL 2022.02.15

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) - 모듈 사이의 상호 연관성의 복잡도를 의미 - 모듈간의 상호 교루가 많고, 의존이 많을수록 결합도가 높아진다 - 인터페이스가 정확히 설정되어 있지 않거나, 기능이 정확히 나누어져 있지 않을 때 불필요..