키스맥 - 리얼베이직 매킨토시 전문 웹 매거진 웹진

  + 파일메이커 기초편
  + 4th Dimension
  + 리얼베이직
  + OS X 10.3
  + 홈페이지 만들기
  + 포토샵 강좌
  + 디카 완전정복
  + 실무로 배우는 Quark
  + MLayout
  + iPod 강좌
  + html 강좌
  + 간단매뉴얼&팁
  + 5세대 iPod 강좌
  + iTunes 한 컷 강좌
  + iPod 한컷강좌
            


19회. Database -3-


지난 강좌에서는 리얼베이직에서 사용하는 데이타베이스의 기본 이론에 대해서 모두 알아봤습니다. (지난 강좌가 좀 오래 된 것 같으니 이번 예제를 하기전에 기존 강좌를 다시 한번 보는 것도 도움이 될 것입니다.) 데이타베이스의 기본을 이루는 Database 클래스와 리얼베이직에서 지원하는 RealDatabase 클래스, 데이타를 입력하기 위한 클래스는 DatabaseRecord, 데이타 검색 및 수정에 사용되는 RecordSet 클래스 등에 대해서 알아봤었습니다. 지난 강좌만 보고 대부분을 이해하시는 분들도 있었겠지만 좀 더 뭔가 더 필요하다 생각하시는 분들을 위해서 이번 강좌에서는 주소록 프로그램을 한번 만들어 보면서 리얼베이직에서의 데이타베이스 시스템 사용을 손에 익혀보도록 하겠습니다. 이번 강좌 내용은 대부분 이전 강좌의 내용을 기본으로 한 예제 내용이 될 것이기 때문에 수시로 이전 강좌내용을 참조하시는 것도 많은 도움이 될 것 입니다. 또한 온라인 도움말을 자주자주 참조해서 온라인 도움말 이용 방법이나 손쉽게 사용하는 방법에 대해서도 익혀두시기 바랍니다. 그리고 이 예제는 RealDatabase 시스템을 이용하지 않고 범용적이고 빠르고 안정적이면서도 무료인 MySQL Database 를 기반으로 만들어 볼 것입니다. 따라서 예제를 시작하기 전에 Mac OS X 에서 MySQL 을 설치하는 방법에 대해서도 알아보고 직접설치를 해보도록 하겠습니다.

*MySQL 만큼 무료이면서 빠르고 안정적인 데이타베이스 시스템은 찾아보기 어렵습니다. Oracle 과 같은 고가의 데이타베이스 시스템에 비할바는 못될 수도 있지만 그렇다고 왠만한 상용 데이타베이스 시스템 보다도 뛰어나고 간편한 점이 있습니다. 필자도 단일 프로그램을 사용할 경우에는 RealDatabase 시스템을 사용하고 있지만 되도록 데이타베이스 시스템을 사용할 경우에는 MySQL 기반으로 프로그램을 만들어 사용하고 있습니다. 몇번 사용해보면 MySQL 의 장점에 대해서 알게 될 것입니다. 여러분들도 MySQL 에 대해서 많이 사용해보시기 바랍니다. 그럼 시작해 볼 까요?

이전 강좌에서 MySQL 설치에 대해서 간단하게 언급을 하고 참조사이트를 안내해드린 적이 있었습니다. 이 홈페이지를 통해서 손쉽게 MySQL 을 다운로드 하고 설치할 수 있습니다.

http://www.entropy.ch/software/macosx/mysql

이 사이트에는 MySQL 을 다운로드 받을 수 있는 페이지가 링크되어있고 MySQL 4.0 버젼을 다운 로드 받을 수 있습니다. 링크된 사이트의 주소는 다음과 같습니다.

http://dev.mysql.com/downloads/mysql/4.0.html

위의 페이지에 가서 페이지의 중간 부분 정도를 보게 되면 "Mac OS X Downloads" 라는 부분이 있고 이곳에서 Mac OS X 용 MySQL 4.0을 다운로드 받을 수 있습니다. 이곳에서 Standard 버젼과 Max 버젼이 있는데 일반적으로 사용할 때에는 2버젼 모두 크게 차이가 없습니다. 이곳에서 Mac OS X 용 MySQL 4.0 을 다운로드 받게 되면 "mysql-standard-4.0.20-apple-darwin6.8-powerpc.dmg" 이름의 파일을 다운로드 받게 됩니다. dmg 형태로 되어있기 때문에 우선 더블클릭해서 마운트를 시켜야 합니다. 마운트를 하게 되면 3가지 파일이 있는데 하나는 MySQL 설치 프로그램과 부팅시에 자동으로 MySQL 을 실행시켜주는 자동 스타트 설치 스크립트 파일입니다. 나머지 하나는 설치 방법이 나와있는 ReadMe 파일입니다. 2가지 설치 파일 모두 설치하기 쉽게 pkg 형태로 되어있으며 더블클릭함으로써 손쉽게 설치할 수 있습니다. 설치 파일의 파일명은 "mysql-standard-4.0.20-apple-darwin6.8-powerpc.pkg" 입니다.

우선 이를 설치하게 되면 별도의 전형적인 Mac OS X 프로그램의 설치화면이 나타나고 계속 버튼을 눌러서 설치를 진행합니다.
설치를 진행하고 마지막으로 설치할 하드디스크를 선택 후에 다시 계속 버튼을 누르면 MySQL 4.0이 설치되게 됩니다.
이로서 모든 MySQL 설치는 끝난 것입니다. 이제는 MySQL 을 사용하기 위해서 별도의 셋팅작업을 진행해주어야 합니다. MySQL 의 셋팅은 Terminal 프로그램에서 해주어야 합니다. Terminal 프로그램을 "응용프로그램" 폴더 내에 있는 "유틸리티" 폴더에 위치해 있습니다. Terminal 프로그램 실행시킨 후에 먼저 MySQL 이 설치되어있는 폴더로 이동해야합니다. 따라서 Terminal 프로그램 화면에서 다음과 같이 입력하시기 바랍니다.
cd /usr/local/mysql
그럼 해당 폴더로 이동을 하게 됩니다. 그리고 다시 다음과 같이 입력을 합니다.
sudo chown -R mysql data/
그럼 암호를 물어볼 것이며 암호는 사용하는 여러분의 관리자 계정의 암호를 넣으시면 됩니다. 그런 후에 다시 다음과 같이 입력합니다.
sudo echo
그리고 이제는 다음과 같이 입력합니다.
sudo ./bin/mysqld_safe &
이렇게 되면 MySQL 을 실행하게 됩니다. 테스트를 위해서는 다음과 같이 입력을 해보시기 바랍니다.
/usr/local/mysql/bin/mysql test
그럼 다음 그림과 같이 테스트로 로긴이 가능하게 됩니다.
MySQL 을 설치하고 나서는 매번 cd /usr/local/mysql 을 입력해서 해당 디렉토리로 이동을 해주어야 합니다. 이것이 많이 귀찮을 수 있는데요. 어느 폴더건 MySQL 을 실행시키고 사용하기 위해서는 다음과 같이 해주면 됩니다.

Mac OS X 10.2 버젼일 경우
echo 'setenv PATH /usr/local/mysql/bin:$PATH'
>> ~/.tcshrc
Mac OS X 10.3 버젼일 경우
echo 'export PATH=/usr/local/mysql/bin:$PATH'
>> ~/.bash_profile
위와 같이 2가지 차이가 있는 것은 기본 쉘 지정이 10.2와 10.3이 다르게 되어있기 때문입니다. 물론 10.3에서도 터미널 프로그램의 환경설정을 통해서 tcsh 쉘을 사용할 수 있습니다.

여기까지가 하면 모든 설치와 셋팅이 끝난 것이며 이제는 MySQL 을 사용하시면 됩니다.

위의 홈페이지에서는 지금까지 설명드린 MySQL 사용 뿐 아니라 Mac OS X 에서 PHP 사용에 대한 내용도 같이 링크되어있으며 별도의 Discussion 게시판이 있어서 Mac OS X 에서 MySQL 과 PHP 사용에 대한 많은 사용자들의 글을 보고 참조할 수 있습니다. Mac OS X 에서 MySQL 과 PHP 를 이용하여 홈페이지를 구축하거나 해당 툴을 사용하려는 분들에게는 많은 도움이 될 것입니다.

*MySQL 의 사용법에 대해서는 인터넷의 검색 사이트에서 확인할 수 있는 강좌 사이트들을 이용해보시기 바랍니다. 너무 많은 사이트들이 있어서 특별히 추천해드리기는 어렵군요..^^;;

이제 MySQL 설치는 끝났으니 실질적은 프로그램을 만들어 보는 작업을 하도록 하겠습니다. 그리고 주소록 프로그램을 위한 MySQL 의 데이타베이스 생성과 유저 및 테이블 생성에 대해서는 뒤에 데이타베이스의 설계와 생성 부분에서 해보도록 하겠습니다. 자 그럼 시작해 볼까요?

이번 예제는 주소록 프로그램을 만들기 위한 데이타베이스 설계를 하는 것입니다. 프로그램을 하나 만들기 위해서는 그냥 되는 것이 아니라 필요한 용도나 항목, 그리고 인터페이스 등을 미리 염두해 두고 외부적으로는 화면의 인터페이스와 내부적으로는 기능이나 데이타베이스에 대해서 설계를 해야합니다. 그리고 외부적인 부분과 내부적인 엔진들과 적절하게 연동시키는 것도 잘 생각해 두어야 합니다. 좀 더 효율적으로 이러한 작업을 시작하기 위해서는 메모장이나 연필과 종이를 이용해서 그림도 그려보고 생각해두었던 내용들을 정리해 나가면서 설계를 하는 것이 중요합니다. 그냥 생각만으로 끝내면 매일매일 프로그램을 만들때마다 새로운 생각이 들기 때문에 오히려 정리되지 못한 프로그램을 만들 수도 있고 완성을 시키지 못하는 경우도 많이 생기기 때문입니다. 따라서 정리하고 확인하는 습관을 들이는 것이 중요하고 또 자신만의 스타일을 만드는 것이 중요합니다. 그럼 하나하나 시작을 해보도록 하죠.

우선 이번 예제에서 만들어볼 프로그램의 기능에 대해서 정리를 해보도록 하겠습니다. 여러가지 많은 기능을 만들어 넣을 수 있겠지만 예제는 예제이니만큼 기본 기능에 충실한 예제를 만들어 보도록 하겠습니다. 따라서 다음과 같은 기능이 필요할 것이므로 간략하게 정의를 해보도록 하겠습니다. 그리고 데이타베이스를 설계하기 위해서는 우선 기능에 대한 대략적인 정리가 되어있어야 합니다. 기능 정의가 우선 어느정도 머리에 그려지면 필요한 데이타가 무엇무엇이 되겠구나라고 확실하게 떠오르기 때문이지요. 따라서 항상 데이타베이스를 설계하기 전에 어떤 프로그램을 만들 것이며 어떤 기능이나 어떤 인터페이스 등을 사용할 것인지 머리에 그려본 다음 필요한 내용을 어떻게 저장하고 관리할지 생각한 다음에 데이타베이스를 설계하시기 바랍니다. 그럼 기능에 대해서 생각해보도록 하죠..^^;;

- 데이타 보기
a. 데이타 보여주기 기능 : 이름, 이메일, 핸디폰, 전화번호를 보여주기로 합니다. 정의하기 나름이지만 모든 정보를 한번에 보여주기는 어렵습니다. 자세한 정보는 별도의 입력창이나 상세보기 기능을 넣어야 겠지요.

b. 데이타 검색 기능 : 이름, 이메일, 핸디폰, 전화번호 등을 통하여 검색을 할 수 있도록 합니다. 이름 한가지로만 검색기능을 넣으면 나중에 동명이인이 여러명일 경우 검색이 어려워질 수 있고, 전화번호를 보고 검색해야하는 경우가 많기 때문에 다양한 검색 옵션을 줘서 검색할 수 있도록 하겠습니다. 검색의 주 기능은 SQL 문에서 where 절을 이용한 검색이 될 것이며 해당 문자가 아닌 비슷한 문자만 들어가도 검색이 되게 할 것입니다. 이는 SQL 문의 Like 기능을 이용하면 쉽게 기능을 구현할 수 있습니다. 예를 들자면 "키스맥" 이라는 이름을 찾으려고 한다면 "키스맥"이라는 글씨를 모두 넣어서 검색하는 것이 아니라 "키스" 또는 "맥", "스" 라는 문자만 입력을 해서 검색을 해도 검색되게 하는 것을 말합니다.

c. 그룹별 보기 기능 : 데이타는 단일 데이타 외에도 그룹별도 데이타를 볼 수 있도록 할 것 입니다. 그럼 별도의 그룹을 구성할 수 있고 하나의 데이타를 여러 그룹에 포함 시킬 수도 있겠죠. 그럼 친구, 회사, 기타 등으로 그룹화하여 데이타를 관리하고 볼 수 있으므로 좀 더 효율적인 데이타 검색기능을 제공할 수 있습니다. 그룹 기능은 주소록에서 잘 사용하면 아주 좋고 사용하지 않으면 무용지물인 기능이긴 합니다. 하지만 Drawer 윈도우를 활용도 해보고 한번 만들어 보도록 하겠습니다.

- 데이타 관리
a. 데이타 입력 기능 : 주소록 데이타를 입력하도록 합니다. 주소록 데이타는 이름, 이메일, 핸디폰, 집전화번호 외에도 주소, 기타 설명등을 넣을 수 있도록 합니다. 자세한 입력 내용에 대해서는 뒤에가서 다시 정의해보도록 하겠습니다.

b. 데이타 삭제 기능 : 데이타를 삭제할 수 있도록 합니다. 데이타는 하나하나 삭제 및 선택된 여러개의 데이타를 지울 수 있도록 할 것 입니다.

c. 데이타 보기/수정 기능 : 검색 기능에서는 모든 데이타를 넣기 힘들기 때문에 자세한 상세보기가 필요할 경우가 많습니다. 이 기능은 데이타 입력 기능시에 나타나는 입력 윈도우를 통해서 구현 될 것 입니다. 즉 입력 윈도우를 통해서 상세 보기 기능을 구현할 경우 동시에 수정을 같이 할 수 있게 됩니다. 수정시에는 데이타의 변화에 따른 변화값을 갖고 있어야 합니다. 필자는 보통 필드의 내용이 바뀌거나 다른 선택을 하여 내용이 바뀌게 되면 별도의 EditValue 라는 Boolean 형의 데이타를 이용하여 수정이 된 것을 확인하고 새롭게 내용을 바꾸어 줍니다. 데이타 수정시에는 화면에 해당 데이타가 있을 경우 같이 변경해줘야할 필요가 있습니다.

d. 그룹 관리 기능 : 그룹화 기능도 넣어야 할 것이기 때문에 데이타의 입력이나 삭제 처럼 그룹 데이타도 별도로 입력 및 수정, 삭제등의 기능이 이루어 져야 합니다. 그룹의 데이타는 대부분 그룹명만 갖게 되기 때문에 간단하지만 기능을 동일하게 수행되어야 합니다.

- 인터페이스 구현
a. 기능 버튼 : Mac OS X 를 기반으로 하여 Mac OS X 에 친숙한 기능들을 이용하여 인터페이스를 구현할 것 입니다. 기능키들은 별도의 버튼콘트롤들을 이용할 수도 있겠지만 ToolbarItem 콘트롤을 이용하여 데이타의 입력이나 삭제, 수정 등을 구현하도록 하겠습니다.

b. 단축키 : 화면의 아이콘을 이용한 기능 버튼들은 똑같은 기능을 이루어주는 단축키가 구현되어야 합니다. 따라서 별도의 기능 메뉴를 적절한 위치에 배치하고 단축키들을 제공할 것입니다. 예를 들면 새로운 입력은 Command + N 키가 되겠죠.

c. Contextula 메뉴 이용 : 매킨토시에는 기본적으로 하나의 버튼만들 제공합니다. 하지만 2개의 버튼을 갖고 있는 마우스도 기본적으로 지원하기 때문에 두번째 버튼인 오른쪽 버튼을 이용하여 나타내는 Contextual 메뉴 기능을 구현 할 것 입니다. Contextual 메뉴는 Windows 에서는 아주 많이 활용이 되는 기능이지만 맥에서는 사용하는 사람만 사용하는 경우가 많습니다. 메뉴나 단축키를 사용하는 경우가 더 많죠. 하지만 맥에서도 Contextual 메뉴를 잘 사용하는 유저분들이 최근에는 많습니다. Mac OS X 의 기본 기능도 Contextual 메뉴를 잘 활용할 수 있도록 최근에 많이 향상이 되었습니다. 따라서 앞으로 프로그램을 만들 경우 만들어 줄 수 있는 부분에는 항상 Contextual 메뉴 기능을 넣어주는 것이 편리한 인터페이스를 구현하는 것이 되는 것입니다. 사용자가 사용하기 편한 좋은 인터페이스를 구현하는 것은 만드는 사람 입장에서는 굉장히 힘든 부분이지만 대세를 항상 따라주는 것이 좋습니다. Contextual 메뉴 기능은 최근 기본으로 들어가는 대세중 하나입니다...^^;;

위의 3가지 기능들은 모두 동일한 기능을 제공하기 때문에 동일한 작업을 똑같이 3번 구현해줘야하는 불편함이 있지만 기본 인터페이스 구현을 위해서는 반드시 필요한 부분입니다. 그리고 각각 3번 구현할 필요없이 각 기능들을 하나의 함수로 만들어서 사용하면 좀 더 효율적인 코드를 구성할 수 있습니다. 함수 만드는 방법은 다 아시죠? 이 프로그램을 만들면서 여러가지 함수들을 만들게 될 테니 다시 복습해 보시기 바랍니다.

d. 기본 보기 화면 : 보?화면은 ToolbarItem 버튼들과 Listbox 콘트롤을 이용하?玲念舅?나타내도록 할 것 입니다. ToolbarItem 버튼은 Mac OS X 의 Cocoa 전용 프로그램들이 많이 사용하는 버튼 중 하나입니다. 큰 버튼에 보기좋게 자동으로 위치시킬 수 있으며 사용하기도 편리합니다. 하지만 Windows 용으로 같이 만드시려는 분들은 이 기능을 사용하지 마십시요. Windows 에서는 버튼이 보이지 않게 됩니다. 즉 Mac OS X 전용의 인터페이스 기능입니다. 그리고 Safari 윈도우의 화면 처럼 오른쪽 상단에 검색 필드를 넣어보도록 하겠습니다. Safari 처럼 라운드 형의 검색 필드를 넣기 위해서는 여러가지 편법이 좀 필요합니다. 하지만 간단하게 하기 위해서 기본 EditField 콘트롤을 이용할 것입니다. 기능상에는 전혀 문제는 없답니다..^^;;

e. 데이타 입력 및 삭제 화면 : 데이타 입력 및 삭제 화면은 Mac OS X 의 Sheet 윈도우 기능을 이용할 것입니다. Sheet 윈도우는 메인 윈도우를 벗어나지 않는 차원에서 직관적이면서 편리한 인터페이스를 구성할 수 있습니다.

f. 그룹 윈도우 : 그룹만들 보여주는 그룹 윈도우는 별도의 Listbox 콘트롤을 이용할 수도 있겠지만 Group 기능을 별도로 사용하지 않는 사용자들도 있을 것입니다. 다라서 이를 위해서 Drawer 윈도우를 이용하여 Mac OS X 에 친숙하고 Sheet 윈도우와 같은 장점을 제공해주는 Drawer 윈도우를 사용하여 그룹데이타를 보여주도록 하겠습니다.

g. 검색 기능 구현 : EditField 를 이용하여 내용을 검색하도록 합니다.
검색 필드내에서 검색 용어를 치면 해당 검색어에 포함되는 주소리스트는 모두 나타나도록 하고 검색 된 내용은 사라지게 합니다. 검색 내용이 사라지는 것이 싫으면 검색 내용이 전체 선택되도록 하는 것도 하나의 방법이겠죠. 자신의 스타일에 맞게 하는것이 좋을 것 입니다. 어떤 말인지 정확히 와닿지 않으시는 분들은 뒤에 검색 기능을 만들 때에 금방 이해가 되실 것 입니다.

그럼 이제 데이타베이스를 설계해보도록 하겠습니다. 보통 데이타베이스의 설계는 앞서 했었던 기능 설계등을 기반으로 하여 필요한 항목들을 추가해서 설계하게 됩니다. 데이타베이스의 테이블이나 그 테이블에 포함되는 필드들은 주소록 프로그램이라는 기능을 위해 필요한 필수 기능 외에도 인터페이스를 위한 데이타를 넣을 수 있는 테이블이나 필드를 구성할 수도 있습니다. 그리고 실질적인 주소록 데이타 외에도 이 주소록을 관리하기 위해 필요한 숨어있는 값들을 구성하여 설계할 수도 있습니다.

보통 데이타베이스 설계는 처음에 한 것을 기반으로 하여 프로그램을 만들어 가면서 또는 버젼업 해 가면서 추가되거나 필요없는 부분들은 삭제되기도 합니다. 따라서 지금 하는 설계는 필자가 원고를 위해서 미리 모두 설계를 한것이지 꼭 처음에 모든 설계를 해야하는 것은 아닙니다. 처음에 모든 설계를 완벽하게 하면 좋겠지만 그렇게 하기란 정말 쉽지 않기 때문이지요. 데이타베이스 관련 업체들도 상업적인 프로그램을 만들 때 수많은 데이타베이스 설계의 수정과정을 거치게 됩니다. 그래도 완벽하게 되지 않는 경우가 많죠..^^;; 특히 기능이 추가되거나 하면 테이블의 추가나 기존 테이블에서 필드가 추가되거나 삭제되는 경우가 많이 생깁니다. 따라서 처음 기본 설계를 제대로 해두고 기능에 따라서 유동적으로 설계하는 것을 몸에 익히는 것이 제일 중요할 것 입니다. 사실 데이타베이스를 공부하고 익히는 것은 다른 기술에 비해서 좀 쉬운편이라고 말하는 사람이 많지만 데이타베이스를 설계하는 것은 그리 간단한 것만은 아닙니다.

그럼 키스맥 주소록 프로그램을 위한 데이타베이스를 설계해보도록 하겠습니다.

우선 필요한 테이블을 생각해보도록 합니다. 앞서 기능에서 그룹 기능을 넣는다고 했기 때문에 그룹을 위한 Group 테이블이 있어야겠죠. 그리고 주소록이 들어갈 주소록 테이블이 있어야 할 것입니다.
그럼 그룹 테이블을 설계해보도록 하겠습니다.

* 앞서 데이타베이스 시스템 사용은 MySQL 로 한다고 하였습니다. 따라서 RealDatabase 시스템과는 SQL 문이 조금 다를 수 있으니 그 점 참고하시기 바랍니다.

- 그룹 테이블
가. 테이블명 Table Name : GroupList
Group 명을 별도로 관리하는 테이블을 만들기 위해서는 우선 그룹명이 있어야 합니다. 그룹명은 "GroupList" 로 지정하도록 하죠. 물론 이름은 만드는 사람 마음이므로 원하는 이름으로 바꾸어서 사용해도 됩니다. 보통 group_list 식으로 underline 을 사용하는 사람도 있지만 필자는 대소문자를 이용해서 구분하는 방법을 선호합니다.

나. 필요 필드 항목
- GroupName varchar(50): 그룹의 이름을 나타내는 필드가 됩니다. 타입은 varchar 타입으로 했습니다. 이는 영문 50글자 한글 25글자가 들어 갈 수 있다는 것을 나타냅니다. 그룹명이 특별히 25자를 초과하여 입력되는 경우는 많지 않기 때문에 50으로 했습니다. 좀 더 긴 그룹명을 넣고 싶다면 위의 varchar 다음에 오는 숫자(필드 사이즈) 값을 좀 더 증가시키면 됩니다. 하지만 varchar 타입의 최대 크기값은 255 까지이니 255이내로 하셔야 합니다.

- GroupID Int(10) : GroupID 필드는 고유의 GroupID 를 말합니다. 물론 같은 그룹명을 만들기는 어렵겠지만 같은 그룹명을 넣고 싶다면 반드시 이러한 고유 ID 값을 별도로 생성을 해주어야 합니다. 보통 MySQL 데이타베이스 시스템의 AutoIncrement 속성을 이용해서 자동으로 증가하는 방식으로 ID 를 만들어주는 경우가 많은데 필자는 이러한 방식을 선호하지는 않습니다. 편리한데 왜일까요...^^;; ..저도 의문이지만 그냥 ID 값을 SQL 문을 이용해서 Max 값을 구해서 추가하는 방법을 사용합니다. MySQL 의 AutoIncrement 속성을 이용하는 것과 크게 속도나 기능상의 차이는 없고 별도로 ID 값을 구하는 함수를 한번 더 만들어 줘야하는 불편함은 있습니다.

- GroupSEQ Int(10) : Group을 만들면 보통 데이타베이스에서는 만들어진 순서대로 불러오게 됩니다. SQL 문의 Order by 명령어를 사용하면 그룹명을 이용해서 순서대로 불러들일 수 있죠. 하지만 보통 사람들이 관리하는 방법은 그룹명 순으로 불러오기 보다는 선호하는 그룹을 먼저 앞쪽에 놓고 싶어합니다. 따라서 Sequence 의 약자를 사용하는 SEQ 값을 별도로 지정하여 이 순번대로 그룹명을 불러올 수 있도록 할 수 있습니다. 그러기 위해서는 별도의 순번 값을 지정하는 필드가 Group 테이블에 있어야겠죠. 이를 위한 필드가 바로 GroupSEQ 입니다. 이 기능을 사용하면 리얼베이직의 Listbox 콘트롤 기능 중 EnableDragReorder 기능(속성)을 이용하여 그룹의 순번도 바꿀 수 있습니다. 순번 값을 생성되는 그룹명의 숫자와 동일해야하기 때문에 크기를 GroupID 와 같은 10으로 했고 순번을 이용할 때에는 숫자를 많이 사용하기 때문에 정수형인 Int 형으로 설정했습니다.

그룹 테이블은 이정도로만 지정해놓으면 될 것 같습니다. 별도의 타입이나 레벨등을 두어서 어떤 그룹어떤 그룹 식으로 그룹자체를 별도로 나눌 수도 있겠지만 이는 생각있는 독자분들께서는 스스로 한번 해보시기 바랍니다. 필자는 이런 기능은 만들어 놓으면 거의 사용하지 않게 되어서 여기에서는 제외시켰습니다. 그럼 이제 위의 내용을 갖고 MySQL 에서 사용하는 SQL 문을 작성해 보도록 하죠.

다. Group Table 생성 SQL 문

- SQL 작성 문
Create Table GroupList(
GroupName varchar(50),

GroupID Int(10),
GroupSEQ Int(10),
Primary Key (GroupID),
Index Name(GroupID, GroupName, GroupSEQ))

위의 SQL 문을 보면 테이블을 생성하는 것이기 때문에 Create 명령어를 사용한 것을 알 수 있습니다. Table 을 생성하는 것이기 때문에 Create 문 다음에 Table 이라는 목적어가 위치한 것을 알 수 있습니다.

*Database 를 생성할 때에는 Create Database 라는 식으로 붙게 됩니다.

그리고 다음에 GroupList 라는 테이블명이 위치하게 되고 괄호 다음에 테이블에 들어가는 필드 명과 타입, 사이즈가 위와 같은 방식으로 작성을 해주게 됩니다. 마지막에 있는 Primary Key 는 고유의 키 값을 말합니다. 즉 Primary Key 값으로 지정된 GroupID 는 중복된 값을 갖을 수 없게 됩니다. 대신 GroupName 은 동일한 그룹명을 갖을 수 있게 됩니다. Index Name 이라고 지정된 부분은 말 그대로 인덱스를 말합니다. 인덱스라 함은 책이나 다이어리에서 좀 더 빨리 내용을 찾기 위해 미리 지정해놓는 목차와 같은 것을 말하지요. 데이타베이스 시스템에서도 마찬가지입니다. Index 를 지정한 필드는 그 필드를 이용할 시 데이타베이스 시스템에서 별도로 목차와 같은 인덱스를 선언해놓기 때문에 검색조건을 사용하게 되면 더욱 빠르게 검색을 하게 됩니다.

*Index 선언은 데이타베이스 시스템마다 조금씩 차이는 있지만 MySQL 에서는 위와 같은 방식을 사용하면 됩니다. 제가 MySQL 데이타베이스 시스템 전문가가 아니기 때문에 정확한 튜닝등을 위한 좀 더 효율적인 Index 설정 방법은 잘 알지를 못합니다. 자세한 내용을 MySQL 메뉴얼등을 참조하시기 바랍니다.

이제 그룹테이블을 만들기 위한 준비를 모두 마쳤으니 주소록 테이블을 만들어 보도록 하죠.

- 주소록 테이블

가. 테이블명 Table Name : AddressList
주소록 테이블 명은 AddressList 라고 정하도록 하겠습니다. 앞서 만들어 본 GroupList 와 같이 동일한 방식으로 정하면 됩니다. 필자는 해당 테이블의 특성을 쉽게 알 수 있는 내용을 테이블명으로 하고 뒤에 List 라는 이름을 꼳 붙입니다. 그래서 List 가 붙는 이름은 테이블이라는 것을 알 수 있죠. 그리고 데이타베이스에는 뒤에 DB 라는 이름을 붙이구요. 그리고 필드명에는 뒤에 List 나 DB 라는 이름을 거의 붙이지 않습니다. 왜냐하면 테이블이나 데이타베이스 명과 혼동될 수 있기 때문입니다.
여러분들도 여러분들만의 규칙을 만들어서 사용해보시기 바랍니다. 많은 프로그램을 만들때 이러한 일관화되고 통일된 규칙은 프로그램의 개선이나 버그 수정등의 유지보수시에 굉장히 편리함을 제공해 줍니다. 여튼 이러한 필자만의 규칙을 따라서 주소록 테이블명은 AddressList 로 정했습니다.

나. 필요필드 항목
필요필드 항목들은 다음과 같은 항목들을 포함하게 됩니다. 기본 주소록을 위한 내용들을 포함시켰으며 이메일이나, 홈페이지 주소 등을 넣었습니다. 기타 다른 내용들도 넣었습니다. 이곳에 있는 내용들 외에도 독자분들의 취향이나 주소록 관리시에 필요한 사항들을 넣어도 상관은 없습니다. 다만 데이타 입력시와 수정시의 인터페이스와 기록 코드 등에 그 해당 필드의 내용을 넣어야 합니다. 그 추가 내용을 넣고 빼는 것은 아래의 내용을 해보면 쉽게 하실 수 있을 것 입니다. 그럼 주소록 테이블의 상세 필드에 대해서 알아보도록 하죠.

- AddressID Int(50) : AddressID 필드는 GroupList 테이블에서 GroupID 와 같이 고유의 주소록 ID 를 갖게 됩니다. 주소록 데이타는 특히 이 ID 값이 중요합니다. 왜냐하면 기준으로 새울 수 있는 고유의 내용이 일반 주소록 내용에는 없기 때문이지요. 주민등록 번호등을 이용해도 되지만 사람들의 주민등록 번호를 쉽게 알 수는 없습니다. 또한 이름과 같은 내용은 동명이인이 많을 수 있으며 전화번호등은 쉽게 바뀌기 때문이지요. 따라서 이러한 고유의 ID 값을 이용해서 절대로 바뀌지 않는 데이타를 이용해서 해당 주소록을 구분하도록 해주는 것이 중요합니다. 데이타베이스의 테이블 설계시 이러한 고유 ID 를 지정하는 일은 굉장히 많고 일반적이기 때문에 항상 염두해 두시기 바랍니다. 이번 예제에서 만들어볼 AddressID 의 데이타 타입과 크기는 정수형으로 하였으며 자리수 크기는 넉넉하게 50자리수로 정했습니다.

- GroupName TinyText : GroupName 은 Group의 이름을 저장해주는 필드입니다. 주소록에 해당하는 별도의 Group 테이블을 만들어서 사용하는 것이 더 일반적인 방법이지만 주소록 안에 이러한 필드를 넣어서 해당 그룹을 넣는 것도 하나의 편법으로 사용되는 편입니다. 엄청나게 많은 데이타를 다루기는 어렵지만 몇 개의 그룹명을 넣어서 관리하는 데에는 크게 문제는 없습니다. 예전에 만들었었던 퀵다이어리(주소록 및 이미지, 메모, URL 등을 관리해주는 프로그램이었습니다. 기억하시는 분들이 계실런지요..^^;;)라는 프로그램에서 이러한 방식으로 주소록이 포함되는 그룹을 관리 했었습니다. 이 방식을 쓰면 단순무식하지만 한 주소가 여러 그룹에 속할 수 있도록 손쉽게 만들 수 있습니다.

- Name varchar(50) : Name 필드는 개인 이름뿐 아니라 업체명을 넣을 수도 있겠습니다. 업체와 개인의 차이는 뒤에 Kind 필드를 만들어서 구분을 할 것입니다. 개인 이름이나 업체명, 외국인 이름등이 올 수 있기 때문에 넉넉하게 필드 사이즈는 50자리(50 Bytes) 로 지정하였습니다.

- Sex Int(3) : 성별은 남, 여, 기타 등의 3가지 값을 갖게 될 것 입니다. 기타라는 성별이 들어가는 이유는 업체명을 입력할 경우에는 남.여라는 성별이 필요없게 되기 때문이지요. 따라서 업체명을 입력할 때에는 기타의 3가지 값을 갖게 됩니다. 필드의 타입은 정수형 값 0, 1, 2 식으로 갖게 할 것이며 0이면 남, 1이면 여, 2면 기타를 나타내도록 하겠습니다.

- CellPhone varchar(25) : CellPhone 은 핸드폰 전화번호를 말합니다. 자리수는 25자리로 했는데 이정도면 왠만한 핸드폰 전화번호는 다 기록 할 수 있을 것입니다. 외국에 전화걸 때에는 몇자리가 필요한지 정확히 알수 없어서 25자리로 넉넉히 했지만 더 필요하다 생각되면 사이즈는 더 크게 잡으셔도 됩니다. varchar 타입은 크기와는 상관없이 제한된 크기 이내의 데이타는 모두 자유롭게 입력할 수 있기 때문이죠.

- Phone varchar(25) : Phone 필드는 집전화번호를 기록하기 위한 필드입니다. 보통 전화번호 필드를 핸드폰, 집전화, 사무실 전화등으로 나눌 수 있지만 여기서는 그냥 핸드폰과 집전화 번호만을 두었습니다. 사무실 전화번호도 별도로 기록해야한다면 OfficePhone 식으로 별도의 필드를 새로 하나 더 만들면 될 것입니다.

- Email TinyText : Email 필드는 필드명과 마찬가지로 이메일을 기록하는 부분입니다. 이메일은 1개가 아니라 2~3개 부터 10개 이상을 갖고 있는 분들도 있습니다. 따라서 크기를 넉넉하게 잡았습니다. MySQL 에는 TinyText 라는 필드타입이 있는데 이는 이름 그대로 작은 Text 데이타를 다룰 때 사용합니다. 이 타입은 Varchar 과 마찬가지로 최대 255문자까지 기록할 수 있습니다. 따라서 TinyText 대신에 varchar 타입을 사용해도 가능합니다.

- URL TinyText : URL 은 홈페이지를 갖고 있는 사람이나 업체 정보를 입력할 때 사용됩니다. URL 같은 경우도 하나만 있는 경우보다는 홈페이지 관련일을 하는 유저분들은 최소 3개 이상의 URL 을 갖고 있는 경우가 많습니다. 자신의 개인 홈페이지, 회사 홈페이지, 블로그만 해도 3가지 정도가 되겠죠...^^;; 여튼 URL 은 많이 입력하는 경우는 필자의 경우는 없더군요. 하지만 넉넉히 공간을 마련해 놓는 것이 좋습니다.

- ZipCode varchar(15) : 이는 우편번호를 입력하는 부분입니다. 한국의 경우에는 우편번호 필드의 사이즈는 7바이트(7개의 문자)이면 가능하지만 매킨토시 유저들은 외국의 주소를 갖고 있는 경우가 있어서 15바이트로 해주었습니다. 외국의 경우에는 정확하게 몇개의 우편번호를 적는지 정확히 알지 못해서 넉넉하게 15바이트로 해주었습니다.

- Address TinyText : 주소는 한가지로 정했습니다. 집주소던 회사주서던 한가지만 적도록 했죠. 그로고 보니 우편번호도 한가지군요..^^;; 솔직히 주소는 여러개를 입력하는 경우는 많지 않습니다. 예전에 제가 만들었었던 퀵다이어리 프로그램에는 집주소와 회사주소 2가지를 입력하도록 했었습니다. 그런데 거의 한가지만 사용하게 될 뿐 아니라 주소를 알아내는 것 조차도 어렵더군요. ^^;; 회사 주소의 경우는 명함을 받으면 쉽겠지만 집 주소를 알아내기란 정말 하늘의 별 따기였습니다. 여담이지만 퀵다이어리에는 주민등록 번호 란도 있었는데 여기에 데이타를 넣어보겠다고 친구들이나 아는 사람들에게 주민등록 번호를 물어보곤 했었죠. 생년 월일등을 알기 위해서 적는다고 둘러대기는 했지만 이상한 사람 취급을 받거나 신용정보를 남용하려는 파렴치범으로 몰리기도 했었습니다...^^;;
여튼 필요 없는 내용은 과감히 단순화 시키거나 없애 버리는 것도 좋다고 개인적으로 생각하고 있습니다..^^;;

- Job varchar(50) : 이 곳은 직업을 적는 곳입니다. 직업은 단순히 어떤 직업 등을 적는 곳만은 아닌 것 같습니다. 예전에 직업란을 적었을 경우는 직업만 적기 보다는 이곳에 회사명을 같이 적는 경우가 생기더군요. 예를 들어서 "키스맥의 부장님" 뭐 이런식이죠. 그래서 넉넉하게 50바이트(50개의 영문자, 25개의 한글 문자)로 정했습니다. 이 이상 필요하지 않거나 더 많이 필요하다고 생각하시면 사이즈를 조절하면 될 것 입니다.

- Kind int(1) : 일반적으로 개인, 업체, 기타 식으로 하여 3가지 타입을 두면 됩니다. 3가지 값을 갖는 것이기 때문에 Int형으로 하였고 개인은 0, 업체는 1, 기타는 2번 값을 갖도록 내정(?)하죠. 성별값을 나타내는 것 처럼 같이 스타일로 하되 사용되는 경우만 다르고 필드명이 다르다고 보면 되겠습니다.
이렇게 개인, 업체, 기타 식으로 성별 되에 따로 두는 이유는 관공서들 전화번호를 적을 때나 검색시에 편리하더라구요. 아는 회사나 업체는 업체로 하고 관공서나 배달 시켜먹는 피자집, 치킨 집등은 기타로 해 놓으면 편리하실 것입니다.

- ID varchar(50) : ID 는 일반적으로 알려진 아이디를 적어 놓는 것 입니다. 인터넷 시대에서 사람들 나타내는 가장 대표적이고 외우기 쉬운 것이 아이디이기 때문이지요. 그래서 아이디를 적는 곳을 해 놓았습니다. 다음에 나오는 messenger 과는 좀 다릅니다. 이곳에는 일반적인 아이디를 적어놓는 곳이라 생각하면 됩니다. 예를 들어서 저는 다른 인터넷이나 메신저에는 여러가지 아이디가 있지만 항상 미쉐린님이라 불립니다. 이런 아이디를 적는 곳이라 생각하면 됩니다.

- Messenger varchar(100) : Messenger 필드는 iChat 이나 MSN, ICQ, AOL, Yahoo 메신저등에서 사용되는 아이디를 적는 곳입니다. 예를 들어서 MSN 에서 사용되는 아이디는 뒤에 @hotmail.com 등이 붙는 이메일 주소가 사용됩니다. 이러한 메신저에서 사용되거나 등록할 따 사용되는 아이디들을 적어주시면 됩니다. 사이즈는 100바이트로 하였습니다. 여러개의 메신저 아이디를 사용하는 경우가 많기 때문에 넉넉하게 사이즈를 잡았습니다.

- ETC TinyText : ETC 는 일반적인 정보외의 다른 내용을 적는 부분입니다. 이곳에는 아무런 내용이던 자유롭게 기록하면 됩니다. 다른 프로그램들도 보면 메모나 기타 이것저것 내용을 적는 곳이 있죠. ETC 필드는 그러한 용도로 사용됩니다. 긴 내용을 넣을 수는 없고 255문자만 간략하게 메모를 남길 수 있도록 TinyText 타입으로 하였습니다. 좀 긴 내용을 넣고 싶다면 그냥 Text 나 LongText 타입으로 필드타입을 정하시기 바랍니다.

다. 주소록 테이블 생성 SQL 문
그럼 이제 위의 필드 내용을 이용해서 MySQL 에서 생성할 SQL 문을 앞서 GroupTable 을 만들었던 것처럼 만들어 보도록 하겠습니다.

- SQL 작성 문
Create Table AddressList(
AddressUID Int(50) not null,
GroupName TinyText,
Name varchar(50),
Sex Int(30),
CellPhone varchar(25),
Phone varchar(25),
Email TinyText,
URL TinyText,
ZipCode varchar(15),
Address TinyText,
Job varchar(50),
Kind Int(1),
ID varchar(50),
Messenger varchar(100),
ETC TinyText,
Primary Key (AddressUID),
Index Name(AddressUID, Name))
위와 같이 하면 주소록 테이블인 AddressList 의 SQL 문 작성이 끝나게 됩니다. 내용이 많아 보이지만 구조는 간단하며 고유값을 갖는 AddressUID 가 주소록 테이블에 기록되는 데이타를 구분해주는 유일한 값이라는 것을 꼭 기억해 주시기 바랍니다. 아~!..뒤에 있는 인덱스는 검색을 위한 부분이라 설명을 했었습니다. 즉 Name 필드의 내용을 검색시에 좀 더 빠르게 검색하기 위해 Index 를 구성한 것입니다. 전화번호나 이메일, 아이디 등의 내용 검색시에 좀 더 빠른 검색을 위해서는 Index Name 뒤에 있는 괄호 부분에 해당 필드명을 넣어주면 되겠습니다.^^;;

*필자가 MySQL 전문가가 아니기 때문에 좀 더 전문적이거나 좋은 인덱스 방법을 알지는 못합니다. 좀 더 자세한 MySQL 의 빠른 검색방법은 MySQL 에 관한 자료를 참조하시기 바랍니다...^^;;

그럼 이제 실질적인 데이타베이스를 생성하고 그 안에 테이블을 만들어 보도록 하겠습니다.먼저 MySQL 에 접속하는 것이 필요합니다. MySQL 데이타베이스에 접속을 해야 실질적으로 MySQL 의 모든 기능을 사용할 수 있기 때문이지요. 앞서 처음에 MySQL 을 설치하고 바로 사용할 수 있도록 설정했기 때문에 바로 접속을 해보도록 하겠습니다.

MySQL 을 다루기 위해서는 몇가지 방법이 있습니다. 그중 대표적인 방법이 데이타베이스 관리 프로그램을 사용하는 방법이 있고 다음으로는 터미널(Terminal) 프로그램을 사용하는 것입니다. Mac OS X 에도 리눅스나 일반적인 유닉스 프로그램처럼 터미널을 사용할 수 있는 터미널 프로그램이 있습니다. 응용프로그램 폴더 안에 유틸리티 폴더를 보면 알 수 있죠. 그 안에 터미널 프로그램이 있습니다.이 프로그램을 MySQL 을 설치할 때 처럼 찾아서 실행하시기 바랍니다.

터미널 프로그램이 실행됐으면 이제는 MySQL 접속을 해보도록 하겠습니다.

MySQL 에 접속하기 위해서는 몇가지 명령어를 사용해야 합니다. 터미널 프로그램에서 다음과 같이 하시기 바랍니다.
mysql -u root -p
그러면 패스워드를 넣으라는 메세지가 나오고 여기에서는 패스워드를 넣지는 말고 바로 리턴이나 엔터키를 칩니다. 그럼 다음과 같은 화면 처럼 MySQL 에 접속이 가능할 것입니다.
잠시 위의 명령어를 살펴보도록 하겠습니다. 우선 MySQL 에 접속하기 위해서는 MySQL 이라는 명령어를 사용합니다. 실행프로그램이라고 해도 무방하겠죠..^^;; 리눅스에서는 실행시에 ./MySQL 식으로 사용하시면 됩니다. 하지만 MacOS X 에서는 그냥 MySQL 이라 하시면 됩니다. 그리고 뒤에 -u 옵션뒤에는 아이디를 넣어서 유저가 접속한다는 것이며 -p 옵션은 패스워드를 넣는다는 옵션입니다. 패스워드는 위의 명령어를 치면 나오기 때문에 그곳에서 입력하면 됩니다. 패스워드 입력시에는 화면에 입력된다는 표시가 하나도 나타나지 않습니다. 따라서 오타가 나게 되면 다시 입력을 하시는 것이 좋습니다. 올바른 아이디와 암호를 넣으면 "mysql>" 이라는 프롬프트 표시와 함께 접속이 되게 됩니다. 처음에는 별다른 아이디는 없기 때문에 다른 아이디를 입력할 수 없습니다. 하지만 root 계정은 처음에 생성이 되어있어서 root 라는 계정을 사용한 것이며 암호는 처음 사용시에는 설정이 되어있지 않기 때문에 그냥 엔터를 쳐서 접속을 한 것 입니다. 다른 아이디를 생성하거나 root 의 암호를 바꾸기 위해서는 나중에 조금씩 설명할 수도 있겠지만 인터넷이나 별도의 MySQL 참고서를 참조하시기 바랍니다...^^;;

*다시한번 말씀드리지만 저는 MySQL 전문가가 아니기 때문에 MySQL 을 사용하는 많은 부분에서 부족한 부분이 있음을 염두해 두시기 양해를 해주시기 바랍닏...^^;;;;;;;;;;

그럼 예제를 위해서 위와 같이 접속이 됐으면 다음과 같이 해보시기 바랍니다.
show databases;
위의 명령어를 입력하고 리턴키를 치면 현재 처음에 생성되어있는 데이타베이스들이 나타날 것 입니다.평상시에 MySQL 데이타베이스 내에 어떤 데이타베이스가 생성이 되어있는지를 확인하기 위해서는 위의 명령어를 자주사용하기 때문에 잘 익혀두시기 바랍니다. 명령어도 간단하니 쉽게 익히실 수 있을 것 입니다.

위의 그림에서 처럼 show databases; 명령어를 사용하면 데이타베이스 리스트가 나타나게 됩니다. 위의 그림에서는 여러가지 데이타베이스 이름들이 나열되어있지만 앞서 처음에 안내를 해드린 방법으로 처음 설치를 하고 접속 후에 데이타베이스 리스트를 보게 되면 mysql 과 test 데이타베이스만 나타나거나 mysql 데이타베이스만 나타날 것 입니다.

*다른 데이타베이스가 그림에 나타나 있는 것은 제가 작업하고 있는 데이타베이스 시스템들이 같이 나타나기 때문입니다. 따라서 화면과 같은 데이타베이스 시스템이 나타나지 않는다고 해서 당황해 하지는 마시기 바랍니다..^^;;

위와 같이 된다면 이제 MySQL 을 사용할 수 있는 모든 준비는 된 것입니다. 그럼 이제 데이타베이스를 만드는 것을 해보기로 하겠습니다.

우선 MySQL 에서 Database 를 만들어 보겠습니다.
다음과 같은 명령어를 MySQL 이 접속되어 있는 상태에서 터미널 화면에 입력하시기 바랍니다.
Create database kissmacAddressDB;
Create database kissmacAddressDB; 명령어를 입력하고 나서 리턴키나 엔터키를 누르게 되면 위와 같은 화면이 나타나게 됩니다. OK 라고 결과 문장이 나타나면 제대로 데이타베이스가 만들어 진 것입니다. 그럼 다시 Show databases; 명령어를 입력하고 리턴키나 엔터키를 입력하시기 바랍니다. 그럼 만들어진 kissmacAddressDB 데이타베이스를 확인할 수 있습니다.
새로운 데이타베이스가 만들어진 것을 확인했나요? 그럼 된 것 입니다. 그럼 이제 데이타베이스 작업을 만들어 주는 것에 대해서 설명해 보도록 하겠습니다. MySQL 은 설치된 시스템 하나로 여러개의 작업을 구분하여 데이타를 다룰 수 있습니다. 즉 가장큰 단위의 데이타베이스 작업을 만들 때 Create 문을 이용하여 Database 를 만들어 주는 것입니다. 이것은 다른 말로 Database job 이라고 합니다. 보통 다른 MySQL 이나 데이타베이스 관련 유틸리티등을 보면 job 이름이나 Task 이름을 넣으라고 합니다. 이럴 때에 지금과 같이 만들어준 Database 이름을 넣어주면 됩니다. 이 Database 를 기준으로 하여 그 안에 실질적인 데이타가 저장되는 테이블들이 생성이 되는 것입니다. 즉 다시 말하면 MySQL 을 사용할 경우 데이타베이스 작업의 가장 큰 단위가 되는 것이 바로 Database Job 또는 Task 명인 것입니다.

위의 화면이나 앞서 터민러 화면에서 여러개의 Database 이름이 나타난 것을 알 수 있죠? 그것은 프로그램마다 별도의 Database 를 사용하기 때문에 다른 데이타베이스 작업을 생성하여 데이타를 구분하도록 해준 것입니다. 쉽게, 간단히 다시 말하자면 그룹과 같은 개념이라고 보면 되겠습니다..^^;; 리얼베이직의 MySQLDatabase 클래스 속성중 DatabseName 이라는 속성이 있습니다. 이 속성에 해당되는 값이 바로 이 데이타베이스 이름이라는 것을 알아두시기 바랍니다.

리얼베이직의 예를 들어보니 금방 이해가 되죠? 그래도 이해가 되지 않으면 별도의 메일(michelin@shinbiro.com) 을 주시기 바랍니다...^^;;
위와 같이 Database 를 생성했으면 이제는 그 안에 주소록 프로그램을 위한 Table 을 만들어 보도록 하겠습니다.

우선 Table 을 생성하기 전에 사용하는데 필요한 Database 를 지정해 줘야 합니다. 앞서 했던 작업은 사용할 데이타베이스를 생성한 것일 뿐 사용하는 데이타베이스를 지정하지는 않았기 때문입니다. 그럼 지정을 하기 위해서는 다음과 같이 터미널에서 명령어를 입력하시기 바랍니다.
use kissmacAddressDB;
위의 명령어는 kissmacAddressDB 라는 데이타베이스 작업을 사용한다라고 설정해주는 것 입니다.
위의 명령어가 제대로 입력이 됐다면 다음과 같은 터미널 그림에서 확인할 수 있듯이 "Database changed" 라는 내용을 확인할 수 있습니다.
혹시 생성되지 않은 데이타베이스를 입력했을 경우는 다음과 같은 화면처럼 에러메세지를 확인할 수 있습니다.
ERROR 1049: Unknown database 'kissmacaddressdb2' 라는 에러메세지가 위의 화면에서 나타났을 것입니다. 이는 kissmacAddressDB2 라는 데이타베이스는 생성되지 않았기 때문입니다.

*프로그램을 만드는 작업이나 이러한 터미널 명령을 입력하는 모든 경우는 오타에 민감하니 오타를 주의하시기 바랍니다..^^;; 빠른 타이핑 보다는 오타없는 느린 타법이 더 좋을 때가 많다는 것을 기억하시기 바랍니다.

여튼 해당 데이타베이스가 있고 그 안에 테이블을 만들고 사용을 하기 위해서는 터미널 상에서는 use 명령어를 이용해서 해당 데이타베이스를 선택해줘야 한다는 점을 기억해두시기 바랍니다.

이제 위 처럼 데이타베이스를 선택했다면 해당 데이타베이스 내에 우리가 앞서 만들었었던 SQL 문을 이용하여 테이블을 생성해 보도록 하겠습니다.

그럼 이제 테이블을 생성해보도록 하죠. 데이타베이스도 선택이 되어있으니 바로 앞서 만들었던 SQL 문 중에 Group 테이블인 GroupList 테이블을 만들어 보도록 하겠습니다. 그럼 이제 터미널 윈도우 상에서 앞서 생성했던 SQL 문을 그대로 입력해 봅니다. SQL 문을 입력 후에 끝에 ; 을 꼭 넣어줍니다. SQL 문의 끝을 알리는 기호가 바로 세미콜론(;) 이기 때문입니다. 제대로 입력이 됐으면 다음 그림과 같이 OK 메세지가 나타나고 테이블이 완성됐다라는 메세지가 나타날 것 입니다.
GroupList 테이블을 생성했으면 이제는 AddressList 테이블을 동일하게 입력해서 완성해 봅니다.
똑같이 OK 메세지가 다음 그림과 같이 나타나고 AddressList 테이블이 생성된 것을 확인할 수 있을 것 입니다.
그럼 이제 제대로 만들어졌는지 확인을 해봐야겠죠? 다음과 같은 명령어를 입력하도록 합니다.
Show Tables;
좀 전에 앞서 했었던 Show Databases 기억 하시나요? 그것과 동일한 방법입니다. Show Databases 하면 데이타베이스 작업 명을 모두 확인할 수 있고 Show Tables 하면 선택된 데이타베이스 작업 내의 테이블들을 확인 할 수 있습니다. 위의 명령어를 이용하면 다음 그림과 같이 터미널 윈도우 내에서 테이블 리스트를 확인할 수 있습니다.


이번회에서는 실질적인 데이타 베이스 이용에 대한 내용중 데이타베이스의 간단한 사용과 설계에 대해서 알아보았습니다. 실질적으로 리얼베이직과 같은 프로그램에서 데이타저장용으로 사용하기에는 이정도 내용만 알고 있어도 충분히 잘 활용할 수 있습니다. 뿐만아니라 MySQL 의 설치도 했기 때문에 어떤 매킨토시 시스템에서도 이제는 MySQL 설치를 하실 수 있으실 것 입니다. MySQL 무료이면서 빠르고 안정적이기 때문에 가격대 성능비를 생각했을 때 최고의 데이타베이스 시스템이 될 것이라고 생각합니다. 무료라고 해서 개인만 사용하는 데이타베이스 시스템이 아니라 많은 기업체에서도 사용하고 있는 검증된 데이타베이스라는 점 기억해 두시기 바랍니다. 이번 회에서는 MySQL 의 설치와 데이타베이스 설계의 기본 및 데이타베이스와 테이블 생성에 대해서 알아보았으니 리얼베이직의 MySQL 사용에 대해서는 한 70~80%는 다 알게 된 것이라고 봐도 무방(?) 할 것 입니다...^^;;

그 동안 좀 오랫동안 쉬는 기간이 있었지만 여기까지 실질적인 데이타베이스를 이용한 예제의 첫번째 부분을 여기에서 마칩니다. 시간이 오래 걸려서 죄송합니다. 앞으로도 예전처럼 금방금방 원고를 작성하기는 어렵겠지만 꾸준히 원고를 지속적으로 제공(?) 하도록 하겠습니다. 양해해 주시기 바랍니다.

다음회에는 이번 회에 한 데이타베이스 내용을 기반으로 하여 구체적인 인터페이스 설계와 코드를 작성해보도록 하겠습니다. 다음 회까지 마친다면 리얼베이직 내에서 어떻게 MySQL 을 사용하는지 구체적으로 알 수 있을 것 입니다.

리얼베이직에 관한 궁금한 점이나 원고에 대한 잘못된 부분 및 질문에 대해서는 michelin@shinbiro.com 으로 메일을 주시기 바랍니다. 감사합니다..^^;;



zzudol : 반갑습니다.
오랫동안 기다렸는데.....
열심히 보겠습니다.
(11월26일)
Realmac : 성준님 연재 정말 감사하구요. 흠.... 리얼베이직의 기능들이 점점 늘어나고 좋아지는 것 같아서 좋습니다. 다음 강의도 저에게 많이 도움이 될 듯 하구요.
좋은 강의 계속 부탁드릴께요.... - runtowin -
(12월05일)
rachung : 이제야 리얼베이직에 입문했습니다. 덕분에 쉽고 재미있게 시작할 수 있었습니다.
그런데..다음 강의는..? ^^
(03월03일)
현재글 - 19회. Database -3-
이전글 - 18회. Database -2-