발표.

 

오늘 과제는 페이지 내에서 필요한 데이터를 뽑아서 테이블로 만들어보자

몇개의 테이블이 나올지, 컬럼은 뭐가 되어야하는지. DB 구축하는 것 까지.

 

12장 객체를 생성, 변경, 삭제하는 데이터 정의어

localhost_spring 에서 테이블 생성해보자.

----------------------------
-- 12-2 테이블을 생성하는 CREATE
----------------------------

-- 회원 테이블 생성
create table member (
    mid         varchar(15) not null,  -- 단위는 byte
    mname       varchar(20) not null,
    mpassword   varchar(15) not null,
    mage        number(3)   not null,   -- 주민등록번호가 있다고해서 나이를 받지 않으면 안된다.
    mssn        char(13)    not null,
    mdate       date        not null,
    nickname    varchar(20) null
);

-- 테이블 삭제
drop table member;

-- 게시판 테이블 생성
create table board (    -- field 값에 b를 붙인 이유: 1.예약어(키워드)와 겹치지 않기위해.
    bno         number          not null, -- 게시글 번호는 번호 제한이 없어야한다.
    btitle      varchar(300)    not null,
    bcontent    clob            null,   -- CLOB: 캐릭터 라지 오브젝트
    bwriter     varchar(20)     not null,
    bdate       date            not null,
    bhitcount   number          not null,
    battach     blob            null   -- BLOB : 바이너리 라지 오브젝트(이미지 파일같은 경우)
);

-- 게시판 테이블 삭제
drop table board;

-- 실제로 이렇게 만들기보다 UI로 테이블을 작성하는 경우가 많다.

DATE 타입은 연/월/일/시/분/초 까지 나타낼 수 있다

TIMESTAMP 타입은 나노 초 단위 --> 사용자 접속이 엄청나게 많은 상태라면 나노 초 단위로 나누어 접속 대기 번호를 만들어 줄 수 있다..

 

 

14-4 유일하게 하나만 있는 값 : PRIMARY KEY

 

실제로 이렇게 만들기보다 UI로 테이블을 작성하는 경우가 많다.

보기 - 데이터모델 - 브라우저

이는 dmd 파일로 저장된다.

 

하나의 테이블엔 primary key는 하나이다.

하지만 꼭 하나의 컬럼으로만 PK를 설정할 수 있는 건 아니다.

컬럼 여러개를 합하여 PK로 구성할 수 있는데, 이러한 경우 '복합키'라고 할 수 있다.

 

우리가 제약 조건을 만들면 '이름'으로 관리가 된다. '이름'으로 저장이 된다는 것.

사용자가 직접 이름을 주지 않으면 오라클에서 자동적으로 '이름'을 만들어준다.

create table member (
    mid         varchar(15) primary key,  -- 단위는 byte
    mname       varchar(20) not null,
    mpassword   varchar(15) not null,
    mage        number(3)   not null,   -- 주민등록번호가 있다고해서 나이를 받지 않으면 안된다.
    mssn        char(13)    not null,
    mdate       date        not null,
    nickname    varchar(20) null
);

 

-- 제약 조건 이름주기
create table member (
    mid         varchar(15) not null,  -- 단위는 byte
    mname       varchar(20) not null,
    mpassword   varchar(15) not null,
    mage        number(3)   not null,   -- 주민등록번호가 있다고해서 나이를 받지 않으면 안된다.
    mssn        char(13)    not null,
    mdate       date        not null,
    nickname    varchar(20) null,
    -- primary key(mid) -- 이 경우 오라클에서 자동적으로 이름을 만들어 저장해준다.
    constraints pk_mid primary key(mid)
);

 

상품 테이블 생성

-- 상품 테이블 생성
CREATE TABLE product (
    pid         number not null,    -- 상품 고유 id
    pname       varchar(30) not null,  -- 상품 이름
    pcompany    varchar(30) not null,   -- 상품 제조사
    pprice      number not null, -- 상품의 가격
    pstock      number not null -- 상품의 재고 수량 // 상품의 재고 수량은 없을 수 있지만, 디폴트 값으로 0을 지정해주고 싶어 not null을 붙였다.
);

 

상품 테이블 수정

-- 상품 테이블 수정
alter table product
    add constraints pk_pid primary key(pid);

 

 

상품 테이블 삭제

-- 상품 테이블 삭제
drop table product;

 

 

--> '테이블 스키마' 혹은 'ERD (Entity Relationshiip Diagram)'이라고 부른다.

 

 

14-5 다른 테이블과 관계를 맺는 FOREIGN KEY (외래키 or 참조키 라고 부른다)

create table board (
    bno         number          primary key,
    btitle      varchar(300)    not null,
    bcontent    clob            null,
    bwriter     varchar(20)     references member(mid) not null,
    bdate       date            not null,
    bhitcount   number          not null,
    battach     blob            null
);

 

확인해보자. 멤버 테이블에서 데이터 하나 생성

이번엔 보드 테이블에서 데이터를 생성해보자.

user2가 멤버 테이블에 없기 때문에 오류난다!

따라서 부모 키가 있어야 한다.

커밋 성공한다.

 

 

외래키 설정하기

create table board (
    bno         number          primary key,
    btitle      varchar(300)    not null,
    bcontent    clob            null,
    bwriter     varchar(20)     references member(mid) not null,
    bdate       date            not null,
    bhitcount   number          not null,
    battach     blob            null
);

 

외래키 '이름' 지정해주기

-- 외래키 이름을 지정해주고 싶을 때
create table board (
    bno         number          primary key,
    btitle      varchar(300)    not null,
    bcontent    clob            null,
    bwriter     varchar(20)     not null,
    bdate       date            not null,
    bhitcount   number          not null,
    battach     blob            null,
    constraints fk_bwriter foreign key(bwriter) references member(mid) 
);

 

테이블 수정해주기

-- 테이블 수정하기
create table board (
    bno         number          primary key,
    btitle      varchar(300)    not null,
    bcontent    clob            null,
    bwriter     varchar(20)     not null,
    bdate       date            not null,
    bhitcount   number          not null,
    battach     blob            null
);

alter table board
    add constraints fk_bwirter foreign key(bwriter) references member(mid)

 

 

데이터 모델러에서 참조키 연결하기

보드 테이블에 member_mid가 생긴다.

다시 화살표를 더블클릭하여 bwriter로 열을 선택해준다.

이렇게 바뀐다.

위의 경우에는 보드에 있던 원래 필드를 외래키로 설정해준 것이고,

 

orderproduct 테이블에서 외래키를 지정해보자.

member_mid로 오라클이 자동으로 이름을 지정해준다. 이 이름을 바꾸려면 오더프로덕트 테이블을 더블클릭하여 열에서 이름을 바꾸어준다.

 

위의 테이블을 DDL 생성을 눌러보고 확인해보자.

 

잘 적용되었다.

 

오늘 과제

우리가 만든 각각의 페이지들을 잘 분석하자.

어떠한 것들을 우리가 관리를 해야될 지. 컬럼을 어떻게 생성하고 구현할 지.

내가 주문을 하려면 어떤 것들이 필요할 지 등. 모든 페이지의 데이터들을 조사하자 (요구 분석)

요구 분석 이 후 얻은 데이터가 있다면 바로 설계해보자.

 

내일 아침 9시에 팀장이 발표

'JAVA' 카테고리의 다른 글

43일 2024-04-26  (0) 2024.04.26
42일차 2024-04-25  (1) 2024.04.25
40일차 2024-04-23  (0) 2024.04.23
36일차 2024-04-17  (0) 2024.04.17
34일차 2024-4-15  (0) 2024.04.15

+ Recent posts