DB 모델링
데이터베이스 모델링이란 테이블의 구조를 미리 설계하는 개념이다.
데이터베이스는 말 그대로 정보의 저장고라고 할 수 있는데
도서관에 책이 아무런 질서도 없이 정리되지 않는 것 처럼 데이터 베이스도 뭔가 규칙과 질서를 가지고 설계된다.
도서관 책이 잘 정리되어 있다면 책을 찾는 것도 쉬운 것처럼 데이터 베이스도 정보를 차곡차곡 정리해 놓을 필요가 있다.
데이터 베이스는 도서관과도 같다. 책(정보)을 쉽게 찾으려면 규칙에 따른 효율적인 정리가 필요하다.
효율적인 데이터베이스 설계는 안정성과 성능을 동시에 가져갈 수 있다.
그러나 DB는 도서관과 달리 우리가 직접 책을 꽂아서 정리하는게 아니라 컴퓨터에 명령을 시켜야한다.
때문에 효율적인 데이터베이스에 대해서 고찰하기 전에, 먼저 간단한 용어와 조작법부터 알아보자
데이터 베이스 용어
SQL 데이터베이스에 저장된 내용을 보면 위 사진처럼 나올 것이다.
보시다시피 액셀과 비슷한 형식을 취하고 있는 것을 알 수 있다.
DBMS: DB를 관리하는 시스템이나 소프트웨어로 말한다. 도서관으로 치자면 관리직원 및 관리지침서라 할 수 있다.
데이터베이스: 위 사진에서 왼쪽 위 목록의 main_project다. 도서관으로 치자면 도서관 이름에 해당한다.
테이블: 위 사진에서 왼쪽의 목록이 바로 테이블이다. 도서관으로 치자면 분야(문학, 소설 등)에 속한다.
기본키: 위 사진에서 오른쪽 액셀에서 adviceId이다. 도서관으로 치자면 모든 책에 부여된 일련번호에 속한다.
SQL: 시퀄 또는 에스큐엘이라고 읽으며 쉽게 말해 명령어다. 도서관을 관리할 사서에게 내리는 명령이라고 볼 수 있다.
그 외 나머지는 각 데이터가 가지고 있는 정보들이다.
위 사진을 보면 advice테이블에 userKey 라는 정보와 title, categoryId, viewCount 등의 정보가 있는 것을 알 수 있다.
책으로 치지면 책 이름, 책의 카테고리, 이 책의 조회수 라고 할 수 있다.
여기서 내가 공부할 핵심이 바로 SQL 이다.
데이터 베이스를 조작하기 위한 쿼리문에 대해서 공부하는 것이 이번 공부의 핵심이다.
WorkBench
워크벤치의 설치법은 흔한 소프트웨어 설치법과 크게 다르지 않으니 생략하고 일단 로컬 인스턴스로 접속하자
로컬 인스턴스
이미 SCHEMAS에 여러개가 보인다.
이중 sakila, sys, world는 누구에게나 있는 기본 파일이고 나머지는 내가 예전에 쓰면서 만들었던 것이므로 무시하자
SCHEMAS칸을 우클릭 -> CreateSCHEMAS를 하면 새로운 DB를 만들 수 있다.
이름을 정해주고, 아래의 Apply가 뜨면 아래 사진처럼 뜬다.
눈치가 빠른사람들은 창에 뜬 CREATE SCHEMA 'tarel_db'; 가 쿼리문이라는 것을 알것이다.
tarel_db목록을 펼치고, 아래 나온 목록에서 Tables를 우클릭, Create Table을 통해서 새로운 테이블을 만들자
그런데 만들기 이전에, 어떤 DB를 만들지 생각해야 하는데
보통 연습용으로 쇼핑몰을 만들곤 하니 쇼핑몰 DB를 만들어 보자
쇼핑몰에는 회원 테이블과 제품 테이블이 필요하다.
우선 회원테이블을 만들어보자
회원테이블은 대략 아래 처럼 만들 것이다.
| 일련번호 |
아이디 |
비밀번호 |
이름 |
주소 |
등급 |
| 1 |
tarel |
1234 |
SON |
부산 |
1급 |
| 2 |
vanilla |
5678 |
Alice |
서울 |
2급 |
| 3 |
rail |
asdf |
kal |
대전 |
3급 |
프로그래밍 언어를 공부해봤다면 컴퓨터에는 데이터 자료형이 있다는 것을 알 것이다.
마찬가지로, DB에 자료를 저장할 때, 여기에 들어갈 자료형도 같이 지정해주어야 한다.
예를 들면 일련번호의 자료형은 정수형(INT), 아이디는 문자열(CHAR)이다.
본래 문자열은 CHAR을 사용하지만 여기선 VARCHAR를 사용하겠다.
위 표를 토대로 만든 테이블, 체크란이 많은 것을 알 수 있는데 PK는 일련번호 키라는 뜻이고 NN은 NotNull을 말한다.
NotNull이란 반드시 필요한 정보라는 뜻으로 책에 제목이 반드시 필요하지만 추천수는 그렇지 않은 것처럼 꼭 필요한 정보에 NN을 체크해준다.
UQ는 유니크함을 뜻하는데 이는 중복되면 안 된다는걸 뜻한다.
가장 오른쪽의 디폴트는 말 그대로 기본적으로 주어지는 값이다.
Apply를 하면 보시다시피 이에 맞는 쿼리문이 나온다.
위 방법을 반복하여, product 테이블도 만들어보자
product 테이블은 보다 심플하게 만들었다.
빨간 원을 눌러서, 해당테이블에 어떤 정보가 있는지를 볼 수 있는데
오른쪽 아래를 보면 알겠지만 전부 비어있다.
일단 유저부터 만들어주자
아까 만든 표대로 작성한 모습
Apply를 눌러서 적용하면
마찬가지로 쿼리문이 뜬다.
역시 Apply를 눌러서 적용해주어야 한다.
product 테이블도 체워주자
데이터를 지울 때는 지우고자 하는 데이터를 선택하고 빨간 원 버튼으로 지워줄 수 있다.
단, 지운 후에 반드시 Apply버튼을 눌러줘야 적용된다.
지울 때도 쿼리문이 뜨는걸 볼 수 있다.
이로써 간단한 테이블 제작 및 조작법에 대해 알아봤고
다음엔 핵심인 SQL에 대해 알아보자