관리 메뉴

새로운 시작, GuyV's lIfe sTyle.

닷넷 게시판 만들기 Part 21 - DB 기본 개념 및 목적 본문

ⓟrogramming/asp.net 게시판

닷넷 게시판 만들기 Part 21 - DB 기본 개념 및 목적

가이브 2011. 2. 18. 00:38


2011/02/16 - [ⓟrogramming/asp.net 게시판] - 닷넷 게시판 만들기 Part 20


1. 닷넷 개발환경 준비, 테스트
2. 닷넷 알아보기 [7/7]
3. asp.net 컨트롤 [10/10]
4. 데이터베이스(DB) [2/..]


DB설치가 완료되었다면 DB를 만들고, 가져놀면 된다.
지루하지만, 중요한 이론을 또 짚고 넘어가야겠다.

DB(Database)는 말 그대로 자료를 모아놓은 곳이다. 간단하게 어떻게 구성되는지 알아보자.



우리가 설치한 SQL Server 는 DBMS(DataBase Management System)의 한 종류라고 했다. 이외에 들어보셨겠지만 MySQL, Oracle 등이 SQL Server와 동급이다.

그림처럼, 데이터베이스를 묶은 것이 DBMS이다. DB를 관리하는 총체가 DBMS라고 부른다고 보면 되겠다. DBMS는 해당 DB를 접근할 수 있게 하거나 그렇지 않게 하는 '보안'도 신경쓸 것이다. DB가 날아가기를 대비해 백업(Backup)을 해놓을 수도 있겠다. 아파트 관리소장이라고 생각하자. 물론 사람이 명령을 내려야겠지만 말이다.

우리 개발자는 이런 "보안", "백업" 등등의 DB자료에 관련된 이외의 것들은 일단 제껴두기로 하자. 실제 현업에서 DBA(관리자)라는 직업이 따로 존재한다. 이 분들이 신경써주는 부분이 상당하기 때문이다. (그러나 현실은.. 작은 업체일수록 DB 관리까지도 개발자에게... ㅠㅠ)
여튼, DB를 알아야되는 이유는 당연하겠지만 우리가 직접 DB에 자료를 넣거나 빼야되기 때문이다. 필자의 얄팍한 지식을 자랑하려는 행위가 결코 아니라는 것을 생각해주시기 바란다. =P

DB는 1개 이상의 테이블로 이루어져있다. 물론, 처음 DB를 생성하면 테이블은 존재하지 않을 것이지만 말이다.

[중요1] "DB는 테이블(Table)의 묶음이다.'




그리고 DB안에 있는 테이블은 실제 자료를 담기 위한 녀석이다.
<tag>의 테이블을 생각해보자. 테이블 형식의 자료는 어떻게 되어 있는가? 위의 그림에서 좌측처럼

"항목이름"
-------------
자료1
자료2
...

이런식이다. 여기서 항목 이름을 DB에서는 컬럼(Column)이라고 부른다.
즉, 테이블에는 컬럼이 없으면 자료 자체가 만들어지지 않는다. 그러므로..
 
[중요2] 테이블은 1개이상의 컬럼이 꼭 존재해야 자료를 담을 수 있다.

테이블은 컬럼이 존재해야 한다고 했다.
테이블은 어떻게 만들어지는가?? 누가 만드는가? 목적이 있지 않는가?

가족 구성원을 테이블로 만든다 하면 어떤 항목을 넣는지는 여러분들의 마음이다.
직원 구성원을 테이블로 만든다 해도 어떤 항목을 넣는지는 여러분들의 마음이다.

필자가 하고 싶은 말은, 어떤 자료를 담을 것인가는 이미 여러분들이 알고 있다는 것이다. 그리고 각각의 항목은 어떤 형식으로 자료가 들어갈 것인지도 알고 있다는 말이다.

" DB를 만들어봅시다. 만드는 방법은 어쩌고, 저쩌고... 이제 테이블을 만들어봅시다. 테이블을 만들면 어쩌고 저쩌고... 컬럼을 구성해야겠죠~. 어쩌고저쩌고.. "

이런 따위로 여러분들에게 설명하면 결과물은 나오겠지만 왜 DB를 만드는지 망각하실까봐 "Follow me~" 형식의 강의를 하지 않을 생각이다.

위의 두 개 그림에서 DB의 구조에 대한 모~든 설명이 다 나와있다고 봐도 무방하다.
DB역시 복잡고 어려운 건 사실이다. 그러나 최대한 여러분들에게 혼란을 드리고 싶지 않기 때문에 제외할 내용은 과감히 제외하였다.

여담이지만, 필자가 처음 DB라는 존재를 알기위해서 걸린 시간이 거짓말 없이 3개월이었다.
DB는 SQL이라고 하길래 SQL이 뭐냐고 주위에 물어볼 사람이 없었고, 해봐야 PC통신이었는데 누구 하나 답해주는 사람이 없었기 때문이다. (눈물난다ㅜㅜ)

지금이야 정보가 넘쳐나기 때문에 어느장단에 공부하실지 행복해 하시겠지만 필자는 이런 환경임에도 걱정되는 점이 있다. 16년동안 붙여넣기만 해오신 "무념" 개발자로 빚어질까봐 말이다. 이런 분들이 지금 경력쌓으시고 대리,과장,부장 자리에 앉으셔서 발전없는 IT 업체를 이끌고 다니고 있는 것도 사실이기 때문이다.  
이야기가 삼천포로 좀 빠졌다. (-_-)

위에 빨갛게 표시해드렸지만, 간추려보면.

"DB를 알아야되는 이유는 우리가 직접 DB에 자료를 넣거나 빼야되기 때문이다"

[중요1]
"DB는 테이블(Table)의 묶음이다.'

[중요2] 테이블은 1개이상의 컬럼이 꼭 존재해야 자료를 담을 수 있다.
하나 더 추가하면,
[중요3] ASP.NET과 DB는 아~무 관련없다. 자료저장소가 DB일 뿐이다.

기왕 (파워포인트로^^) 그림 그려봤으니 하나 더 그려보겠다.


우리는 지금 (2)번이다. (닷넷 게시판 만들기가 강의의 목적이다. 필자도 까먹을 뻔...)
(1)번을 위해 (2)번이 존재한다. 그리고 (1)번은 (3)번이 있건없건 신경쓸 필요가 없다.
(3)번은 (2)번이 웹서버인지 무슨서버인지 신경쓸 필요가 없다. 말 그대로 DB정보를 담고 있고, 자료를 요청하면 해당 자료를 꺼내주면 그만이다.
(2)번인 웹서버는 자료 입출력이 있을시에만 필요에 의해 DB서버에 접속할 것이다.

우리가 3장까지 다뤘던 이야기를 해보자.
(1)번은 (2)번에게 웹(Web) 명령어인 GET으로 요청한다.
(웹 브라우저에 주소를 치는 자체가 GET방식이라고 헀다.)
그리고 (2)번은 (1)번에게 HTML <tag>를 뿌려준다. 각종 이미지<img>, 플래쉬<object>등의 동봉된 자료와 함께..(동봉자료의 요청은 따로 각각 이루어지지만)

4장에 적용되는 이야기가 (2)~(3)의 관계이다.
(2)번과 (3)번은 서로 내부적인 규약으로(개발자/DB관리자가 알 필요없는, 즉 사람이 알 필요없는..) 명령을 주고 받는다. (1)~(2) 관계와는 다르게 텍스트파일의 형식은 아니다.
(3)번인 DB서버는 언제나 명령을 기다리는 입장이다. 요청 명령이 와야 응답한다.
(2)번이 (3)번에게 내리는 명령을 SQL이라고 한다.(일반적으로 '쿼리,쿼리문'(이)라고 하거나 가끔 '시퀄'이라는 용어를 쓰기도 한다. 다 같은 말이다)
(3)번이 SQL명령을 받게 되면 그 명령의 결과를 (2)번에게 줄 경우가 있고, 주지 않을 경우가 있다.
DB의 자료를 입력,수정,삭제하는 SQL명령에 대해서는 돌려줄 자료가 없다. (그냥 잘 되었다는 반응만 보이면 된다) 자료를 요청하는 명령에 대해서만 결과를 돌려줄 필요가 있다.

정리하자.
우리가 다루는 asp.net 에서는 DB서버에 SQL문(이하 쿼리)을 이용해서 명령한다. 당연한 말이지만, 자료를 요청하는 명령을 DB서버에 보냈다면 DB서버로부터 오는 자료를 받아야 한다.

이것이 asp.net 과 DB의 관계에 대한 핵심이다. (웹프로그래밍 뿐만 아니라, 모~든 프로그래밍에서의 DB연동에 대해서 핵심이라고 볼 수 있다.)


"DB를 알아야되는 이유는 우리가 직접 DB에 자료를 넣거나 빼야되기 때문이다"

[중요1] "DB는 테이블(Table)의 묶음이다.'
[중요2] 테이블은 1개이상의 컬럼이 꼭 존재해야 자료를 담을 수 있다.
하나 더 추가하면,
[중요3] ASP.NET과 DB는 아~무 관련없다. 자료저장소가 DB일 뿐이다.
[중요4] ASP.NET에서 DB서버로 내리는 명령을 SQL이라고 한다.
[중요5] DB서버는 받은 명령이 자료 요청이라면 결과를 응답할 것이다.



이제 DB서버에 명령을 내리는 SQL명령을 알아봐야 할 것이다. ^_^

이번시간은 이론적인 내용만 다루었다. asp.net 에서 DB를 사용하기 위해(연동이라고 하자) 최소한 알아야되는 핵심이니, 그냥은 넘어가지 말고 숙지해놓자.

다음시간에 DB를 만들고, Table을 만들기위해 Column에 대해 알아본다.
그리고 쿼리문의 규칙을 알아보자.
DB에 명령을 하기위해 필요한 쿼리문은 규칙만 알고 넘어갈 것이다.

http://www.sqler.com/bSQL2009Lec

위 사이트에 들어가셔서 데이터 조회, 입력/수정/삭제하는 강의를 예습해보자.
asp.net 과 DB는 관련이 없으므로, asp.net 에 대한 생각은 버리고 보시기 바란다.
(친한척 하는 것일 뿐...? ^_^)


다음시간에..
반응형
Comments