카테고리 없음2013. 6. 20. 10:26

 

11-1. 데이터베이스 서버 구축 및 운영

      - DBMS 기본 개념

 

 

● DBMS 개념

MySQL을 운영하기 이전에 DBMS와 관련된 기본적인 용어를 명확히 이해할 필요가 있다.

 

- 데이터 : 자료

- 테이블 : 데이터를 표 형식으로 표현

- DB(DataBase) : 테이블의 집합

- DBMS(DataBase Management System) : DB들을 관리하는 소프트웨어

- 레코드 : 테이블 행

- 필드 또는 컬럼 : 테이블의 열

- 데이터 타입 : 각 필드에 입력할 값의 형식(정수, 문자 등)

- 필드명 : 각 필드의 이름

- 주 키(Primary Key) 필드 : 레코드를 식별하기 위해서, 유일한 값을 가지고 비어 있지 않은

                                     필드

- 외래 키(Foreign Key) 필드 : 다른 테이블의 주 키와 대응되는 필드

- RDBMS(Relational DBMS) : 관계형 DBMS

- SQL(Structured Query Language, 구조화된 질의 언어) : DB에서 정보를 얻거나, 생성 및

                                     갱신하기 위해 정의된 표준 언어(규약)

 

DBMS를 지금 처음 접해 본다면, 아마 읽어 봐도 무슨 말인지 이해가 잘 가지 않을 것이다.

다음 그림을 보면서 다시 설명하도록 하겠다.

 

 

[ 그림 11-1 DBMS 개념도 ]

 

위의 그림은 인터넷 쇼핑몰 업체의 데이터베이스를 아주 간략화하여 그린 그림이다.

예로 옥션, 인터파크, G마켓 등의 인터넷 쇼핑몰이라고 생각하면 쉬울 것이다. 이 데이터베이스에는 회원으로 가입한 고객의 정보와 그 고객이 구매한 물품에 대한 정보가 들어있다.

 

위의 그림을 보면서 용어를 다시 한번 살펴보자.

  

 

① 데이터(Data)

    그림에서 hong, 홍길동, 22살, 경기 등의 단편적인 정보를 데이터라고 부른다.

    누가 "홍길동의 데이터가 어떻게 되지?"라고 묻는다면

    "나이는 22살이고, 집은 경기도입니다." 정도로 대답할 수 있을 것이다.

    이처럼 정보는 있으나 완전히 체계적으로 정리되지 않은 것을 데이터라고 생각하면 된다.

 

 

② 테이블(Table)

    단편적인 정보를 표 형태로 체계화시켜 구성한 것을 테이블이라고 부른다.

    그림의 큰 원통(?)안에는 테이블이 2개가 있다.

    또, 각 테이블에는 이름을 붙일 수 있다. '고객정보', '구매정보' 가 테이블의 이름이다.

 

 

③ DB(DataBase)

    '고객정보', '구매정보' 같은 테이블이 들어 있는 커다란 저장 장소라고 생각하면 된다.

    DB는 위의 그림처럼 주로 원통 모양으로 그린다.

    또, 각 DB도 이름을 붙인다. 그림에는 DB가 3개 있다. shopping_db, mysql, test라는

    3개의 DB가 있는 것이다.

    이 중에서 mysql과 test DB는 시스템에서 제공하는 DB이며, shopping_db는 사용자가

    생성한 DB이다.

 

    DB를 더 쉽게 얘기하면 'DB는 커다란 저장소(원통 모양)이며, 그 안에 테이블을 생성'

    하는 것이다. 이 개념을 잊지 말자.

 

 

④ DBMS(DataBase Management System)

    이러한 원통 모양의 DB를 관리하기 위한 소프트웨어를 DBMS 또는 DB 서버

    (데이터베이스 서버)라고 부른다.

    ※ 종종 사람들은 DBMS를 줄여서 DB라고 부르기도 하지만 여기서는 서로 다른 것으로 구분해서 부르겠다.

       위의 그림을 보면 DB는 3개의 원통, 즉 테이블을 생성할 수 있는 공간을 의미하며 DBMS는 이 DB들을 관리하는

       소프트웨어임이 명확히 나타나 있다.

    위의 그림에서 3개의 DB를 싸고있는 선이 DBMS라 생각하면 된다.

    DBMS 소프트웨어의 많은 종류들 중에서 우리는 MySQL이라는 제품을 이용할 것이다.

 

 

⑤ 레코드(Record) 또는 튜플(Tuple)

    테이블의 행을 말한다. 위의 그림에서 "hong-홍길동-22-경기"가 하나의 레코드이다.

    그러므로 '고객정보' 테이블에는 4개의 레코드가 있는 것이다.

    이 레코드가 내포하는 의미는 '하나의 완전한 정보'로 생각할 수 있다.

    즉, '고객정보' 테이블에서 하나의 레코드만 본다면 해당 고객의 모든 정보를 파악할 수 있다.

    (이는 단순한 테이블에서의 예이다. 여러 개의 테이블이 관계된 테이블에서는 하나의 레코드만으로는

      모든 정보를 파악할 수가 없다)


 

⑥ 필드(Field) 또는 컬럼(Column)

    테이블의 열을 말한다. 여기서 중요한 점은 각각의 필드는 반드시 이름이 있다는 것이다.

    이를 '필드이름(Field Name)'이라고 부른다.

    위의 그림의 DB중 'shopping_db'의 테이블 '고객정보'는 4개의 필드로 구성되어 있으며,

    각각의 필드 이름은 아이디, 이름, 나이, 주소가 되는 것이다.

    또한 각 필드는 데이터 타입(Data Type)이라는 것이 지정되어 있다.

    즉, 각 필드에 입력할 값의 유형을 결정해 놓아야 한다.

    예로 '이름' 필드는 문자로 지정해야 하고 '나이' 필드는 숫자(정수)로 지정해야 한다.

 

 

⑦ 주 키(Primary Key) 필드

    주 키 필드란 단순히 '필드 중에서 비어 있지 않고, 중복되지 않는 필드'라고

    생각할 수 있겠다. 사용자가 인터넷 사이트에 회원으로 가입했을 때를 생각해보자.

 

    처음 가입시에 'ID'를 생성하는 칸에 자신이 원하는 ID를 입력하고, '중복확인' 이라는

    버튼으로 다른 사람이 내가 사용하고자 하는 ID를 이미 사용하고 있는지 확인했다.

    누가 이미 그 ID를 사용하고 있다면 사용자는 같은 ID로 가입을 할 수 없을 것이다.

    위의 그림에서 '고객정보' 테이블이 바로 회원 가입 시에 입력하게 되는 정보를 단순화시킨

    것이다.

    4개의 필드 중에서 '아이디' 필드가 바로 주 키 필드가 된다. 아이디는 중복되지 않아야 하고

    또 비어 있어도 안될 것이다. 즉, 아이디가 없이 회원 가입은 불가능하다.

 

    이처럼 주 키 필드의 특징은 '중복되지 않고, 비어 있는 값(NULL이라 부른다)을 허용하지

    않는' 것이다.

    만약 '이름'을 주 키로 설정한다면 어떨까? 당연히 동명이인이 있을 수 있으므로 주 키로

    설정하면 안된다.

 

    주 키 필드의 중요한 역할은 테이블에서 주 키 필드의 값만 알고 있다면 정확히 어떤

    레코드인지를 구분해 낼 수 있다는 것이다. '고객정보' 테이블에서 해당 사용자의 ID만 알고

    있다면 이름, 나이, 주소와 같은 정보를 정확히 추출해 낼 수 있다.

 

    그래서 사람의 기본 정보와 관련된 테이블에서 주 키 필드를 지정할 때는 중복되지 않고

    비어 있지 않아야 한다. 이런 이유로 인터넷 회원 가입에서는 주로 ID를 , 학생과 관련된

    정보시스템에서는 주로 학번을, 그리고 나머지 기타 정보시스템에서는 주로 주민등록번호를

    사용하게 되는 것이다.

 

    이번에는 '구매정보' 테이블의 주 키 필드를 생각해 보자. 단순히 생각하면 '고객정보'와

    같이 '고객ID'를 주 키로 설정하면 될 것처럼 보인다.

    하지만 그럴 경우에는 아주 위험한 결과를 낳을 수 있다.

    주 키의 정의를 다시 생각해보자. '중복되지 않고, NULL이 아닌 값' 이어야 한다.

 

    만약 '구매정보'에서 '고객ID'를 주 키로 설정했다면, 제일 처음 구매를 한 'hong'이라는

    사용자는 두 번 다시 이 쇼핑몰에서 물건을 살 수가 없다. 왜냐하면, 다음에 물건을 살 때

    주 키 필드인 '고객ID' 필드에 이미 'hong'이라는 값이 들어 있으므로, 'hong' 이라는 값을

    또 넣는다면 'hong' 이라는 값이 2개가 되므로, 주 키의 정의에서 어긋난다.

    우습게도 주 키의 설정 하나를 잘못한 결과로, 회원 한명이 우리의 쇼핑몰에서는 물건을

    한 개 사면 다시는 물건을 구매할 수 없는 결과가 되어 버린다.

    그러면 '일자'를 주 키로 잡는다면? 같은 물건을 두 번 다시 팔 수가 없다.

 

    그렇다면, '구매정보' 테이블에는 주 키로 설정할만한 적당한 필드가 없어 보인다.

    그럴 경우에는 주 키를 설정하지 않아도 되지만, 주 키는 설정해 주는 것이 바람직하므로

    제일 앞에 일련번호(NO)라는 필드를 생성해서 사람들이 물건을 살 때마다 차례로 1,2,3,4..로

    증가시키면서 값을 입력한다면, 중복될 일도 없고 NULL 값이 들어가지도 않을 것이므로

    주 키로 설정하기에 아주 적절한 필드가 되는 것이다.

 

    그래서 '구매정보'의 주 키를 'NO' 필드로 설정하게 된 것이다.

 

  

⑧ 외래 키(Foreign Key) 필드

    외래 키 필드는 두 개의 테이블을 연관시키는 필드이다. 위의 그림에서는 '구매정보'

    테이블의 '고객ID' 필드가 '고객정보' 테이블의 '아이디' 필드의 외래 키가 되는 것이다.

    외래 키의 필요성을 생각 해 보면, 어떤 사람이 우리 쇼핑몰의 회원이 아닌데도 물건을

    사려 한다면 아마도 물건을 살 수가 없고('구매정보' 테이블에 레코드를 삽입할 수 없고),

    먼저 회원으로 가입해야 한다. (먼저 '고객정보' 테이블에 레코드가 삽입되어야 한다)

    이번에는 위의 그림의 '고객정보' 테이블의 'hong'이라는 사용자의 레코드를 삭제한다면?

    원칙적으로는 삭제가 되지 않는다.

    '구매정보' 테이블에 'hong' 이라는 사용자가 있기 때문이다.

   이런 경우에는 '구매정보' 테이블의 'hong' 이라는 고객ID의 레코드를 모두 삭제한 후에,

   '고객정보'의 'hong' 레코드를 삭제해야 한다. 

 

 

⑨ RDBMS(Relational DBMS)

    관계형 DBMS는 지금 설명한 테이블과 그 관계성(Relationship)을 기반으로 하는

    DBMS를 말한다.

    Oracle, SQL Server, MySQL 등 대부분의 DBMS는 관계형 DBMS이거나, 관계형 DBMS를

    지원한다.

    

 

⑩ SQL(Structured Query Language, 구조화된 질의 언어)

    관계형 DBMS는 해야 할 일들을 대략 얘기하면, DB 만들기/테이블 만들기/레코드 삽입하기/

    레코드 삭제하기/레코드 수정하기 등의 작업을 해야 한다.

    이러한 작업을 하기 위해서 DBMS가 알아듣는 언어로 얘기해야 할 것이며,

    그 알아듣는 언어를 SQL이라고 부른다.

    이 SQL 언어를 이 책에서 완벽하게 하기는 어렵지만, 필수적으로 알아야 할 것들은 몇 개

    되지 않는다.

 

Posted by 아이맥스