.

MS-SQL 강좌 첫번째 


1. Data Base 란?

(1) 개요

: 흔히들 말하는 IT 업계의 사람들은 하루에도 수십번씩 듣게 되는 단어들중에 데이터베이스라는 단어가 있습니다. 아주 유용하고 필수 불가결한 요소임에도 종종 공포스러운 존재로 다가오기도 하는 데이터베이스는 IT 관련 종사자가 아니더라도 이미 일반인들에게 친숙한 단어 입니다. 그렇다면 이런 데이터베이스는 무엇이며 왜? 이 데이터베이스를 사용해야만 한다는 것일까요?

데이터베이스를 설명하기 위해서 참으로 여러가지를 비유합니다. 그렇다면 김바람은 무엇을 가지고 이를 비교해야 할까요 ? ^^; 실로 김바람 또한 이문제를 가지고 고심을 많이 했습니다. 결론부터 말한다면 데이터베이스는 전화번호부로 생각하시면 됩니다. 아마도 여러분들께서도 집이나 직장등에 전화번호부를 하나쯤은 가지고 계실겁니다. 필요한 정보들을 모아둔 저장소의 개념이 바로 데이터베이스라 생각하셔도 무방합니다. 그렇다면 이미 여러분들께서는 데이터베이스를 사용하고 계신것이 아닐 수 없습니다. 또한 우리 주변의 거의 모든것들이 데이터베이스화 되어 있으며 살아가는 동안 데이터베이스를 벋어나서는 살아갈 수 없을 정도로 우리 생활과 밀접한 관련이 되어 있습니다. 특히나 주민등록번호를 통해서 우리들 자신 개개인이 이미 데이터베이스화 되어 있음을 생각하면 참으로 가깝고도 무섭다는 생각 마져 드는 군요. 이러한 데이터베이스는 이미 오래전 부터 그 구축의 필요성과 편리함으로 인해서 만들어져 사용되어 왔으며 더욱이 웹 서비스에서는 그 필요성이 필수라 할 수 있습니다.

데이터베이스를 말하면서 항상 말해지는 개념적인 단어로 자료와 정보라는 단어가 있습니다. 특히나 앞으로 접하게 될 관계형 데이터베이스를 위해서도 꼭 필요한 개념이기도 합니다. 그렇다면 자료와 정보란 어떠한 차이점이 있을까요?

(2) 자료 와 정보

1) 자료

: 자료라는 단어를 모르시는 분들은 아마도 없으실 겁니다. 데이터베이스에서 말해지는 자료는 즉 Data 입니다. 앞서 예로 든 전화번호부의 경우에 개개인의 이름이나 전화번호등이 모두 자료(Data)입니다. 이들 데이터들을 이용하여 우리는 필요한 작업을 하게 되고 또한 이러한 데이터들은 수시로 변경되며, 필요에 따라서 삭제되기도 합니다.

2) 정보

: 앞서 전화번호부의 사람의 이름이나 그 사람의 전화번호등이 자료라 하였습니다. 전화번호부에 저장된 각종 자료에는 사람의 이름뿐만 아니라 그 사람의 나이, 직장, 성별등의 정보를 기입할 수 도 있습니다. 이러한 자료들을 이용해서 기억이 가물가물한 사람의 경우에도 나와 어떤 관계에 있는 사람인지 그 사람의 정보를 알 수 있는 것입니다. 이렇게 자료를 분석하여 얻을 수 있는 것을 정보라 합니다. 또한 자료와 자료사이에 관계나, 자료들을 어떻한 기준에 맞추어 얻어진 결과가 바로 정보입니다.

(3) DB(Data Base)를 사용해야 하는 이유

: 앞서 자료와 정보에 대하여 살펴 보았습니다. 이러한 자료와 정보는 개인에 경우에도 상당히 많은 이점을 주지만 그 규모가 클 수 록 그 가치는 엄청날 수 있습니다. 예를 들어서 어떠한 기업의 특정 상품의 매출액에 대한 지난 10년간의 자료등은 그 가치가 엄청날 수 있습니다. 이 자료를 분석함으로 인해서 얻을 수 있는 결과가 실로 많기 때문입니다. 기업에서 이러한 자료를 분석하는 작업을 마케팅의 첫 번째 작업으로 삼는 이유는 데이터베이스를 구축해야만 하는 이유를 단적으로 말해 주고 있다 하겠습니다.

또한 다른 예로 기업내에 일정한 규칙이 없이 이곳저곳에 저장된 데이터들은 상당히 많습니다. 일반 사무에 쓰이게 되는 각종 문서들은 개인의 컴퓨터 이곳 저곳에 중복되서 저장되고 이들의 문서를 찾아 보기 또한 매우 어렵습니다. 이러한 경우 일정 규칙에 의해 구축된 데이터베이스는 상당히 중요한 수단이 되며 꼭 필요한 것이기도 합니다.

여러가지 이유로 인해서 데이터베이스는 구축되어야만 하며 그 필요성이나 유용성에 대해서는 이미 더 말할 이유가 없이 중요합니다.

(4) 관계형 데이터베이스 (relational database)

: 데이터베이스는 그 종류와 사용에 따라서 총 4가지 정도로 구분되는데 이들은 다음과 같습니다.

  • 계층형 데이터베이스 : 1960 년대 개발되어 주로 IBM 시스템에 많이 쓰인것으로 그 구조가 간단하고 이해가 쉽지만 검색경로가 한정적이며 구조가 변경되면 전체 응용프로그램을 다시 작성해야되는 단점으로 초기에 사용하던 형태입니다.
  • 네트워크 데이터베이스 : 1970 년대 개발되어 자료간의 관계가 링크로 표현되어지는 구조로 자료간의 관계를 나타내는데는 보다 세부적이였지만 데이터베이스의 구조가 지나치게 복잡해 질 수 있는 단점이 있습니다.
  • 관계형 데이터베이스 : 1979년 오라클(Oracle)사를 시작으로 현재까지의 주요한 데이터베이스 시스템들의 구조가 바로 관계형 데이터베이스입니다. 데이터들이 컬럼(Column)과 로우(Row)로 구성된 테이블(Table)에 저장되는 구조로 자료의 변환이 쉽고 이해가 쉽기 때문에 현재까지 가장 많이 쓰이고 있습니다.
  • 객체지향형 데이터베이스 : 가장 최신의 데이터베이스 구조로 최근까지 관련 제품이 연구되고 발표되고 있습니다. 주로 대형데이터 처리에 필요한 경우에 많이 사용됩니다.

위에서 살펴본것과 같이 주로 데이터베이스를 말함에 있어서 대부분의 경우 관계형 데이터베이스를 말합니다. 이러한 관계형 데이터베이스는 데이터간의 관계에 그 역점을 두고 있으며 자료의 저장이 테이블에저장됨으로 이해가 쉽고 변환이나 처리가 비교적 쉽습니다.

관계형 데이터베이스의 데이터의 저장구조.. 데이터베이스가 구축되고 나서 실제 데이터베이스에 데이터들이 저장될 때는 테이블의 형태로 저장되며 데이터베이스에는 다수의 테이블이 존재 합니다. 또한 이들 테이블들은 가로열의 레코드(Record) 와 세로열의 필드(Field) 로 구성되어져 있으며 데이터베이스관련 용어로는 이들 레코드와 필드를 로우(Row)컬럼(Column)이라고도 합니다. 이처럼 관계형 데이터베이스는 테이블구조로 이루어진 데이터간의 관계를 주요 구조로 하며 가장 일반적인 데이터베이스의 구조이기도 합니다.

2. Webservice를 위한 DB

: 웹 서비스를 위한 데이터베이스는 이미 오래전부터 개발되어 사용되어져 왔으며 그 활용도 또한 실로 여러 분야 입니다. 우리가 흔히 접할 수 있는 게시판 또한 데이터베이스 입니다. 일정한 형식에 의해 작성된 글이 데이터베이스에 저장되고 이를 웹 이라는 환경을 통해서 수백에서 수천명이 동시에 사용할 수 있으며 언제나 마음막 먹으면 수정이나 삭제 또한 자유롭습니다. 이렇게 게시판에서 부터 찾아 볼 수 있는 데이터베이스는 회원에 대한 정보를 구축하기 위해서 자료를 저장하기 위해서 또한 웹 사이트의 특정한 정보를 제공하기 위해서 이용되기도 합니다.

최근에 그 활용도가 급즉하고 있는 전자상거래나 온라인 전자 결재등의 서비스 또한 데이터베이스를 이용하지 않았다면 불 가능한 서비스입니다. 여러분은 이러한 데이터베이스를 어떠한 목적으로 활용할지에 대한 수많은 고심을 하게 될 것이며 이렇게 구축된 데이터베이스를 이용해서 어떻게 웹 서비스에 적용해야할 지에 대한 것이 바로 온라인 마케팅이라 할 수 있겠습니다.

3. DBMS, RDBMS

(1) 정의(기능)

1) 정의

  • DBMS(Data Base Management System) : 데이터베이스 관리시스템은 다수의 클라이언트들이 조직의 데이터베이스를 사용할 수 있도록 관리하는 시스템을 말합니다. 조직의 중앙에 구축된 데이터베이스를 조직의 모든 클라이언트(응용프로그램)들이 사용할 수 있도록 하는 관리시스템을 구축함으로해서 클라이언트들은 실제 데이터베이스의 위치나 관리는 신경쓰지 않고도 자유로이 데이터를 수정, 기록, 검색할 수 있습니다.

    데이터베이스 관리시스템은 데이터의 무결성엑세스에 대한 보안성 보장함으로써 보다 강력한 기능을 제공하며 가장 일반적인 형태로는 RDBMS(관계형 데이터베이스 관리 시스템)이 있습니다. RDBMS 의 표준화된 응용프로그램 인터페이스를 SQL 이라 하며 이를 통해서 데이터베이스의 조작 및 제어가 가능합니다.

  • RDBMS(Relational Database Management System) : 관계형 데이터베이스 관리시스템이란 관계형 데이터베이스를 구축하고 이를 관리하기 위한 시스템(프로그램, 서버)를 말합니다. 가장 일반적인 형태로는 SQL(Structured Query Language) 를 이용하여 데이터를 수정, 삭제 및 검색을 제공하며 상용화된 RDBMS 제품군으로는 마이크로소프트의 MS_SQL 서버나 오라클사의 오라클등이 있습니다. 가장 일반적인 데이터베이스들이 관계형 데이터베이스의 구조이며 데이터베이스 관리 시스템 또한 관계형 데이터베이스 관리시스템이 가장 일반적입니다. 따라서 흔히 말해지는 데이터베이스는 RDBMS를 지칭한다 하여도 무리가 없습니다.

2) 기능

: 위에서 정의를 살펴본것과 같이 데이터베이스 관리 시스템은 조직의 데이터베이스를 관리하는 기능을 수행하는 시스템을 말합니다. 따라서 주요 기능은 데이터베이스의 관리가 그 주요기능입니다. 그러나 단지 데이터베이스의 관리라 한다면 기존의 마이크로소프트의 액셀등의 프로그램등도 매우 뛰어난 성능을 나타보여줍니다. 액셀등도 데이터베이스를 작성하고 이를 검색, 수정, 삭제등등 아주 편리한 인터페이스와 쉬운 사용법을 가지고 있기 때문입니다. 그러나 이러한 액셀등의 프로그램을 데이터베이스 관리 시스템이라 하기에는 무엇인가 부족합니다. 그것은 바로 공유된 데이터베이스의 관리라는 점이 바로 그것입니다.

각종 데이터베이스는 클라이언트들에게 직접 엑세스되는 것이 아니라 이를 중간에 관리할 수 있도록 DBMS 가 중간에 시스템의 관리를 수행합니다. 이는 네트워크상에 다수의 클라이언트들에게 동시에 데이터베이스를 사용할 수 있게 할 수 있을 뿐만 아니라 데이터베이스의 관리는 DBMS 가 전담하기 때문에 클라이언트들은 데이터베이스가 어느곳에 위치해있는지, 어떤 형태로 구성이 되어 있는지와는 관계없이 언제든 사용이 가능합니다. 이를 통해서 이 기종 플랫폼 시스템이나 종류가 다른 응용프로그램에서도 언제나 데이터베이스를 사용할 수 있으며 DBMS는 이러한 데이터베이스들의 무결성과 보안까지 관리하게 됨으로해서 언제나 올바른 데이터를 보유하고 허가 되지 않는 사용자에게는 사용을 금지하여 데이터의 보호를 할 수 있습니다.

 여기서 중요한 것은 데이터의 사용을 네트워크상에서 가능하게 한다는 것과 이러한 공유된 자원을 단지 사용할 수 있는 인터페이스만을 제공할뿐 아니라 이를 관리한다는 것입니다. 관리라 함은 데이터들의 무결성을 제공하며 또한 사용자로 구분된 엑세스 권한을 부여함으로써 효율적으로 관리하며 동시에 수십에서 수천명까지의 사용을 지원하는점 또한 주요한 기능이라 할 수 있겠습니다. 또한 이러한 적절한 데이터베이스의 엑세스권한과 언제 어디서나 사용할 수 있는 데이터베이스의 기능으로 인하여 웹 서비스에서도 각광을 받고 있는 이유라 하겠습니다.

(2) 필요성

1) 종속성

: DBMS의 필요성으로 대두된 이유중 하나는 바로 종속성입니다. 이는 간단하게 여러분이 자주 사용하는 사무용 프로그램들이나 응용프로그램들을 생각하시면 간단히 이해가 되실겁니다. 흔히 사용하는 한글97 프로그램의 경우 기본확장자가 .hwp 이며 한글 97로 작성된 문서를 보거나 수정하기 위해서는 당연히 컴퓨터에 한글 97 프로그램이 설치되어 있어야만 합니다. 이것이 바로 종속성 문제 입니다. 데이터베이스를 구성함에 있어서 개발자 마다 다른 응용프로그램을 이용해서 구축을 할 수 있으며 이러한 문제는 그 즉시 해당 응용프로그램을 데이터베이스 이용자는 모두 설치하고 있어야만 한다는 문제에 봉착하였기 때문에 데이터베이스 관리 시스템이 등장하게 된것입니다.

DBMS 는 서로 다른 응용프로그램간의 종속성문제등을 해결하여 데이터베이스를 관리하며 네트워크상의 어떤 클라이언트 응용 프로그램에서도 접근하여 작업을 진행할 수 있도록 하기위해서 등장하였습니다.

2) 중복성

: 중복성이라는 문제는 이미 많이 여러분도 충분히 이해를하실만한 내용입니다. 김바람의 경우에도 현재 작성중인 각종 서적이나 강의 원고를 작성하다 보면 해당하는 원고가 언제 작성되었는지 파일만을 보고는 잘 알지 못할때도 많습니다. 또한 이미 작성된 원고들이 개인 컴퓨터와 서버에 모두 각각 저장되어 있는데 집에서 작업을 하던중 수정한 원고 문서를 별 다른 생각없이 저장하고 직장에 출근을 하고 보면 서버에 있는 복사본이 업데이트 되지 않아서 이전의 원고를 다시 수정하느라 고생한 적도 많습니다. 흔히들 많이 겪어보는 사례일것입니다.

이렇듯 개인의 파일의 경우에도 이곳 저곳에 같은 파일들의 복사본이 저장되어 있습니다. 종종 이러한 복사본을 제대로 관리 하지 않다가 파일이 수정된후에 이전의 복사복으로 덮어쓰기를 하게 되어 몇시간동안 꼬박 수정한 문서를 날리게 되는 경우를 많이 경험해본 독자일 수록 이러한 중복성의 문제에 대한 심각성을 충분히 이해하실 겁니다.

개인의 파일뿐만 아니라 기업, 조직의 파일등은 더욱더 많은 중복 파일들이 존재 합니다. 특히나 데이터의 경우에는 이러한 중복성의 문제가 더욱 심각해지기 때문에 중앙의 올바른 데이터베이스에 저장된 각각의 정보들이 중복되지 않도록 보관하는 문제는 더욱 중요한데 이를 바로 DBMS 가 처리하게 됩니다. 이러한 중복성을 피하는 방법에 대해서는 차후에 더욱 자세히 살펴 보도록 하겠습니다.

(3) 요건

: 그렇다면 이렇게 중요한 기능을 담당하고 있는 DBMS 가 되기 위한 또는 자신에게 필요한 DBMS 를 선택하기 위한 요건에는 무엇이 있을까요? 이미 앞서 살펴본 내용들을 충분히 이해하셨다면 이에 대한 답을 이미 짐작하실겁니다.

1) 즉각적인 응답

: 네트워크상에 어떤 클라이언트가 요청을 하거나 사용자가 요구한 결과값을 즉각적으로 응답해야만 합니다.

2) 지속적인 변화

: 데이터베이스를 구축하고 이를 활용하는데는 구축된 데이터베이스를 검색하는 작업만을 의미하지는 않습니다. 따라서 구축된 데이터베이스에 대한 계속적인 수정과 삭제의 작업을 할 수 있어야만 합니다.

3) 결과물 공유

: 가장 중요한 요건중 하나가 바로 공유입니다. 어느 한 개인 사용자만을 위한 데이터베이스를 구축한다는 것은 인력과 시간의 낭비겠습니다. 네트워크상의 다수의 사용자들이 데이터베이스를 동시에 사용할 수 있어야만 합니다.

4) 내용물 참조

: 데이터베이스의 구축의 목적중 많은 부분은 누적된 데이터의 분석입니다. 이를 위해서 저장된 데이터들의 적절한 조건을 두고 결과값을 참조(검색)할 수 있어야만 합니다.

(4) 기능

: 위에서 이미 DBMS 의 기능을 살펴보았으나 간단히 그 기능을 구분하여 보면 다음과 같습니다.

1) 정의 기능

: 데이터베이스의 구조를 결정하는 기능을 정의기능이라 합니다. 데이터를 저장하기 위해서 테이블을 생성하고 데이터베이스를 생성, 삭제하는등의 기능이 이에 해당합니다.

2) 조작 기능

: 데이터베이스내의 데이터에 대한 특정 결과값을 얻기 위한 조건을 걸어서 데이터들을 조작하는 것을 조작기능이라 합니다. 데이터의 검색과 참조 기능등이 이에 해당합니다.

3) 제어 기능

: 데이터베이스를 구축한뒤에는 데이터베이스가 항상 올바른 정보를 가지도록 제어해야만 하는데 이를 제어 기능이라 합니다. 데이터의 무결성 보장이나 백업등의 기능이 이에 해당합니다.

4. SQL(Structured Query Language) 이란?

관계형 데이터베이스에서 데이터를 삽입, 검색, 수정 및 삭제하는 데 사용되는 언어입니다. SQL에는 또한 데이터베이스의 개체를 정의 및 관리하는 명령문이 포함됩니다. SQL은 대부분의 관계형 데이터베이스에서 지원되는 언어이며 국제 표준화 기구(ISO)와 미국 표준 협회(ANSI)에서 발표하는 표준을 따릅니다. MS_SQL Server 2000은 Transact-SQL이라는 SQL 언어 버전을 사용합니다.

관계형 데이터베이스 관리 시스템에서 실제 데이터의 조작은 이 SQL 을 이용하여 작업이 이루어지게 됨으로 기본적인 SQL 문법정도는 파악을 한뒤 GUI 관리툴을 사용하는 것이 좋습니다. 최근에 발표되는 각종 RDBMS 제품들은 SQL 의 사용을 쉽게 사용할 수 있는 관리툴을 포함하여 발표하기 때문에 이 부분이 더욱 쉬워지고 있지만 ASP, PHP, ASP.NET 등의 웹 응용 프로그램의 제작에 있어서 기본적인 SQL문의 습득은 필수라 할 수 있습니다. MS_SQL Server 2000 에는 이러한 쿼리(Query)문을 쉽게 처리할 수 있는 쿼리 분석기 툴을 함께 포함하고 있습니다.


출처 : http://koreawebper.net

.