정말 오랜만에 작성하는 게시글입니다.
취업을 하게 되면서 새 직장에 적응을 하고 운동도 다시 시작하면서 부득이하게 공부는 뒷전으로 미뤄두게되었습니다. 또, 감사하게도 신입이지만 많은 것들을 믿고 맡겨주셔서 바쁘게 일했던 것도 영향을 끼치지 않았나 싶습니다.
업무를 하기 전까지 뷰의 실용성에 대해서 의문이 들었지만 이번에 사용해보면서 느낀 장점들이 많아 이번 게시글에서는 테이블과 뷰에 대해서 알아보는 시간을 가져볼까 합니다.
*관계형 데이터베이스를 기준으로 작성한 글입니다.
register_number | name | birthday |
---|---|---|
1 | 홍길동 | 2000-03-04 |
2 | 김삿갓 | 1998-11-13 |
3 | 이석박 | 2002-01-25 |
4 | 장공구 | 1990-06-10 |
테이블은 위와 같이 column과 row로 표시할 수 있는 데이터 집합의 모임입니다. 엑셀 시트가 보편적으로 잘 알려져있는 테이블이라고 볼 수 있을 것 같습니다.
column은 해당 열에 있는 데이터의 특성을 나타내며, 위의 테이블에서는 register_number(등록 번호), name(이름), birthday(생일)라는 column이 있습니다.
각각의 column은 데이터 형식(숫자, 날짜 등)이나 Unique, Not Null 등의 제약 조건을 가지고 있기도 합니다. 더 깊게 얘기하면 글이 길어질 수 있고 다들 잘 아시는 내용이니 생략하도록 하겠습니다.
row는 각 column의 조건에 맞는 데이터를 가지고 있는 데이터의 집합입니다.
위의 테이블에서는 (1, 홍길동, 2000-03-04), (2, 김삿갓, 1998-11-13), ... 와 같은 데이터의 모임이 row를 이룬다고 볼 수 있습니다.
뷰는 테이블과 같은 구조를 가지고 있지만, 테이블은 실제 저장된 데이터를 다루지만, 뷰는 아니다라는 것이 가장 큰 차이점입니다. 뷰는 기존에 존재하는 테이블로 부터 데이터를 추출, 가공, 변환하여 사용자에게 새로운 테이블처럼 보이게 됩니다.
따라서 뷰에서는 데이터의 갱신, 추가, 삭제가 어렵습니다.
제가 이전까지 뷰의 실용성에 대해 의문이 들었던 부분이 이 부분입니다. 기존에 존재하는 데이터를 가공하는 것보다는 내가 필요한 데이터를 정리해서 보려면 그 때마다 쿼리를 실행하면 되지 않나 하는 생각이 들었기 때문입니다.
하지만 다른 부서와 협업을 하면서 데이터 베이스를 다룰 수 없는 사람이 데이터를 보기 위해서 직접 테이블을 전해주기보다는 필요한 형태로 정보를 가공하고 권한을 제한해서 보여줄 수 있다는 것이 뷰의 가장 큰 장점임을 느꼈습니다.
또한, 조인 연산이나 서브쿼리 사용 등 복잡한 쿼리 자주 사용해야한다면 해당 쿼리를 매번 작성하기 보다는 뷰를 생성하여 필요할 때마다 간단하게 조회할 수 있기도 했습니다.
제가 정리한 뷰의 장점은 다음과 같습니다.
마지막으로 MySQL 기준으로 뷰를 생성하고 특정 유저에게 뷰를 조회할 수 있는 권한을 부여하는 쿼리를 기재하고 마무리하도록 하겠습니다.
CREATE VIEW [view_name] AS
SELECT * # 자신이 원하는 테이블을 조회하는 쿼리를 넣어주면 됩니다.
FROM ...
GRANT SELECT ON [DB 명].[VIEW 명] TO '[user]'@'[host]'; # 조회 권한 부여
FLUSH PRIVILEGES # 현재 MySQL의 캐시를 비워 변경한 환경설정을 가져올 수 있도록 하는 명령어
오랜만에 쓰는 게시글이니 만큼 가벼운 주제를 다뤄봤습니다.
이 글을 보시는 분들이 다른 부서에서 데이터베이스 정보 조회 요청이 들어왔을 때 유용하게 사용하셨으면 좋겠습니다.
오픈 소스 기여하기 글도 진전이 생기면 그 때마다 게시글을 작성해 올리도록 하겠습니다. language server는 모르는 분야다보니 해결하기까지 여정이 길어질 것 같습니다. ㅎㅎ;