(1) 문자열 인코딩 방식
Unicode (U+) : 문자열을 숫자로 표현하기 위해 문자 하나와 숫자 하나를 각각 매핑(연결)한 것
UTF-8 : 아시아 문자는 3byte로 가변 표기 (전세계 언어 모두 처리 가능)
ex) varchar2(20)는 6글자까지 처리 가능
EUC-KR : ksc5601, 아시아 문자는 2byte로 처리 (표현할 수 없는 한글이 존재)
(* 영어랑 숫자는 1byte로 처리)
(2) 데이터 타입 비교
(* 아시아 문자 입력한다고 보면,)
varchar2 4000byte 1333자 (변동사항이 있으면 안좋음, 중간에 빈 공간을 찾아 변동사항 입력 후 연결해야 함)
char 2000byte 666자 (변동사항이 있을 때 좋음, 변동사항을 입력하기 위한 공간이 있기 때문에)
(사이즈가 큰 데이터를 외부 파일로 저장하기 위한 데이터 타입)
clob 4GB (주로 사용)
blob 4GB (학생증 사진,신입사원 사진 등에 사용)
long 1GB or 2GB (검색시에 성능이 떨어지기 때문에 clob을 더 선호, 잊어도 됨)
(3) 데이터베이스 설계 단계
요구사항 분석 (용도 파악) ==> 개념적 설계 (ER 다이어그램) ==> 논리적 설계 (릴레이션 스키마)
- ER 다이어그램을 테이블로 변환
-- 기본 회원 정보
create table member
( userid varchar2(16),
username varchar2(20) not null,
userpwd varchar2(20) not null,
emailid varchar2(16),
emaildomain varchar2(30),
profile varchar2(30),
joindate date default sysdate,
role number(3) default 0, (check 보다는 default값으로 설정,
처음에는 일반회원으로 가입을 시켜놓고, 추후에 등급 변경)
constraint member_userid_pk primary key(userid)
);
-- 상세 회원 정보
create table member_detail
( userid varchar2(16), (*number로 하면 010 or 02 일때, 맨 처음 0을 인식하지 못함)
tel1 varchar2(3),
tel2 varchar2(4),
tel3 varchar2(4),
zipcode varchar2(5),
address varchar2(100),
address_detail varchar2(100),
constraint member_detail_userid_fk foreign key (userid) references member (userid)
);
- 테이블 삭제 (삭제하는 순서 중요)
drop table member_detail; (참조하고 있는 테이블을 먼저 지워야 함)
drop table member; (그 이후에 참조가 되어지는 테이블을 지워야 함)
-------------------------------------------------------------------------------------------------------------------------
-- 게시판 형식
create table board_type
(btype number,
btype_name varchar2(20),
constraint board_type_btype_pk primary key(btype)
);
- 시퀀스 생성
create sequence board_type_btype_seq
increment by 1
start with 1;
-- 카테고리 목록
create table catagory_list
(ccode number,
cname varchar2(30),
constraint cataagory_list_ccode_pk primary key(ccode)
);
- 시퀀스 생성
create sequence catagory_list_ccode_seq
increment by 1
start with 1;
- 게시판 목록
create table board_list
(bcode number,
bname varchar2(30),
ccode number,
btype number,
constraint board_list_bcode_pk primary key(bcode),
constraint board_list_ccode_fk foreign key (ccode) references catagory_list (ccode),
constraint board_list_btype_fk foreign key (btype) references board_type (btype)
);
- 시퀀스 생성
create sequence board_list_bcode_seq
increment by 1
start with 1;
- 테이블 삭제 (삭제 순서 중요)
drop table board_list;
drop table board_type;
drop table category_list;
- 시퀀스 삭제 (순서 중요하지 않음)
drop sequence board_type_btype_seq;
drop sequence catagory_list_ccode_seq;
drop sequence board_list_bcode_seq;
-------------------------------------------------------------------------------------------------------------------------
-- 게시판
create table board
(seq number,
userid varchar2(16),
username varchar2(20),
email varchar2(50),
subject varchar2(100) not null,
content clob not null,
hit number default 0,
logtime date default sysdate,
bcode number,
constraint board_seq_pk primary key(seq),
constraint board_userid_fk foreign key (userid) references member (userid),
constraint board_bcode_fk foreign key(bcode) references board_list (bcode)
);
create sequence board_seq_seq
increment by 1
start with 1;
-- 댓글
create table memo
( mseq number,
seq number,
userid varchar2(16),
mcontent varchar2(200) not null,
mlogtime date default sysdate,
ipaddress varchar2(15),
constraint memo_mseq_pk primary key(mseq),
constraint memo_seq_fk foreign key (seq) references board (seq),
constraint memo_userid_fk foreign key (userid) references member (userid),
);
create sequence memo_seq_seq
increment by 1
start with 1;
-- 답변형 게시판
create table reboard
( rseq number,
seq number,
gcode number,
depth number,
step number,
pseq number,
reply number,
constraint reboard_rseq_pk primary key(rseq),
constraint reboard_seq_fk foreign key (seq) references board (seq)
);
create sequence reboard_seq_seq
increment by 1
start with 1;
- 앨범형 게시판
create table album
( aseq number,
seq number,
savefolder varchar2(8) , (*YYYY/MM/DD로 처리)
originalpicture varchar2(100),
savepicture varchar2(100),
picturemode number(1) default 0, (*정사각형을 기준으로 잡는다면 0이면 가로, 1이면 세로,
요즘엔 많이 사용 x)
constraint album_aseq_pk primary key(aseq),
constraint album_seq_fk foreign key (seq) references board (seq)
);
create sequence album_seq_seq
increment by 1
start with 1;
- 자료형 게시판
create table bbs
( bseq number,
seq number,
savefolder varchar2(8),
originalfile varchar2(100),
savefile varchar2(100),
filesize number,
constraint bbs_bseq_pk primary key(bseq),
constraint bbs_seq_fk foreign key (seq) references board (seq)
);
create sequence bbs_seq_seq
increment by 1
start with 1;
drop table memo;
drop table reboard;
drop table album;
drop table bbs;
drop table board;
drop sequence board_seq_seq ;
drop sequence memo_seq_seq;
drop sequence reboard_seq_seq;
drop sequence album_seq_seq;
drop sequence bbs_seq_seq;
-------------------------------------------------------------------------------------------------------------------------
(* 드라이브는 나눠서 사용하는 것이 좋다.)
d 드라이브 : 자료 저장만
c 드라이브 : 설치만
- 네이버에서 반디집 다운로드
- 네이버에서 에디트플러스 다운로드 에디트플러스 문서 편집기 5.2 다운로드
- 네이버에서 에버노트 다운로드
'Database > Oracle' 카테고리의 다른 글
19.10.14. (스크립트/SYSDATE/답변게시판) (0) | 2021.01.14 |
---|---|
19.10.11. (INSERT ALL/COMMENT ON/ROLLUP/DB모델링) (0) | 2021.01.14 |
19.10.08. (TOP_N질의/치환변수/RANK/DENSE_RANK/ROW_NUMBER/PARTITION BY/ER 다이어그램/PK vs FK) (0) | 2021.01.14 |
19.10.02. (VIEW/TOP-N질의 /INDEX/SEQUENCE) (0) | 2021.01.14 |
19.10.01. (LOCK/DDL/CREATE 테이블 생성 및 기존 테이블 복사/ALTER/DROP/제약조건) (0) | 2021.01.14 |