데이터 설계(Data Design)

상위문서 : 시스템 개발 방법론

필수참고문서 : 


목차

1. 개요
2. 데이터 저장 메커니즘
3. 저장 형식
3.1. 파일 시스템
3.2. 데이터베이스
4. 코드 설계


1.개요

데이터 설계는 시스템을 사용하는데 효과적으로 데이터를 사용할 수 있도록 설계하는 것을 말하다. 여기서 데이터는 데이터베이스와 파일저장 형식이 있는데 둘다 장단점이 있다. 

2.데이터 저장 메커니즘

컴퓨터 시스템 안에 있는 데이터는 결국 파일과 같은 곳에 저장된다. 이것은 파일이든 데이터베이스든 똑같다. 파일 시스템은 기본적으로 디렉터리와 파일로 구성되어 있으며 제어 블록을 이용하여 디스크 공간의 할당 위치를 관리한다.
마지막 하드디스크는 일반적으로 저장되는 공간이 하드 디스크여서 저렇게 나타낸것이지 다른 형식으로 데이터를 저장하는 곳도 있다.

3. 저장 형식

3.1.파일 시스템

일반적으로 파일 시스템으로 저장하는 것은 워드프로세스나 엑셀과 같은 스프레드시트 메모장같은 파일에 데이터를 저장한다. 데이터베이스보다 속도는 느리지만 그래도 범용성이 더 높다.  이 문단에서는 파일의 제일 기본 골자가 되는 필드와 레코드를 소개하고 그 레코드가 모여서 파일을 만들 수 있는데 그 구조와 파일의 종류 마지막으로 응용 프로그램에서 파일에 접근하는 방법을 알아본다.
참고로
필드가 모이면 -> 레코드가 모이면 -> 파일
이다.

파일 시스템의 깊은 이해를 위해서 레코드 구조를 알아야하는데 레코드란 파일을 이루는 요소로서 저장될 데이터를 나타내는 필드이다. 예를 들어 주소록 파일을 구성하는 레코드는 이름, 주소,우편번호, 전화번호 등 각각의 개별 정보가 필드이며 저 정보를 합해서 레코드라고 한다.
위에서 보이듯이 노란 줄 전체가 레코드이며 3번째에 파란색 동그라미 안에 있는 정보가 필드이다.
이러한 레코드는 여러가지의 형태가 있는데 그 형태는 다음과 같다.
  1. 고정 길이 - 각 레코드가 여러 필드로 구성되어 있고 각 필드의 바이트 길이가 일정하다. 특정 필드의 값이 차 있지 않다면 그 필드는 특수 문자 or 빈 공간으로 남겨둔다. 각 필드의 바이트가 일정하기 때문에 필드를 뛰어 넘기 쉽다. (필드 바이트 길이만큼만 이동하면 되니까)
  2. 가변 길이 - 각 레코드가 여러 필드로 구성되어 있고 각 필드가 최대 길이를 가질 수도 있고 최소 길이를 가질 수도 있다. 필드는 데이터에 출현할 수 없는 특수 문자로 분리된다. 레코드도 특수 문자로 분리될 수 있다. 각 레코드의 길이는 레코드의 시작 부분에 저장한다.
  3. 헤더와 상세 레코드 - 레코드는 두 가지 타입이 있는데 해더 레코드와 그에 따라오는 상세 레코드이다. 이러 방법은 비즈니스 문서에서 많이 사용하는데 주문, 배송 등 대부분의 문서들이 가변 길이를 가지고 있기 때문이다. 각 레코드는 레코드 타입 필드를 가지고 있고 헤더 레코드 안에는 상세 레코드의 개수가 표시되어 있다.
  4. 태그 데이터 - 데이터가 복잡한 구조일 때 자료 아이템의 타입이 무엇인지 프로그램에게 자세히 알려 주기 위해서 태그를 사용한다. 예를 들어  HTML이나 XML은 데이터 사이에 대이터에 대한 일종의 설명을 붙인 것이라고 할 수 있다. 이런것을 전문적인 용어로 메타 데이터라고 한다.
위에서 레코드가 모여서 파일을 구성한다고 하였다. 그러면 위에서 소개한 레코드의 형태 말고 레코드가 어떻게 뭉치냐에 따른 파일의 구성 방법이 있다. 연속, 순차, 랜덤을 소개한다.
  1. 연속 구조 - 파일 안의 각 레코드가 파일의 맨 끝에 이어서 기록된다. 만일 레코드가 삭제되면 파일은 처음부터 삭제된 레코드까지는 건너뛰고 나머지 부분이 디스크에 복사된다.
  2. 순차 구조 - 순차 구조의 기본 형태는 각 레코드가 키 필드의 값을 기준으로 파일에 일정한 순서로 기록된다는 것이다. 레코드를 삭제하려면 연속 구조와 같은 방법으로 복사가 일어난다. 각 레코드는 적합한 자리에 위치해야하며 레코드를 파일에 추가할 때는 레코드가 삽입될 위치에 새 레코드를 저장한 후 파일의 나머지 부분을 복사한다.
  3. 랜덤 구조 - 각 레코드는 파일이 다른 레코드를 읽지 않고 바로 읽고 쓸 수 있는 정확한 알고리즘에 의하여 추가된다. 이 알고리즘은 해싱을 이용한 방법이 사용된다. 해싱에 대한것은 자료구조 해시테이블을 참조하자.
파일의 종류에 따라 데이터를 다루는 방법이 달라질 수 도 있다. 다음은 파일의 종류이다.
  1. 마스터 파일 - 시스템을 위해 근본적이고 영구 저장할 필요가 있는 데이터를 가진 파일이다.
  2. 트랜젝션 파일 - 트랜젝션 파일은 비즈니스 트랜젝션이나 사건을 기록하며 마스터 파일에 레코드를 수정하는데 사용된다. 은행 시스템에서 고객이 현금 자동 인출기에서 현금을 인출하였을 때 일어나는 트랜젝션은 이 파일에 기록된다.
  3. 인덱스 파일 - 인덱스는 마스터 파일에 있는 레코드 접근 속도를 빠르게 해주는 인덱스(목록)을 가지고 있는 파일을 말한다.
  4. 임시 파일 - 데이터를 처리하는 과정에서 생긴 계산 결과같은 것을 보관하는 파일이다. 보통 프로그램이 종료될 때 또는 어떤 특성 수행이 끝난후 같이 삭제된다.
  5. 백업 파일 - 백업 파일은 마스터 파일이나 트랜젝션 파일의 복사본이다.
  6. 파라미터 파일 - 돌아가는 프로그램의 변수 정보 따위를 저장한 파일이다.
마지막으로 응용 프로그램으로 부터 파일의 접근 방법을 소개한다. 

  • 순차 접근 - 특정 레코드를 찾기 위해 파일 레코드를 한개, 한개 순차적으로 확인해가며 찾는 방법이다.
  • 인덱스 순차 접근 - 위의 방법은 암(?)이 걸리는 방법이다. 그래서 개선된 방법이 인덱스 순차 접근인데 인덱스란 파일에 있는 레코드의 순서 정렬을 위해 사용되는 필드와 그 위치를 보관한 것이다.
  • 직접 접근 - 키 필드의 값을 파일의 주소로 바꾸어 찾는 방법이다. 이 방법에는 두가지가 있는데 첫번째 방법은 예를들어 각 레코드의 길이가 200바이트라면 첫번째 레코드는 파일 바이트 1에 두번째는 201바이트에 있을 것이다. 위 바이트를 키로 사용하는데 두번째 레코드를 찾으려면 201만 저장하면 되는것이다. 또 다른 방법은 해싱이 있다. 

3.2.데이터베이스

아래 링크는 데이터베이스 링크를 가지고 있습니다. 

4. 코드 설계

코드는 데이터를 간략하게 나타내기 위해서 사용하는 글자나 숫자의 집합이다. 코드를 사용하면 탐색과 저장공간의 효율성을 증대 할 수 있다.
코드에는 여러가지 타입이 있는데 다음은 대표적인 코드의 종류 8가지를 소개한다.

  1. 순차코드 - 특정한 순서대로 숫자나 문자를 지정하는 방법이다. 일반적으로 초중고등학교에서 반에서 번호를 주는데 이것이 순차코드의 대표적인 예이다.
  2. 블록 순차 코드 - 여러가지 다른 분류를 위한 블록화된 숫자를 이용한 코드이다.
  3. 문자코드 - 카테고리를 기반으로 개별 아이템을 구별하기 위해서 문자를 사용하는 코드이다.
    1. 카테고리 코드 - 관련 아이템을 그룹으로 묶기 위해서 사용하는 코드이다. 마트에서 상품을 구분하기 위해서 FD(Food) BK(Book) 이렇게 쓰이는게 대표적인 예이다.
    2. 약자 코드 - 약자로 긴 단어를 압축한 코드이다. 미국을 USA 한국을 KR 일본을 JP로 나타낸 것이 예이다.
  4. 유효 숫자 코드 - 십진수의 자리로 개별 아이템을 구별하는 코드이다. 우편번호 같은 것이 대표적인 예이다.
  5. 유도 코드 - 코드화하려는 아이템의 속성이나 특징으로 부터 데이터를 조합하는 방법이다.
  6. 암호 코드 - 암호 코드는 숫자로 인코딩하기 위해서 키워들르 사용한 코드이다. A=1, B=2 ,C=3이라고 한다.면 BACA는 2131을 나타낸다.
  7. 액션 코드 - 관련 아이템에 어떤 액션이 취해질 것인지를 나타낸 코드이다. 예를 들어 게임에서 파티를 구하기 위해서 파티 신청창을 띄울 때 P 버튼을 누르면 나타나는 것이 예이다.
이렇게 코드를 설계할 때 유의하여 설계하면 시스템에 긍정적인 효과를 줄 수 있다. 다음은 코드를 설계하는 가이드라인이다.
  1. 코드는 간결하게
  2. 확장을 허용
  3. 코드를 안정하게 유지
  4. 코드를 유일하게(다른것과 구별되게)
  5. 정렬이 가능한 코드를 사용하라
  6. 혼동될 코드는 피하라
  7. 의미 있는 코드를 만들어라
  8. 단일 목적으로 코드를 사용해라
  9. 코드의 일관성을 유지하라(규칙을 적게 설정하라)

on 2017년 6월 12일 월요일 | A comment?
0 responses to “데이터 설계(Data Design)”

Leave a Reply

최근 많이 본 글