목록Dev. Study Note (212)
Priv's Blog

1. 단일 책임 원칙 1.1) 책임 객체지향 설계 관점에서 단일 책임 원칙이 말하는 '책임'의 기본 단위는 객체이다. 즉, 객체는 하나의 책임만을 가져야 한다는 것이다. 책임이란, '해야 하는 것' 또는 '할 수 있는 것'으로 간주한다. 객체는 다른 어떤 객체보다도 가장 잘 수행할 수 있는 일을 책임으로 할당받아야 한다. 또한 객체는 책임에 수반되는 모든 일을 자신만이 수행해야 한다. 책임 == 해야 하는 것 == 할 수 있는 것 == 해야 하는 것을 잘할 수 있는 것 예를 들어, Student 클래스가 수강 과목을 추가/조회하고, 데이터베이스에 객체 정보를 저장/읽는 작업도 처리하고, 성적표와 출석부에 출력하는 일도 실행한다고 가정한다. // 코드 3-1 public class Student { pub..

1. 추상화 사람의 속성과 행동을 표현한 책을 쓰고자 할 때, 그 분량은 상상하기 힘들 정도로 엄청나게 방대하고 복잡할 것이다. 하지만 사람의 속성과 행동 중에서 필요와 조건에 따라 선별한 요소들을 골라내 사용할 수는 있다. 예를 들어 학생을 표현한다고 가정하면, 학교에서는 항상 교복을 입으며, 가방을 멘다는 속성이 있고, 월~금에는 학교에 등교한다는 행동이 존재한다. 하지만 이는 병원에서 진료를 보는 상황에서는 쓸데없는 정보일 뿐이다. 병원에서는 그 사람의 이름, 혈액형, 과거 진료 내역 등에 더 집중할 것이다. 추상화란, 사물들의 공통적인 특징을 파악해 인식의 대상으로 삼는 것을 말한다. 즉, 매우 복잡한 개념을 처음부터 끝까지 모두 설명하는 것 대신, 상황과 조건에 따라 파악한 공통점들로 집합을 구..

1. 모델링 소프트웨어 개발에서 모델은 소프트웨어의 전체적인 구조를 파악할 수 있게 해주는 역할을 한다. 서로의 해석을 공유해 합의를 이루거나, 해석의 타당성을 검토하게 만들어주며, 현재 시스템 또는 앞으로 개발할 시스템의 원하는 모습을 가시화하는 데 도움을 줄 수 있다. 또한 시스템의 구조, 행위를 명세하여 시스템 구축에 필요한 틀과 구축된 시스템의 문서화 기능을 제공할 수도 있다. 모델은 추상화(Abstraction)를 바탕으로 만들어져야 한다. 추상화는 대상의 세부적인 모든 것을 표현하지 않고, 그 대상의 특징을 부각할 수 있는 핵심 요소들만 표현해준다. 예를 들어, 대학 전산 처리 과정에서 한 학생을 추상화하여 모델링할 때, 그 학생의 머리카락 수나 피부색 등은 생략하고, 수강하는 과목, 지도 교..

1. 이상 현상 잘못 설계된 테이블로 삽입, 삭제, 수정 같은 데이터 조작을 하면 이상 현상이 일어난다. 이상 현상이란, 테이블에 투플을 삽입할 때, 부득이하게 NULL 값이 입력되거나, 삭제 시 연쇄 삭제 현상이 발생하거나, 수정 시 데이터 일관성이 훼손되는 현상을 의미한다. 위의 테이블은 필요한 정보를 검색할 때는 문제가 없지만, 튜플을 삭제, 삽입, 수정할 경우 문제가 발생한다. ● 삭제 이상 튜플 삭제 시, 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상. 장미란 학생이 스포츠경영학 수업의 수강을 취소하여 테이블에서 튜플을 삭제해야 할 때, 위의 테이블 설정대로 튜플을 그냥 삭제해버리면 장미란 선수의 기본 정보도 통째로 삭제되어 버린다. 이는 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로..

1. 데이터 모델링의 개념 데이터 모델링은 건축에서 쓰이는 지반 설계와 같다. 건물이 아무리 튼튼해도 지반 설계가 잘못되면 위험하듯, SW 개발 역시 데이터 모델링을 잘못하면 프로젝트 전체가 위험에 빠질 수 있다. 데이터베이스에서 데이터 탐색에 10분 이상 걸린다거나, 데이터가 누락을 감지하지 못하는 등의 문제가 발생하면 SW의 신뢰도에도 문제가 발생하는 것과 다름없을 것이다. 데이터 모델링은 현실 세계의 복잡한 개념을 단순화하고 추상화시켜 데이터베이스화하는 과정이다. 그러므로 최종적으로 구축된 데이터베이스는 현실 세계의 대상이 되었던 개념과 일치해야 한다. 현실 세계에 있는 개념들을 데이터베이스로 구현하기 위해서는 먼저 정보를 모아 모델링을 해야 한다. 개념적 모델(ER 다이어그램)로 정보 모델링이 완..

1. 데이터베이스의 물리적 저장 컴퓨터 상에서 실제로 데이터가 저장되는 곳은 보조 기억 장치이다. HDD는 원형의 플레이트로 구성되어 있고, 이 플레이트는 논리적으로 트랙이 나뉘며, 그 트랙은 다시 몇 개의 섹터로 나뉜다. HDD에 저장된 데이터를 읽는 데 걸리는 시간은 (탐색 시간 + 회전 지연 시간+ 데이터 전송 시간)이다. 데이터베이스에서 사용하는 데이터는 물리적으로 HDD/SDD와 같은 보조 기억 장치에 저장되어 사용/관리된다. DBMS나 개발 도구 등은 OS 위에 올라가는 프로세서로서 존재한다. 오라클은 아래와 같은 주요 파일들로 구성되어 있다. 데이터 파일 운영체제 상에 물리적으로 존재한다. 사용자 데이터, 개체를 저장한다. 테이블, 인덱스로 구성된다. 온라인 리두 로그 데이터의 모든 변경사항..

1. 뷰 (View) 뷰는 1개 이상의 테이블을 합쳐서 만든 가상의 테이블이다. 뷰는 다음과 같은 장점들을 지니고 있다. 편리성, 재사용성: 자주 사용되는 복잡한 질의를 뷰로 미리 정의할 수 있다. (복잡한 질의를 간단히 작성) 보안성: 각 사용자별로 필요한 데이터만 선별하여 보여줄 수 있다. (중요한 질의의 경우 질의 내용을 암호화 가능) 독립성 제공: 미리 정의된 뷰를 일반 테이블처럼 사용할 수 있기 때문에 편리하다. 사용자가 필요한 정보만 요구에 맞게 가공하여 뷰로 만들어 쓸 수 있다. (원본 테이블 구조가 변해도 응용에 영향을 주지 않도록 하는 논리적 독립성을 제공) 뷰는 다음과 같은 특징을 지니고 있다. 원본 데이터 값에 따라 함께 변한다. 독립적인 인덱스 생성이 어렵다. 삽입/삭제/갱신 연산에..

1. 부속 질의(Sub query) 1개의 SQL 문 안에 다른 SQL 문이 중첩된 질의를 의미한다. 다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾거나 가공할 때 사용한다. 보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 JOIN보다는 필요한 데이터만 찾아서 공급해주는 부속 질의를 사용하는 것이 효율적인 경우가 많다. 질의는 크게 주 질의(Main Query)와 부속 질의(Sub Query)로 나눌 수 있다. 부속 질의의 종류는 다음과 같다. 1.2) 스칼라 부속 질의(Scalar Subquery) - SELECT 부속 질의 SELECT 절에서 사용되는 부속 질의이다. 부속 질의의 결과 값을 단일 행, 단일 열의 스칼라 값으로 반환한다. 스칼라 부속 질의는 원칙적으로 스칼라 값이 ..