1. 롤
-- 롤을 이용한 생성 (여기)
create user com02 identified by com02;
-- 롤
grant connect, resource to com02;
-- 테이블 스페이스 연결
alter user com02 default tablespace users quota unlimited on users;
2. 데이터 베이스 모델링
- draw.io - 새로운 다이어그램 만들기
- M:N 관계(암기) * 테이블로 만들 수 없어서 1:N으로 만들어주고 N에다 fk를 넣음
비식별 관계: 의사컬럼을 하나 넣음. 먼저 데이터가 들어가고 나중에 변경 가능
-fk는 null값을 가질 수 있으니까, 첫번째 그림처럼 비식별은 신청번호를 넣어주기 때문에 null값이 들어갈 수 있다는 것! (보통 많이 사용함-비회원도 받아줄 수 있음)
식별 관계: 강의번호 pk, 회원 pk를 두개를 한번에 슈퍼키로 이용하고, 슈퍼키로 묶으려면 반드시 회원이랑, 강의 데이터가 반드시 들어가야 함 그래야 insert가 들어갈 수 있음 (즉, 먼저 insert 값이 꽂힌 후 맵핑 테이블로 들어갈 수 있음, pk는 null값이 들어가지 못하니까)
- erd 클라우드
논리적으로는 fk 관계를 가지고 있지만, fk관계는 많이 넣지 않음(비식별로 잡고)
왜? fk제약이 들어갔으면 저기에 있는 데이터만 들어갈 수 있고 즉, 삭제가 되지 않음.
- 코드블럭
CREATE TABLE "user" (
"ID" VARCHAR2(50) NOT NULL,
"INFO" VARCHAR2(50) NULL,
"REGDATE" DATE NULL
);
CREATE TABLE "BOARD" (
"BNO" NUMBER(10) NOT NULL,
"TITLE" VARCHAR2(100) NULL,
"CONTENTS" VARCHAR2(500) NULL,
"REGDATE" DATE NULL,
"ID" VARCHAR2(50) NOT NULL
);
CREATE TABLE "REPLY" (
"RNO" NUMBER(10) NOT NULL,
"TITLE" VARCHAR2(100) NULL,
"CONTENTS" VARCHAR2(500) NULL,
"REGDATE" DATE NULL,
"ID" VARCHAR2(50) NOT NULL,
"BNO" NUMBER(10) NOT NULL
);
CREATE TABLE "ADMIN" (
"ID" VARCHAR2(50) NOT NULL,
"Field" VARCHAR(255) NULL
);
CREATE TABLE "COURSE" (
"CNO" NUMBER(10) NOT NULL,
"TEACHER" VARCHAR2(50) NULL
);
CREATE TABLE "COURSELIST" (
"ID" VARCHAR2(50) NOT NULL,
"ID2" VARCHAR2(50) NOT NULL,
"CNO2" NUMBER(10) NOT NULL
);
ALTER TABLE "user" ADD CONSTRAINT "PK_USER" PRIMARY KEY (
"ID"
);
ALTER TABLE "BOARD" ADD CONSTRAINT "PK_BOARD" PRIMARY KEY (
"BNO"
);
ALTER TABLE "REPLY" ADD CONSTRAINT "PK_REPLY" PRIMARY KEY (
"RNO"
);
ALTER TABLE "ADMIN" ADD CONSTRAINT "PK_ADMIN" PRIMARY KEY (
"ID"
);
ALTER TABLE "COURSE" ADD CONSTRAINT "PK_COURSE" PRIMARY KEY (
"CNO"
);
ALTER TABLE "COURSELIST" ADD CONSTRAINT "PK_COURSELIST" PRIMARY KEY (
"ID"
);
ALTER TABLE "ADMIN" ADD CONSTRAINT "FK_user_TO_ADMIN_1" FOREIGN KEY (
"ID"
)
REFERENCES "user" (
"ID"
);
'TIL > SQL' 카테고리의 다른 글
day37-DB: sql (0) | 2022.11.22 |
---|---|
day36-DB: sql (0) | 2022.11.21 |
day34-DB: sql (0) | 2022.11.17 |
day33-DB: sql (3) | 2022.11.16 |
day32-DB: sql (0) | 2022.11.15 |