게시판을 어떻게 개발 시작하고 어떻게 글을 써나가야 할지 이것저것 찾아봤었다.
난 항상 뭔가 하려고 계획하고 시작하는 단계가 정말 어려운 것 같다 ㅠㅠ
내가 MBTI에 P가 있어서 더그런가 ㅋㅋㅋ
뭔가 이렇게 계획을세우고 글로 짜임새 있게 쓰는게 너무 어렵다.....
어쨌든 이전의 경험과 인터넷으로 막 이것저것 찾아봤다.
그러다 우선 어떤 데이터를 저장하고 관리할 것인지가 제일 중요하고
그에 맞춰서 화면을 설계해나가는게 좋을 것 같다고 생각하게 되었다.
그래서 설계를 하려고 해서 이것저것 검색해보았고, 다음과 같은 순서로 진행해볼 계획을 세우게 되었다.
1. 데이터베이스 설계
2. 데이터베이스 선택
3. 데이터베이스 설치 후 스키마, 테이블 실제 생성
4.생성 스크립트 정리
이렇게 계획을 세운 뒤 바로 각 단계별로 진행했다.
1) 데이터베이스 설계
설계를 어떻게 시작해보면 좋을까 하다가 옛날 데이터베이스 책을 읽어봤다.
데이터모델링을 시작으로 정보시스템 구축의 대상이 되는 업무를 분석하여 이해하고 약속된 표기법에 ... 어쩌구 저쩌구..
상세하게는 업무 파악 => 개념적 데이터 모델링 => 논리적 데이터 모델링 => 물리적 모델링 으로 진행해야 어쩌구 저쩌구..
그러다 아래 그림같은 거 보면서 예전 대학교랑 자격증 시험으로 PTSD가...
어쨌든 개발자로서는 필요한 건 그림으로 한눈에 테이블의 관계를 볼 수 있는 데이터베이스 설계서이다.
이러한 데이터베이스 관계와 구조를 한 눈에 알아보기 쉽게 그려놓는 다이어그램이 있고 이를 ERD라고 한다.
그래서 이걸 작성하기 위해 이것저것 툴을 찾아봤다. 꽤 많더라...
그렇게 몇 개 해보다가 제일 심플하고 공유가 쉽고 많이 사용하는 ERD Cloud 라는걸 써보기로 했다.
대충 GitHub로 가입하고... 이거 로그인 할 때 메일 인증 안 할 수 있으면 좋겠다고 생각한다 ㅠㅠ 아니면 선택이라도..
어쨌든 내 이니셜 따서 HKBoard 라는 이름으로 다음과 같이 진짜 심플하게 만들었다.
되게 간단하게 만들었지만 추후에 기능 개발 되면 메일이나 휴대폰 번호 활용한 비밀번호 초기화, 메일로 로그인, 이미지 추가 등도 생각해서 작성해본 것 같다.
또한, 다양한 기능들이 있었는데 그 중에서 유용했던게 현재 만든 ERD를 기반으로 실제 스키마, 테이블을 생성하는 SQL 파일로 추출하는 기능이었다. 아래 그림처럼 Export를 눌러서 원하는 언어, 원하는 형식으로 추출이 가능했다.
물론 추출할 수 있는 DB 종류가 적기는 하지만 대부분이 자주 사용하는 데이터베이스 종류들이라 꽤 괜찮은 것 같다.
최종적으로 MySQL을 사용하기로 결정을 했기 때문에 실제 추출을 해서 실행해봤었는데 바로 실행이 되지는 않았다.
그 이유는 작성할 때 형식이 있다거나 검증해주는 기능은 따로 없고 사용자가 사용자입맛으로 하는 것이다 보니 어쩔 수없이 발생하는 문제인 것 같다. 위에 그림 보면 Auto Increment라는 걸 추가해 줬지만 따로 SQL문으로 변경되지는 않는다.
그래도 위 사진처럼 틀적인 부분은 짜주기 때문에 한번 확인하고 부족한 부분을 따로 추가하는 방향으로 사용하면 좀 덜 귀찮을 것 같다.
무엇보다 무료인데 이런 부가기능이 있는 건 매우 좋다.
또한, Import를 눌러서 기존에 데이터베이스에서 생성된 테이블들의 쿼리문을 가져와 ERD 관계도로 생성이 가능한 것 같다.
2) 데이터베이스 선택, 3) 데이터베이스 설치 후 스키마, 테이블 실제 생성
어쨌든 이렇게 ERD로 데이터베이스의 설계를 짰으니 데이터베이스를 선택하고 실제 데이터를 생성하면 된다.
위에서 언급했듯이 나는 최종적으로 데이터베이스는 'MySQL'로 선택했다.
원래는 기존에 사용했던 Oracle이나 PostgreSQL, 티베로 중에서 선택해서
사용하던 데이터베이스를 같이 공부하는 쪽으로 하려고 했었다.
그렇게 깔려고 봤다가 예전에 이 맥북에 MySQL을 기반으로 토이 프로젝트 겸 테스트 어플 만든게 생각이 났다.
그래서 그냥... 깔려 있는 MySQL을 선택했다.. 굳이 뭘 설치하고 설정하기는 귀찮....다
제일 무난하고 무료고 관련 자료도 많아서 MySQL 나쁘지 않은듯?
어쨌든 ERD로 만든 걸 export한 쿼리문으로 대강 만들고, 제약조건을 추가 및 수정해서 최종적으로 만들었다!
4.생성 스크립트 정리
그리고 이제 마무리하면서 간단하게 스크립트를 정리했다.
이렇게 정리하게 된 건 이전회사에서는 따로 하지는 않았는데 이번에 회사옮기면서 직접 해보면서 필요성을 느껴서였다.
추후 백업용인데 습관적으로 만들어 놓는걸 과정에 포함시키는 건 좋은 것 같다.
보통은 사용하는 DB Tool에서 테이블 정보 - DDL 정보를 누르면 위 처럼 생성 스크립트를 확인할 수 있다.
(Tool 마다 방법은 다를 수 있지만 대부분이 위와 비슷하게 찾을 수 있는 듯 하다..)
그리고 위처럼 여러개의 테이블은 한번에 생성하는 스크립트 문도 만들 수 있다.
어쨌든 여기까지 완료했으니 이제 데이터베이스는 준비가 된 것 같다!
여담) 예전에는 데이터베이스를 다룰 때 그 언어에 맞는 Tool을 따로 사용했었다. Oracle은 Orange, Tibero는 Tbero Admin 등등..
근데 요새는 "DBeaver" 같이 여러개의 데이터베이스를 한번에 관리할 수 있는 Tool이 나온 뒤 부터는 그 언어에 종속적인 Tool은 잘 안 쓰게 되었다. 초기 버전 사용했을 때는 그 DB의 고유기능을 못 쓰고 제한적이라는 얘기도 들었던 것 같은데, 지금 써봤을 때는 차이점을 모르겠다.
예전에 실무로 모바일 개발했을 때는 우리 쪽 서버에서는 데이터를 가져오려면 주로 다른 시스템의 인터페이스를 연결해서 사용 했었다. 그러다보니 우리 쪽 DB에는 그 시스템에서 가져온 필수 데이터인 사용자 정보, 부서 정보, 모바일 토큰, 기기 정보, 로그 등만 담아서 사용하다보니 DB를 그렇게까지 전문적으로 사용은 못 해본 것 같아 아쉽다. 어쨌든 그 때 데이터를 직접 관리하는 담당자 분은 그런 기능들을 잘 다뤄서 사용했던 것 같다. 그러다보니 그 분들 컴퓨터보면 DB 관련 Tool이 여러개 사용하는 분도 있었던 것 같다.
근데 이제는 간단하게 쓸거면 DBeaver가 무난하고 편한 것 같다. 또한, 예전에는 DBeaver 사용할 때 DB 연결하려면 직접 라이브러리 찾고 설정하는 것도 어려웠던 것 같은데 요새는 데이터베이스 추가할 때 DBeaver에서 라이브러리 검색해서 다운받아고 바로 연결도 가능해서 정말 좋아졌다.
어쨌든 첫 시작으로 간단하게 DB 설계서를 만들고 그 과정을 간단하게 글로 기록해봤다.
이제 다음순서는 화면 개발 차례다.
'[토이 프로젝트] hkboard' 카테고리의 다른 글
[3] 화면 개발 (0) | 2022.05.24 |
---|---|
[1] 시작하기에 앞서 - 뭘 개발해 볼까? (0) | 2022.05.15 |