DB 설정하기
- 이 블로그의 글은 JAVA DB 엔지니어링 과정 수업을 위해 작성된 글입니다.
- 이미지로 인해 글이 길어질 수 있습니다.
1. MySQL DB(스키마) 생성
- MySQL Workbench를 실행하여 root 또는 DB 생성 권한이 있는 다른 아이디로 접속합니다.
- 접속 과정은 다음을 참고하세요.
- 접속 후 화면
- Schemas 탭에서 좌측 SHEMAS 빈 여백에 우클릭 후 Create Schema를 클릭합니다.
- Schema 이름 입력 후 Apply를 눌러 Schema(DB)를 생성합니다.
- 참고
DB 종류에 따라 Schema와 DB를 취급하는 방식이 다릅니다.
MySQL에서는 Schema와 DB가 같은 것으로 취급합니다.
2. 테이블 생성하기
- 회원 테이블, 게시판 테이블, 파일 테이블을 생성합니다.
- 회원 테이블(memeber)의 속성은 다음과 같습니다.
- 모든 속성은 필수 항목입니다.
- 아이디(id) : 기본키로 문자열로 되어 있으며 최대 15까지로 설정했습니다.
- 비밀번호(pw) : 문자열로 되어 있으며 암호화로 인해 최대 255자까지로 설정했습니다.
- 성별(gender) : 문자 1자로 되어 있으며 남자는 'M', 여자는 'F'로 저장합니다.
- 이메일(email) : 문자열로 되어 있습니다.
- 권한(authority) : 문자열로 되어 있으며 최대 45자까지 설정 가능하고 기본값은 'USER' 입니다.
- 회원 테이블의 DDL은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 | CREATE TABLE `member` ( `id` varchar(15) NOT NULL, `pw` varchar(255) NOT NULL, `gender` varchar(1) NOT NULL DEFAULT 'M', `email` varchar(45) NOT NULL, `name` varchar(45) NOT NULL DEFAULT ' ', `authority` varchar(45) NOT NULL DEFAULT 'USER', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | cs |
- 게시판 테이블(board)의 속성은 다음과 같습니다.
- 번호(num) : 정수로 기본키이며 정보 추가 시 자동으로 증가합니다.
- 제목(title) : 문자열로 되어 있으며 최대 255까지로 설정했습니다.
- 내용(contents) : 긴 문자열로 되어 있습니다.(LONG TEXT)
- 작성자(writer) : 문자열로 되어 있으며 최대 15까지로 설정되어 있습니다. 그리고 회원 테이블의 기본키인 아이디와 외래키로 연결되어 있습니다.
- 등록일(registered) : DATETIME으로 되어 있으며 등록할 당시의 시간을 저장합니다.
- 조회수(views) : 정수로 되어있습니다.
- 게시글 등록 여부(valid) : 문자 1자로 되어 있으며 게시글이 게시된 상태면 'I', 삭제된 상태면 'D'로 저장합니다.
- 게시판 테이블의 DDL은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE `board` ( `num` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `contents` longtext NOT NULL, `writer` varchar(15) NOT NULL, `registered` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `views` int(11) NOT NULL DEFAULT '0', `valid` varchar(1) NOT NULL DEFAULT 'I', PRIMARY KEY (`num`), KEY `writer_idx` (`writer`), CONSTRAINT `writer` FOREIGN KEY (`writer`) REFERENCES `member` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8; | cs |
- 파일 테이블(file)의 속성은 다음과 같습니다.
- 번호(num) : 정수로 기본키이며 정보 추가 시 자동으로 증가합니다.
- 게시글 번호(board) : 정수로 되어 있습니다. 그리고 게시판 테이블의 기본키인 게시판 번호와 외래키로 연결되어 있습니다.
- 첨부파일명(name) : 문자열로 되어 있으며 최대 255자까지로 설정되어 있으며, NULL 값을 허용하지 않습니다.
- 상태(state) : 문자로 되어 있으며 기본값이 'I'이고 삭제되면 'D'를 저장합니다.
- 파일 테이블의 DDL은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 | CREATE TABLE `file` ( `num` int(11) NOT NULL AUTO_INCREMENT, `board` int(11) NOT NULL, `name` varchar(255) NOT NULL, `state` varchar(1) NOT NULL DEFAULT 'I', PRIMARY KEY (`num`), KEY `board_idx` (`board`), CONSTRAINT `board` FOREIGN KEY (`board`) REFERENCES `board` (`num`) ) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8; | cs |
- Schemas탭에서 테이블을 생성할 DB를 선택합니다.(spring)
- 위의 회원테이블, 게시판 테이블, 파일 테이블에 대한 DDL를 이용하여 테이블을 생성합니다.
- 빈 SQL FILE에 DDL을 복사하여 붙여넣고 실행합니다.
- Schemas탭에서 새로고침 후 DB를 더블클릭한 후 Tables를 살펴보면 회원 테이블과 게시판 테이블이 생성된 것을 확인할 수 있습니다.
수고하셨습니다.