본문 바로가기

IT일반과목/DataBase

데이터베이스 20180824 (학원13) 과제


계정 생성 : khtest

권한 부여 : connect,resource


테이블 2개 생성

회원테이블(MEMBER), 게시판테이블(BOARD)


## 회원테이블 ##

MEMBER_NO(NUMBER) -- 회원 고유 순번 (자동 증가), PRIMARY KEY

MEMBER_USERID (VARCHAR2(20)) -- 회원 아이디 UNIQUE, NOT NULL

MEMBER_USERPWD (CHAR(20)) -- 회원 비밀번호 NOT NULL

MEMBER_NICKNAME (VARCHAR2(20)) -- 회원 닉네임 UNIQUE, NOT NULL

MEMBER_GENDER (NVARCHAR2(1)) -- 회원 성별('남' 혹은 '여') NOT NULL

MEMBER_EMAIL (VARCHAR2(30)) -- 회원 이메일 NOT NULL


-> 회원 고유 번호는 1000번 부터 시작하여 1씩 증가 해야함

-> MAX 번호는 1000000 번 까지

-> 성별은 '남' 또는 '여' 만 데이터 삽입이 가능 해야함 



## 게시판 테이블 ##

BOARD_NO (NUMBER) -- 글 번호(자동 증가) , PRIMARY KEY

BOARD_TITLE (VARCHAR2(20)) -- 글 제목 NOT NULL

BOARD_CONTENT (VARCHAR2(200)) -- 글 내용 NOT NULL

BOARD_WRITEDATE (DATE) -- 글 작성시간 NOT NULL

BOARD_NICKNAME (VARCHAR2(20)) -- 글 작성자(닉네임) NOT NULL 및 FOREIGN KEY


-> 글 번호는 1번부터 시작하여 1씩 증가 해야함

-> MAX 번호는 500000번 까지

-> BOARD_NICKNAME은 MEMBER 테이블의 회원 닉네임을 사용하여 외래키로 지정

(MEMBER 테이블에 존재하지 않는 사용자가 글을 작성할 순 없음)



## 추가적인 OBJECT 생성하기 ##


1. 위에 사항을 확인하고 필요한 SEQUENCE 객체 만들기 

2. 회원번호 , 회원닉네임, 회원 이메일, 회원 작성글 제목을 볼 수 있는 VIEW 만들기

3. 작성글을 검색할때 빠르게 검색하기 위하여 TITLE,CONTENT에 INDEX 객체 만들기

4. MEMBER와 BOARD 테이블을 'M' 과 'B' 로도 검색 할 수 있게 만들기

ex) SELECT * FROM M; -- MEMBER 테이블 정보가 보여야 함




※ 각종 확인은 직접 데이터를 넣고 확인 해보세요 










============================================================================




--MEMBER테이블생성

CREATE TABLE MEMBER(

MEMBER_NO NUMBER PRIMARY KEY, -- 회원 고유 순번 (자동 증가), PRIMARY KEY

MEMBER_USERID VARCHAR2(20) UNIQUE NOT NULL, -- 회원 아이디 UNIQUE, NOT NULL

MEMBER_USERPWD CHAR(20)NOT NULL, -- 회원 비밀번호 NOT NULL

MEMBER_NICKNAME VARCHAR2(20) UNIQUE NOT NULL, -- 회원 닉네임 UNIQUE, NOT NULL

MEMBER_GENDER NVARCHAR2(1) CHECK (MEMBER_GENDER IN('남','여')) NOT NULL , -- 회원 성별('남' 혹은 '여') NOT NULL

MEMBER_EMAIL VARCHAR2(30) NOT NULL-- 회원 이메일 NOT NULL

);


--멤버테이블에 대한 시퀀스

CREATE SEQUENCE MEMBER_SE

START WITH 1000

INCREMENT BY 1

MAXVALUE 1000000

NOCYCLE

NOCACHE;


--BOARD 테이블 생성

CREATE TABLE BOARD(

BOARD_NO NUMBER PRIMARY KEY, -- 글 번호(자동 증가) , PRIMARY KEY

BOARD_TITLE VARCHAR2(20) NOT NULL, -- 글 제목 NOT NULL

BOARD_CONTENT VARCHAR2(200) NOT NULL, -- 글 내용 NOT NULL

BOARD_WRITEDATE DATE NOT NULL, -- 글 작성시간 NOT NULL

BOARD_NICKNAME VARCHAR2(20) NOT NULL,-- 글 작성자(닉네임) NOT NULL 및 FOREIGN KEY

FOREIGN KEY(BOARD_NICKNAME) REFERENCES MEMBER (MEMBER_NICKNAME)

);


--BOARD 테이블에 대한 시퀀스

CREATE SEQUENCE BOARD_SE

START WITH 1

INCREMENT BY 1

MAXVALUE 500000

NOCYCLE

NOCACHE;


select * from member;


--뷰 생성

create view MEMBER_VIEW

as

select m.MEMBER_NO, m.MEMBER_NICKNAME, m.MEMBER_EMAIL,b.BOARD_TITLE 

from MEMBER m, BOARD b;


--MEMBER 값 삽입

INSERT INTO MEMBER VALUES 

(MEMBER_SE.NEXTVAL,'jg7180','pass01','훈훈1','남','jg555@ver.com');


INSERT INTO MEMBER VALUES 

(MEMBER_SE.NEXTVAL,'jg7181','pass02','훈훈2','남','jg55@ver.com');


INSERT INTO MEMBER VALUES 

(MEMBER_SE.NEXTVAL,'jg7182','pass03','훈훈3','남','jg5@ver.com');


select * from m;


--BOARD 값 삽입

INSERT INTO BOARD VALUES 

(BOARD_SE.NEXTVAL,'오키1','맘대로작성',sysdate,'훈훈2');


select * from member;


select * from m;




select * from board;


select * from b;







※ 주의!!!


시스템 계정에서



--과제

--계정만들기

create user khtest identified by khtest;


--권한주기

grant connect,resource to khtest;

GRANT CREATE VIEW TO khtest;


--동의어 설정 해주기

CREATE PUBLIC SYNONYM M FOR KHTEST.MEMBER;

CREATE PUBLIC SYNONYM B FOR KHTEST.BOARD;