ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Schema 작성
    DB/Oracle 2018. 8. 8. 11:28
    반응형

    DB이자 SCHEMA 작성


    SYSTEM 으로 접속 -> User에 들어가서 우클릭 -> Create -> USER 선택








    HR의 권한을 가지고 온다.



    ERD Model에서 Tools -> Forward Engineer











    -- F5 누르면 query대로 TABLE 설계
    CREATE TABLE CUSTOMER
    (
        PHONE VARCHAR2(13) NOT NULL ,
        NAME VARCHAR2(100) NOT NULL ,
        ADDRESS VARCHAR2(2000) NOT NULL
    );



    CREATE UNIQUE INDEX XPK고객 ON CUSTOMER
    (PHONE ASC);



    ALTER TABLE CUSTOMER
        ADD CONSTRAINT XPK고객 PRIMARY KEY (PHONE);



    CREATE TABLE DELIVERY
    (
        DELIVERY_NUMBER VARCHAR2(100) NOT NULL ,
        BOX_SIZE INTEGER NOT NULL ,
        WEIGHT NUMBER NOT NULL ,
        PRICE NUMBER NOT NULL ,
        NAME VARCHAR2(2000) NOT NULL ,
        TYPE VARCHAR2(100) NOT NULL ,
        FRAGIL CHAR(1) NOT NULL ,
        DISTANCE NUMBER NOT NULL ,
        QUICK CHAR(1) NOT NULL ,
        PAY_TYPE CHAR(1) NOT NULL ,
        SHIPPING_FEE INTEGER NOT NULL ,
        RETURN_YN CHAR(1) NOT NULL ,
        MESSAGE VARCHAR2(3000) NOT NULL ,
        RECEIPT_DATE TIMESTAMP NOT NULL ,
        FROM_PHONE VARCHAR2(13) NOT NULL ,
        TO_PHONE VARCHAR2(13) NOT NULL ,
        DELIVERY_MAN_PHONE VARCHAR2(13) NOT NULL
    );



    CREATE UNIQUE INDEX XPK배송 ON DELIVERY
    (DELIVERY_NUMBER ASC);



    ALTER TABLE DELIVERY
        ADD CONSTRAINT XPK배송 PRIMARY KEY (DELIVERY_NUMBER);



    CREATE TABLE DELIVERY_MAN
    (
        PHONE VARCHAR2(13) NOT NULL ,
        NAME VARCHAR2(100) NOT NULL
    );



    CREATE UNIQUE INDEX XPK배송기사 ON DELIVERY_MAN
    (PHONE ASC);


    -- TABLE 간의 관계 설정
    ALTER TABLE DELIVERY_MAN
        ADD CONSTRAINT XPK배송기사 PRIMARY KEY (PHONE);



    ALTER TABLE DELIVERY
        ADD (CONSTRAINT R_1 FOREIGN KEY (FROM_PHONE) REFERENCES CUSTOMER (PHONE));



    ALTER TABLE DELIVERY
        ADD (CONSTRAINT R_4 FOREIGN KEY (TO_PHONE) REFERENCES CUSTOMER (PHONE));



    ALTER TABLE DELIVERY
        ADD (CONSTRAINT R_5 FOREIGN KEY (DELIVERY_MAN_PHONE) REFERENCES DELIVERY_MAN (PHONE));



    1:N 관계에서 1쪽부터 먼저 데이터를 넣어야 한다.

    물리적인 DB에는 관계를 만들지 않는다.


    참조하고 있는 ROW부터 지우고 N관계부터 지워야 한다.

    그런 이유때문에 논리적인 관계만 만들고 물리적인 관계는 만들지 않는다.


    예시를 든 Query문이

    ALTER TABLE DELIVERY
        ADD (CONSTRAINT R_1 FOREIGN KEY (FROM_PHONE) REFERENCES CUSTOMER (PHONE));



    ALTER TABLE DELIVERY
        ADD (CONSTRAINT R_4 FOREIGN KEY (TO_PHONE) REFERENCES CUSTOMER (PHONE));



    ALTER TABLE DELIVERY
        ADD (CONSTRAINT R_5 FOREIGN KEY (DELIVERY_MAN_PHONE) REFERENCES DELIVERY_MAN (PHONE));


    이 부분이다.


    Query를 만들기 위해서 ERD를 이용 한다. * 물리적인 관계는 만들지 않는다. * 원래대로라면 관계를 설정하는 Query문은 작성하지 않는다. *


    반응형

    'DB > Oracle' 카테고리의 다른 글

    Caused by: java.sql.SQLException: ORA-12899: value too large for column  (0) 2018.10.04
    Oracle - SQL Developer ERD  (0) 2018.08.27
    Eclipse에서 Oracle 접속  (0) 2018.08.10
    ERD STUDY  (0) 2018.08.08
    Oracle 11g 설치  (0) 2018.07.31

    댓글

Designed by Tistory.