티스토리 뷰

앞 부분에서 만들어본 데이터베이스는 엑셀 데이터와 같은 테이블만 표현이 되어 있습니다. 


하지만 이렇게 테이블만 있어서는 그냥 일반 표를 나타내는 엑셀과 다를바가 없죠 


굳이 MySQL 이던 Access를 사용해서 자료 정리를 할 필요는 없다는 뜻입니다.


따라서 테이블 외에 중요한 개체로는 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등이 있습니다


하지만 이러한 내용을 한꺼번에 지금 알 필요는 없고 몇가지 주요 개념에 대해서 살펴보도록 하겠습니다.


3-1 인덱스

인덱스는 일반적으로 책들의 뒤에 있는 색인 즉 찾아보기와 같은 개념을 가집니다. 


잘 아시다 시피 영어단어를 사전을 이용해서 검색을 한다고 할때 그 단어를 처음부터 전부다 검색해 보는것은


비효율적이며 느리죠 대부분의 큰 사전에는 단어의 처음 알파벳을 표현해 놓은 색인이 있습니다.


따라서 만약 우리가 앞에서 만들어둔 도서관 DB에서 책이름을 검색하면 


모든 테이블을 샅샅이 검색해서 결과를 띄워주게 됩니다.


지금이야 만들어둔 행 자체가 5~6개 정도 밖에 안되므로 이 정도야 머 하면서 SQL에서 쉽게 검색해 주지만


갯수가 어마어마해질때는 검색 효율성에 문제가 생깁니다.


이미 우리는 앞에서 인덱스를 지정해 두었습니다. 바로 PK(Primary Key)에 체크를 한 부분이 있는데요


그게 인덱스가 지정이 된 상태입니다. 


일단 상세한 부분은 뒤에서 배우기로 하고 인덱스로 지정이 되어 있는 테이블을 만들어 봅시다.


SQL 문으로 만드는 방법도 있는데 여기서는 GUI로 만드는 법을 배워 봅시다.


물론 자세한 내용은 뒷부분에서 이론과 덧붙여서 설명하도록 하겠습니다.


PRIMARY 에 오른쪽 마우스 클릭을 하시면 Create Index가 있는데 이것을 클릭해 줍니다.



테이블에서 인덱스로 쓸 부분을 적당히 선택한 다음에 Create index for selected columns 를 클릭해 줍니다.




일단 여러 옵션들은 무시하고 Create를 클릭해 줍니다. 


그리고 Refresh All을 눌러주시면 Index Table을 보실수 있습니다. 




그리고 검색하시면 일단 똑같이 검색이 됩니다만 인덱스 내에서 찾는게 되므로


속도가 차이가 있습니다. 데이터의 종류가 굉장히 많을때에 한해서 말이죠 




3-2 뷰

뷰는 가상의 테이블입니다. 뷰 테이블이라고 부르는 경우도 있긴 합니다. 옳은 표현은 아니지만 말이죠


DB를 쓰는 사용자 입장에서 보면 뷰는 테이블과 동일하게 보이긴 하지만 실제 행 데이터를  가지고 있지 않습니다.


실체는 없고 진짜 테이블에 연결이 되어 있는 것이죠 그럼 왜 이렇게 번거로운듯한 개념이 존재할까요?


사용자에 따라 DB 접근권한을 제한하고 싶을때 사용을 주로 합니다. 사용자권한 마다 DB를 원본을 설정을 한다면


문제가 데이터도 중복될 수도 있고 다른 사용자에서는 먼가 추가하고 지웠는데 


실제 원본 DB에서는 보지 못하는 경우가


생겨서 DB가 꼬이게 됩니다.


따라서 사용자의 권한에 따라 가상의 데이터를 만들어 두고 거기에만 접근을 허용하게 하는 것이고


진본 데이터는 따로 안전하게 보관을 해 두는 것이죠


이 부분도 뒤에서 자세하게 보도록 하겠습니다.


물론 여기서는 다음과 같이 간단하게 뷰 생성하고 여기에서 검색의 


결과가 어떻게 나타나는지 간략하게 보겠습니다.


아래의 SQL 구문으로 간략히 따라가 보세요 








3-3 스토어드 프로시저

스토어드 프로시저는 MySQL에서 제공하는 프로그래밍 기능을 의미합니다. 


SQL문을 하나로 묶어서 편리하게 사용하는 기능입니다


실무에서는 많이 사용하는 기능이긴 한데 여기서는 간략히 맛만 보도록 합시다.


SQL 문으로 myProc()를 선언하고 BEGIN ~ END 사이의 내용으로 자신의 함수를 만듭니다. 


그리고 구문문자로 종료하고 Call 문으로 그 함수를 호출하면 됩니다. 


아직은 문법적인 어려움이 있겠지만 여기서는 그냥 똑같이 쳐 보시고


아 이런거구나 하고 한번 느껴 보세요

3-4 트리거

트리거는 방아쇠란 뜻으로 테이블에 부착되어 테이블에 삽입, 수정, 삭제 작업이 발생하면 


자동으로 실행되는 코드를 의미합니다.


DB에 자료를 추가할때 기본적으로 해야하는 작업들이 있는데 우리는 사람이다 보니 깜빡 실수하기가 쉽죠


빼먹는다거나 하는등의 말이죠 따라서 DB에 자료가 추가되거나 삭제가 될때 기본적으로 작동되는 부분들을


미리 만들어 둔다면 문제가 발생하지 않을 것입니다.


여기서는 책 하나를 제거했을때 혹시나 그 책이 여기 도서관에 있었다라는 점을 알아두기 위해


다른 삭제용 DB에 들어가는 것을 한번 간략하게 살펴 보겠습니다.


문법이 익숙하지 않으실텐데 그냥 간단하게 아 트리거라는게 이런 기능이구나 라고 생각하시면 될듯 합니다.


일단 지워진 책이 들어갈 DB를 생성해 줍니다. 그리고 다음 그림대로 따라가 보세요


우선 libraryDB에 다음의 SQL 문을 집어 넣습니다.


문법이 익숙치 않으실텐데 그냥 이렇구나 하고 넘어가 주세요 자세한건 뒤에서 살펴보도록 할께요



SQL 명령문으로 한행을 지우니까 바로 지운 내용이 임시 DB로 옮겨 옴을 확인할 수 있습니다.




요번장은 MySQL의 주요 데이터베이스 개체활용에 대해서 알아 보았습니다.


계속해서 반복하는 얘기지만 아직 배우기에는 좀 어려운 부분이 없지는 않지만


한번 실습해 보는것에 의의를 두시고 아 이렇게 쓰는구나 정도로 받아들여 주세요






댓글