
기획서, 요구사항 정의서를 토대로 테이블 설계서를 작성한다.
우리 조의 경우, 한 사람이 일괄적으로 데이터베이스를 설계하는 것보다는 모두가 경험해보는 것이 좋다고 생각했다.
따라서 구현하기로 담당한 기능의 기획서, 요구사항 정의서 항목을 각자 작성하였고, 뜯어보는 시간을 가지며 피드백하고 디벨롭했다. 테이블 설계서 역시 같은 방식으로 진행했다.
테이블 개요를 작성하여 생성해야 하는 테이블 목록을 한 눈에 볼 수 있도록 한다.

기능별로 엑셀 시트를 구분해 세부 내용을 작성했다. 하나의 기능을 구현하기 위해 필요한 테이블을 테이블명, 논리명, 테이블 설명 단위로 구분했다.
그리고 하위에는 컬럼별로 행을 생성하여 이름, 타입, 길이, NULL 여부, 논리명, 설명, 제약조건을 기입해 주었다. 예시는 다음과 같다.

SQL문 작성 시 누락되는 것이 없도록 컬럼별 특징들을 자세히 기입하는 것이 중요하다고 생각했다. 시퀀스명, Primary/Unique, Foreign key 제약 조건, 민맥스값, 디폴트값, 저장될 옵션값 등을 상세히 적어주었다.
ERDCloud를 이용해 아래와 같이 데이터베이스 구조도를 작성했다.
https://www.erdcloud.com/

아쉬웠던 점은 일명 '까마귀발'이라고 칭해지는 IE/Crow's Foot 표기법에 대한 이해가 부족해 개체 간의 관계를 명시해 주는데 애를 먹었다는 점이다. (어떻게 해도 까마귀발이 겹쳤고 깔끔하게 작성되지 않았다;;) 그리고 발표 당일 다른 팀이 기능별로 개체 색상을 구별한 것을 보았고, 그 방식이 구조도를 파악하기에 더 용이하다고 생각해 파이널 프로젝트 시 적용해야겠다고 다짐했다.
sql문은 이클립스의 sql 파일에 우선 작성한 뒤, Oracle SQL Developer의 워크시트에 PASTE 하여 테이블을 생성하는 방식을 사용했다.
그리고 수정 사항이 발생할 경우 이클립스의 sql 파일도 함께 업데이트함으로써 테이블 전체를 재설계 하는 등의 상황에 대비하였다. 예시는 다음과 같다.
-- 회원 기본 정보
create table all_member(
mem_num number not null,
mem_id varchar2(12) not null unique,
mem_auth number(1) default 2 not null,-- 0 탈퇴, 1 정지, 2 비인증, 3 인증, 9 관리
mem_nick varchar2(36) not null unique,
mem_email varchar2(30) not null unique,
constraint all_member_pk1 primary key (mem_num)
);