본문 바로가기

db

[DB] 데이터모델링이란 다음의 두 이야기를 보자. 컴퓨터라는 것이 없는 시대의 편의점을 생각해보자. 편의점에서 쌀 1가마를 구입한다. 우리의 고객은 쌀 1가마에 해당되는 돈을 지불할 것이고, 거스름 돈을 고객에게 줄 것이며, 쌀 가게 주인은 장부에 기록을 할 것이다. 주인은 가게를 닫고 그 날의 쌀의 입고량과 출고량을 비교하여 재고를 파악할 것이다. 또한 수입이 얼마인가 지출은 또 얼마인가 열심히 주판을 튕길 것이다. 재고량 계산과 수입과 같은 일은 매일 매일 반복되는 작업일 것이다. 그럼 컴퓨터가 있는 시대의 편의점을 생각해보자. 우리의 고객은 쌀 1가마를 구입한다. 주인은 바코드 인식기를 들고 찍을 것이다. 그럼 컴퓨터에 의해 지불된 돈과 쌀 1가마의 가격의 차이를 계산하여 거스름 돈이 얼마인가를 보여줄 것이다. 또한 그날.. 더보기
[DB] 개발방법론과 정보공학 개발방법론이란, 소프트웨어 공학의 원리를 소프트웨어 라이프 사이클에 적용한 개념으로 소프트웨어 개발을 위해 작업활동, 절차, 산출물, 기법등을 체계적으로 정리한 것이다. 일부 서적에서는 개발방법론이라는 것 자체를 혐오하는 글도 본 적이 있다. 혐오의 이유는 개발방법론이 정해진 절차나 기법을 이용하여 소프트웨어를 개발하기 때문에 사람의 생각 자체가 없어지는 것이 가장 큰 이유라고 한다. 어쨌든 개발방법론은 성공적인 프로젝트를 위한 하나의 로드맵이다. 개발방법론이 새로운 것이 아니라면 이미 많은 프로젝트에서 적용되고 성공이 어느 정도 검증된 것이므로 이를 참고하여 프로젝트가 처한 현실에 맞게 커스터마이징하여 사용하는 것은 나쁘지 않으리라 생각한다. 개발방법론은 다음과 같은 구성요소를 가진다. 작업절차 (단계.. 더보기
[DB] 집합적사고방식 집합적 사고방식은 우선 2가지로 분류하여 살펴볼 수 있다. 그 2가지는 아래와 같다. SQL 작성시 집합적 사고방식 DB모델링시 집합적 사고방식 우선 SQL작성시 필요한 개념은 ‘2차원배열 단위로 처리된다고 생각’ 이다. 일반적인 C프로그래밍에서의 2차원 배열을 생각해보자. 데이터를 2차원 테이블형태(타일모양)으로 화면에 그려준다고 생각해보자. 그러면 일단 이중 For문을 돌면서 배열의 데이터를 가져올 것이다. 아마도 머리속에서는 난리가 날 것이다. ‘일단 변수를 하나 만들어서 초기값을 세팅하고, 처음 For문의 루틴에서는 배열을 끝까지 돌면서 데이터를 가져오고 .... ‘ 상당히 복잡하다. 그러면 SQL작성시는? 그냥 ‘A집합(Set, 2차원 배열의 데이터)을 보여줘’ 라고 하면 끝이다. 그렇다면 진짜.. 더보기
[DB] 3단계스키마구조 스키마란, 데이터베이스의 기술이다. 네이버 용어사전에는 다음과 같이 정의되어 있다. 데이터 시스템 언어 회의(CODASYL) 데이터베이스를 기술하기 위해 사용하기 시작한 개념. 데이터베이스의 구조에 관해서 이용자가 보았을 때의 논리 구조와 컴퓨터가 보았을 때의 물리 구조에 대해 기술하고 있다. 데이터 전체의 구조를 정의하는 개념 스키마, 실제로 이용자가 취급하는 데이터 구조를 정의하는 외부 스키마 및 데이터 구조의 형식을 구체적으로 정의하는 내부 스키마가 있다. 데이터베이스는 현재 다음과 같은 논리적인 모델이 있다. 계층형 모델 네트워크형 모델 관계형 모델 객체형 모델 객체-관계형 모델 '논리적'이라는 말은 위의 논리적인 모델에서 정의된 논리에 맞게 기술하는 것을 말한다. 즉, 계층형 모델의 논리에 맞게.. 더보기
[DB] 데이터의 중복과 고립화 데이터의 중복과 고립화를 없애는 일은 데이터베이스로 밥벌이 하는 주요 수단이다. 그러므로 이 부분을 잘 이해해야 하는데, 그게 쉽지 않다. 왜냐하면 제대로 설명하려면 책 한 권 가지고도 부족하기 때문이다. 앞서 데이터베이스의 정의에서 ‘최소한의 중복’이라는 글을 보았을 것이다. 무분별한 데이터의 중복을 없애고 정당화된 데이터의 중복이 필요하다. 여기에서는 데이터의 중복과 고립화가 왜 문제가 되는지만 정확하게 알면 된다. Data federation은 여러 데이터 저장소에 존재하는 데이터의 물리적 요소를 추상화하여, 단일 액세스 채널을 통해 조회하고 메모리 상에서 통합하는 가상적 통합하는 방식(Gartner)을 말한다. 데이터를 액세스하는 사용자는 가상환경에서 표준화된 단일 뷰(single view)를 제.. 더보기
[DB] 데이터베이스의 정의 데이터베이스가 무엇이냐고 필자에게 묻는다면 '데이터를 잘 꺼내보고, 잘 저장하기 위한 개념과 논리' 라고 하겠다. 여기에 '여러 명의 사용자' 또는 '고도로 구조화'와 같은 여러 가지 옵션들이 붙지만 '데이터를 잘 꺼내보고, 잘 저장하기 위한'에 포함이 된다. 여기서 논란의 여지가 있는 것은 역시 '잘'이란 부사이다. 데이터를 '잘' 꺼내보고, '잘' 저장하는 것이 데이터베이스의 지식영역의 전부(데이터 분석과 관련된 통계, 마이닝 분야는 데이터를 관리하는 것이 아닌 데이터 자체에 대한 해석의 영역이므로 데이터베이스의 지식영역에서는 제외한다)라고 봐도 된다. 데이터를 잘 꺼내보고 잘 저장하기 위한 일련의 작업들 중에서 가장 중요한 단계는 누가 뭐라고 해도 데이터 모델링과 설계 단계다. 나머지는 DBMS 제.. 더보기