데이터베이스 실생활 - deiteobeiseu silsaenghwal

데이터베이스 실생활 - deiteobeiseu silsaenghwal
농식품올바로 누리집 화면.

[전업농신문=구득실 기자] 건강한 식생활에 대한 국민의 관심이 높아지면서 식품성분에 대한 정보 요구가 커지는 가운데 약 25만 건의 식품성분 정보가 수록된 ‘국가표준식품성분 데이터베이스 10.0’이 공개됐다.

농촌진흥청은 최근 식품 소비형태 변화와 국민의 영양성분 정보 요구 증가에 발맞춰 개정한 국가표준식품성분 DB 10.0을 발간했다고 밝혔다.

국가표준식품성분표는 1970년 초판이 발간된 이후 5년 단위로 개정·발간되고 있다. 2019년 이후에는 신속한 정보 활용을 돕기 위해 DB를 매년 갱신해 공개하고 있다.

이번에 공개된 국가표준식품성분 DB 10.0에는 식품 3272점, 영양성분 130종 등 약 25만 건의 식품성분 정보가 수록돼 있다.

최근 세분화, 다양화되고 있는 농식품 소비형태를 반영해 쌀, 잡곡, 옥수수 품종별 식품 244건을 새로 추가했다.

영양성분은 기존과 마찬가지로 당류, 아미노산, 지방산, 비타민E 같은 건강에 많은 영향을 끼치는 영양 세부정보를 수록했다.

DB 표준화를 위해 영양성분 명칭(국문, 영문)과 표시 단위 기준을 설정했고, 이는 다부처 통합영양 정보 DB 구축에도 적용된다.

올해는 국가표준식품성분표 제10개정판 책자와 DB 10.0을 함께 공개했다.

책자에는 DB 10.0을 바탕으로 실생활에서 자주 접하는 식품과 성분의 실제 활용을 고려해 식품 1228종과 성분 42종을 담았다.

이번에 공개된 정보는 농림축산식품부의 공공 급식플랫폼 개발, 질병관리청의 국민건강통계 작성, 다부처 통합영양 정보 DB 구축에 활용된다.

농촌진흥청 유선미 식생활영양과장은 “국민이 소비하는 농식품의 최신 정보를 빠르게 제공해 활용성과 편이성을 높일 수 있도록 계속 노력하겠다”라고 말했다.

데이터베이스 활용사례

  • 상세정보
  • 자료후기 (2)
  • 자료문의 (0)
  • 판매자정보

소개글

데이터베이스가 무엇이고 어떤곳에 활용되며 문제점이 무엇이지에 대해
서술한 글입니다.참고하세요^^

목차

◎ 데이터 베이스가 갖는 의미
◎ 데이터 베이스의 활용사례
◎ 데이터베이스 관리의 문제점 - 개인정보유출

본문내용

◎ 데이터 베이스가 갖는 의미
데이터 베이스란 단어의 의미는 한마디로 압축하기가 매우 힘들다. 사전적으로는 ‘여러 사람에 의해 공유되어 사용될 목적으로 통합 관리되는 정보의 집합’이라 할 수 있다. 하지만 이 한줄의 설명만으로는 그 의미가 충분히 와 닿지를 않는다. 단순히 정보를 모아둔 것이 데이터 베이스인지, 아니면 그 정보를 모아서 조합하고, 응용하여 실제 사용가능한 것이어야 하는지를 판단하기란 쉬운 일이 아니다. 하지만 이런 의미의 규정이 어떤지, 정의가 무엇인지에 앞서 이미 우리 생활에는 데이터베이스 기술이 널리 퍼져있는 것이 현실이다. 세계적으로 기업들은 이전의 무차별적 광고와 마케팅에서 벗어나 데이터베이스를 기초로 하여 사업을 전개해 나가고 있다.

◎ 데이터 베이스의 활용사례
우리나라에서 데이터 베이스를 실제 사업에 이용한 사례로는 LG전자와 대우자동차를 꼽을 수 있다. LG전자는 96년 11월부터 ‘통합고객정보시스템’을 구축하기 시작했다. 이는 서비스센터와 대리점 영업부서 등에 흩어져 있던 서울지역 소비자 2백만 명의 데이터를 호스트 컴퓨터에 끌어 놓는 작업부터 시작했다. 약 20억원이 들은 이 사업은 업무별로 따로 관리되던 데이터의 통합으로 고객 서비스를 한 차원 높일 수 있었다. 예를 들어 진공청소기 필터를 구입하기 위해 대리점을 찾았다가 모델명을 몰라 발길을 돌리는 경우가 있었다. 하지만 이제 서울지역 LG전자 전 대리점에서도 고객의 제품보유 현황이 조회된다. 전화선으로 인터넷에 있는 고객통합정보시스템에 접속하여, `아, 언제 구입하신 어느 모델을 갖고 계시군요`라며 바로 맞는 필터를 내줄 수 있다.

LG전자는 이 통합고객정보시스템을 고객 서비스 향상이라는 시스템 초기 활용목적에서 한걸음 더 나아가 ‘타겟고객 판촉’을 벌였다. 자신들이 확보한 고객의 데이터베이스를 기초로 가전제품 판매신장에 효과를 도모한 것이다. 즉, 고객정보를 대리점 전산관리프로그램에 입력한 뒤 상품의 교체주기에 이른 고객에게만 집중적으로 광고물을 보내는 것을 주요 내용으로 하는 판촉방법이다. 예컨대 세탁기 신제품이 나오면 세탁기를 구입한지 7년 이상된 고객에게만 카탈로그를 보낸다.

태그

이 자료와 함께 구매한 자료

[ 본 사진은 쉽게 배우는 오라클로 배우는 데이터베이스 개론과 실습 ppt에서 캡처했습니다. ]

1. 데이터베이스와 데이터베이스 시스템


[ 데이터, 정보, 지식 ]

  • 데이터 : 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값

  • 정보 : 데이터에 의미를 부여한 것

  • 지식 : 사물이나 현상에 대한 이해

아래와 같은 그림에서 에베레스트가 8848m라는 것은 데이터가 되며, 에베레스트가 세계에서 가장 높은 산이라는 것은 데이터에 의미를 부여한 정보가 되고, 에베레스트에 관한 보고서는 지식이 됩니다.

[ 일상생활의 데이터베이스]

  • 데이터베이스 : 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것

  • 데이터베이스 시스템은 데이터의 검색(select)과 변경(insert, delete 등) 작업을 주로 수행함

  • 변경이란 시간에 따라 변하는 데이터 값을 데이터베이스에 반영하기 위해 수행하는 삽입, 삭제, 수정 등의 작업을 말함.

간단히 말해서 데이터베이스는 우리에게 필요한 정보들을 구조적으로 모아둔 것이라고 이해하면 됩니다.

일상생활에서 사용되는 데이터베이스로는 아래와 같은 것들이 있습니다.

[ 데이터베이스의 개념]

  • 통합된 데이터: 데이터를 통합하는 개념. 각자 사용하던 데이터의 중복을 최소화하여 중복으로 인한 데이터 불일치 제거

  • 저장된 데이터: 문서로 보관된 데이터가 아니라 컴퓨터 저장장치에 저장된 데이터

  • 운영 데이터: 조직의 목적을 위해 사용되는 데이터. 즉, 업무를 위한 검색을 목적으로 저장됨

  • 공용 데이터: 한 사람 또는 한 업무를 위해 사용되는 데이터가 아니라 공동으로 사용되는 데이터를 의미

A와 B에서 사과의 가격이라는 데이터가 다를 경우에 이를 하나로 통합하여 합치는 것을 통합된 데이터라고 합니다. 기존에는 문서로 보관한 데이터를 컴퓨터에 저장한다는 개념을 저장된 데이터, 조직을 운영하기 위해서 만든 데이터를 운영 데이터, 모두를 위한 데이터라는 의미의 공용 데이터라는 총 4가지의 개념이 있습니다. 아래의 그림에서 예시를 들며 설명해보도록 하겠습니다.

데이터베이스 실생활 - deiteobeiseu silsaenghwal

위 그림에서는 컴퓨터 저장장치에 저장된 학사 데이터, 등록 데이터, 수강데이터를 통합하였으며, 

학교의 관리자들이 학교의 운영을 용이하게 하기 위해서 구축하였습니다.

[ 데이터베이스의 특징]

  • 실시간 접근성: 데이터베이스는 실시간으로 서비스된다. 사용자가 데이터를 요청하면 수 초 내에 결과를 서비스한다.

  • 계속적인 변화: 데이터베이스에 저장된 내용은 한 순간의 상태이지만, 데이터 값은 시간에 따라 항상 바뀐다.

  • 동시 공유: 데이터베이스는 서로 다른 업무, 여러 사용자에게 동시에 공유된다.(병행= parallel)

  • 내용에 따른 참조: 데이터베이스에 저장된 데이터는 물리적인 위치가 아니라 값에 따라 참조된다.

예를 들어, 우리가 어떤 프로그램에 로그인을 한다고 할 때, 아이디와 비밀번호를 입력한 후 로그인 요청을 보내면 실시간으로 서버로부터 응답을 받을 수 있습니다. 로그인을 하여 어떤 물건을 구매하려고 하는 경우에, 그 물건의 구매 가격은 계속해서 변화하며 그 물건에는 동시에 여러 사람이 구매를 위해 접근할 수 있습니다. 또한, 우리는 어떤 데이터가 메모리의 어느 주소에 저장되어있는지 몰라도 '사과'라는 내용을 검색하면 우리가 원하는 값을 찾을 수 있고 이를 '내용에 따른 참조' 라고 합니다.

[ 데이터베이스 시스템의 구성]

  • DBMS: 사용자와 데이터베이스를 연결시켜주는 소프트웨어

  • 데이터베이스: 데이터를 모아둔 토대

  • 데이터 모델: 데이터가 저장되는 기법에 관한 내용

뒤에서 자세히 다루겠지만 이해를 위해 간단히만 설명하자면, 일반적으로 데이터들은 데이터베이스에 저장이 되어있습니다. 그런데 그러한 데이터를 어떻게 저장할 것인지를 의미하는 것이 데이터 모델이고, 개발자가 데이터베이스로부터 데이터를 꺼내오기 위해서 데이터베이스와 연결을 시켜주는 소프트웨어가 DBMS(DataBaseManagementSystem)입니다.

2. 데이터베이스 시스템의 발전

[ 1. 파일 시스템 ]

  • 데이터를 파일단위로 파일서버에 저장

  • 각 컴퓨터는 LAN을 통하여 파일 서버에 연결되어 있고, 파일 서버에 저장된 데이터를 사용하기 위해서 각 컴퓨터의 으용 프로그램에서 열기/닫기(Open/Close)를 요청

  • 각 응용프로그램이 독립적으로 파일을 다루기 때문에 데이터가 중복 저장될 가능성이 있음

  • 동시에 파일을 다루기 때문에 데이터의 일관성이 훼손될 수 있음

파일 시스템은 서버에 하나의 파일을 두고 여러개의 클라이언트가 그 파일에 접근하는 방식입니다. 하지만 이러한 파일 시스템은 데이터의 중복 저장일관성 훼손이라는 치명적인 단점을 갖게 됩니다. A, B, C 세개의 클라이언트가 도서에 관한 파일서버의 파일에 데이터를 추가한다고 합시다. A, B, C가 모두 '데이터베이스 개론'이라는 책을 추가하기를 원한다고 할 때 A, B, C가 각각 책에 대한 정보를 파일에 추가하여 동일한 정보가 중복되어 저장될 위험이 있습니다. 또한 A에서 '데이터베이스 개론'이라는 원가 10000원의 책에 대해 가격을 2000올려서 12000으로 저장했다고 합시다. 그런데 이미 10000원이라는 가격으로 책에 대한 정보를 얻은 B가 1000원을 올려서 저장을 또 했다고 합시다. 이러한 상황에서 파일 시스템에는 A가 저장한 12000원의 데이터가 사라지고 데이터의 일관성이 훼손되게 됩니다.

파일 시스템의 구조를 그림으로 나타내면 아래와 같습니다.

[ 2. 데이터베이스 시스템 ]

  • DBMS를 도입하여 데이터를 통합 관리하는 시스템

  • DBMS가 설치되어 데이터를 가진 쪽을 서버(Server), 데이터를 요청하는 쪽을 클라이언트(Client)라고 함

  • DBMS서버가 파일을 다루며 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능 수행

  • 데이터의 중복을 줄이고 데이터를 표준화하며 무결성을 유지함

클라이언트는 데이터베이스에 있는 데이터를 얻기 위해 서버로 요청을 하는데, 이때 데이터베이스로의 연결을 위해 사용되는 것이 DBMS서버입니다. 언뜻 보면 파일 시스템과 비슷해 보일 수 있지만, DBMS서버는 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능을 수행한다는 점에서 상당히 큰 차이를 가집니다.

[ 3. 웹 데이터베이스 시스템 ]

  • 데이터베이스를 웹 브라우저에서 사용할 수 있도록 서비스하는 시스템

  • 불특정 다수의 고객을 상대로 하는 온라인 상거래나 공공 민원 서비스 등에 사용됨

기존의 데이터베이스 시스템은 LAN으로 연결된 컴퓨터만 접근가능했다면, 웹 데이터베이스 시스템은 인터넷을 통해서 LAN으로 연결되어있지 않은 클라이언트들도 데이터베이스로 접근가능하다는 장점을 갖게 되었습다.

[ 4. 분산 데이터베이스 시스템 ]

  • 여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템

  • 대규모의 응용 시스템에 사용됨

클라이언트의 수가 많아지면서 하나의 서버가 이 모든 것을 감당하기에는 버거운 수준까지 이르렀습니다. 이러한 경우에 여러 개의 서버로 분리하여 서버끼리의 동기화를 유지하며 운영하는 것이 분산 데이터베이스 시스템입니다.

[ 파일 시스템과 DBMS의 비교 ]

[ 파일 시스템과 비교한 DBMS의 장점 ]

4. 데이터베이스 시스템의 구성


이번에는 4종류로 분리되는 데이터베이스 사용자에 대해서 알아보겠습니다.

[ 일반 사용자 ]

  • 은행의 창구 혹은 관공서의 민원 접수처 등에서 데이터를 다루는 업무를 하는 사람

  • 프로그래머가 개발한 프로그램을 이용하여 데이터베이스에 접근하는 일반인

일반사용자는 그 프로그램을 사용하는 모두가 됩니다. 일반사용자는 데이터베이스가 어떻게 구성되어 있고, 어떻게 설계되어 있는지에 대해 몰라도 구현된 기능을 통해 원하는 데이터를 얻을 수 있습니다. 예를 들어 우리가 카카오톡으로 메세지를 보낸다고 할 때 우리는 사용자들에 대한 정보가 어떤 테이블로 어떻게 저장되어 있는지 몰라도 상대방에게 메세지를 전송할 수 있습니다.

[ 응용 프로그래머 ]

  • 일반 사용자가 사용할 수 있도록 프로그램을 만드는 사람

  • Java, C, JSP등의 프로그래밍 언어와 SQL을 사용하여 일반 사용자를 위한 UI와 데이터를 관리하는 응용로직을 개발

응용 프로그래머 덕분에 일반사용자는 데이터베이스에 대해서 알지 못해도 원하는 업무를 수행할 수 있습니다. 여기서 UI란 User Interface로 사용자가 사용하는 화면들을 나타낸다고 이해하면 됩니다.

[ SQL 사용자 ]

  • SQL을 사용하여 업무를 처리하는 IT 부서의 담당자

  • 응용 프로그램으로 구현되어 있지 않은 업무를 SQL을 사용하여 처리한다.

일반적으로 회사에서는 프로그래머와 SQL 사용자를 따로 분리합니다. SQL 사용자는 Select, Insert, Delete 등과 같은 Query문(쿼리문)을 사용하여 원하는 데이터를 추가하거나 필요한 테이블을 추가적으로 생성하곤 합니다.

[ 데이터베이스 관리자(DBA) ]

  • DataBase Administrator로, 데이터베이스 운영 조직의 시스템을 총괄하는 사람이다.

  • 데이터 설계, 구현, 유지보수의 전 과정을 담당

  • 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 데이터 이동 및 복사 등 제반 업무를 함

실제 대규모의 프로젝트를 진행하다 보면 테이블의 개수가 10개, 20개가 넘어가게 되면서 데이터베이스 시스템을 설계하는 것도 여간 복잡한일이 아니기에, DBA를 따로 둬서 데이터베이스의 설계를 맡깁니다.

[ 전체 데이터베이스 사용자 ]

[ DBMS의 기능 ]

  • 데이터 정의(Definition): 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행함

  • 데이터 조작(Manipulation): 데이터를 조작하는 프로그램이 요청하는 데이터의 삽입, 수정, 삭제 작업을 지원함

  • 데이터 추출(Retrieval): 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출함

  • 데이터 제어(Control): 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어함. 백업과 회복, 동시성제어 등을 지원

데이터 정의와 데이터 조작이 보면 비슷해 보이지만 한 단어 차이나는게 있습니다. 바로 데이터 정의는 데이터 구조(Table)에 대해서 작업을 하는 것이고 데이터 조작은 Table에 들어있는 혹은 Table에 넣을 데이터에 대해서 작업을 하는 것입니다. 

[ 데이터 모델(Data Model) ]

  • 계층 데이터 모델(hierarchical data model)

  • 네트워크 데이터 모델(network data model)

  • 관계 데이터 모델(relation data model)

  • 객체 데이터 모델(object data model)

  • 객체-관계 데이터 모델(object-relational data model)

실제로 가장 많이 사용되는 모델은 관계 데이터 모델입니다. 관계데이터모델은 서로 연관된 데이터들을 테이로 모아두는 구조인데, 오늘날 객체지향 프로그래밍언어와는 모델이 맞지 않아서 ORM(Object Relational Mapping)을 사용하는 경우가 많습니다.

( ORM에 대해서 모르시면 여기를 참고해주세요~ )

관계 데이터 모델에서는 아래의 그림에서 처럼 속성값을 사용합니다. 학생이라는 관계에서는 학번과 이름 그리고 수강하는 강좌번호라는 속성이 필요하고, 강좌라는 관계에서는 강좌번호, 강좌 이름에 대한 속성이 필요한데, 이때 학생의 강좌번호와 강좌의 강좌번호를 사용하여 두 데이터를 연결시켜줍니다. 

[ 3단계 데이터베이스 구조 ]

  • 외부스키마(External Schema)

  • 개념스키마(Conceptual Schema)

  • 내부스키마(Internal Schema

데이터베이스는 3단계의 구조로 이루어져 있는데, 각각의 스키마에 대해서 자세히 살펴보겠습니다. 그 전에 도움이 될 만한 전체 데이터베이스의 구조에 대한 그림을 보여드리도록 하겠습니다.

[ 외부 스키마 ]

  • 일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중 하나의 논리적인 부분을 의미

  • 여러 개의 외부 스키마가 있을 수 있음

  • 서브 스키마(Sub Schema)라고도 하며, View의 개념임

외부스키마란 사용자에게 보여지는 스키마로, 겉으로 보이는 DB, Table의 형태를 의미합니다. 사용 주체나 응용에 따라서 바라보는 구조가 다를 수 있습니다. 누군가는 GUI를 이용해서 볼 수 있고, 누군가는 Select문을 이용하여 조회할 수 있는데 이 때 우리가 보게되는 것을 외부스키마라고 이해하면 됩니다. 아래의 외부스키마도 다이어그램처럼 표시되어 있지만 다른 형태로도 데이터를 볼 수 있고, 그것 역시도 외부스키마라고 합니다. 외부스키마는 개념스키마의 부분집합이 됩니다. (그렇다고 외부스키마가 조회된 결과값을 의미하는 것은 아닙니다.)

[ 개념 스키마 ]

  • 전체 데이터베이스의 정의를 의미

  • 통합 조직별로 하나만 존재하며 DBA가 관리함

  • 하나의 데이터베이스에는 하나의 개념 스키마가 존재

개념스키마란 개발하는데 필요한 모든 데이터베이스를 정의해 놓은 것입니다. 그렇기에 우리에게 필요한 데이터만을 추출해 보는 외부스키마는 개념스키마의 부분집합이 될 수 밖에 없습니다. 개념스키마는 데이터베이스에서 매우 중요한 비중을 차지하기 때문에 하나만 존재하며 이를 DBA가 관리합니다. 

[ 내부 스키마 ]

  • 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법의 표현

  • 내부 스키마 역시 하나만 존재

  • 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함됨

내부스키마란 실제 구현에 관한 이야기로, 이 속성이 어떠한 형태(Integer or Varchar or 등등)이며 어느정도의 크기를 갖는지 등에 관해서 기술해둔 스키마를 의미합니다. 아래의 사진을 참고하면 쉽게 이해할 수 있습니다.

[ 매핑(Mapping) ]

  • 외부/개념 매핑

  • 개념/내부 매핑

외부/개념 매핑은 사용자의 외부스키마와 개념 스키마 간의 매핑(사상)을 의미하며 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시키는 것이다. 개념/내부 매핑은 개념 스키마의 데이터가 내부스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지를 대응시키는 것이다. 

[ 논리적 데이터 독립성 ]

  • 외부 스키마와 개념 스키마 사이의 독립성

  • 개념스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원

  • 논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념

  • 개념 스키마의 테이블을 생성하거나 변경하여도 외부 스키마가 직접 다루는 테이블이 아니면 영향이 없음

논리적 데이터 독립성의 예시를 들어 설명하면 우리가 카카오톡에서 친구들 목록을 본다고 가정합시다. 이때 카카오 선물의 빼빼로 가격이 1000원 올랐다고 하여도 우리가 직접 다루고 있는 테이블이 아니기 때문에 영향을 주지 않습니다. 이렇게 우리가 보는 외부 스키마와 개념 스키마가 서로 영향을 주지 않게 분리해 놓은 것을 논리적 데이터 독립성이라고 합니다.

[ 물리적 데이터 독립성 ]

  • 개념 스키마와 내부 스키마 사이의 독립성

  • 저장장치 구조 변경과 같이 내부스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원

  • 성능 개선을 위해 물리적 저장 장치를 재구성할 경우 개념 스키마나 외부스키마에 영향이 없음

  • 물리적 독립성은 논리적 독립성보다 구현하기가 쉬움

물리적 데이터 독립성의 예시를 들어 설명하면 우리가 공간의 효율성을 위해서 VARCHAR(100)의 주소라는 속성을 VARCHAR(50)으로 바꾼다고 가정할 때, 우리가 주소의 크기를 줄여도 개념 스키마에는 영향을 주지 않는데 이를 물리적 데이터 독립성이라고 합니다.

관련 포스팅

  1. 데이트베이스 시스템 (1/8)

  2. 관계데이터 모델 (2/8)

  3. SQL 기초 (3/8)

  4. SQL 고급 (4/8)

  5. 데이터베이스 프로그래밍 (5/8)

  6. 데이터 모델링(Data Modeling) (6/8)

  7. 정규화(Normalization) (7/8)

  8. 트랜잭션, 동시성 제어, 회복 (8/8)