day 0613 데이터베이스 모델링(1)
데이터베이스 모델링
논리
물리
-- ERwin 설치하기




-- 데이터베이스 oracle 9.x 로 설정

-- 모델링 실습 시작

-- 차수 선모양 바꾸기



-- 표 모델링 연습
무정규화 상태로 하나의 테이블에 모든 속성 담기


-- Entity(테이블명) / 주식별자 / 속성

tab 누르면 칸 이동
enter 누르면 줄 추가
shift + 왼쪽클릭 수정 (잘 안됨..)
-- 저장하기

<< 단계별 정규화 과정 >>
-- 1차 정규화
반복 그룹 속성 추출하기
추출한 개체는 자식이 된다
식별관계가 되도록 한다
차수
부모를 누르고 자식을 누르면 선이 그어진다
identifying relationship : 식별자


-- 2차 정규화
주식별자의 완전 기능 종속 되지않는 속성 추출
(주식별자 속성이 여러개일 때)
부모 개체가 추출되고 반드시 식별관계(실선)
-- 3차 정규화
주식별자의 이행종속 속송 추출
부모 개체가 추출되고 반드시 비식별관계(점선)

-- 차수 정하기
cardinality(자식)
부모타입은 null
-- Zero or One : 안나올 수 있고 하나만 나올 수 있다

-- One or More : 한번 나올 수 있고 여러번 나올 수 있다


Zero or One : 안나올 수 있고 하나만 나올 수 있다
One or More : 한번 나올 수 있고 여러번 나올 수 있다 (한명이상)
Zero or More : 안나오거나 하나
Exactly : 1:1 관계는 1을 써준다

-- Logical 에서 physical로 바꿔준다


-- 영어로 바꿔주기
-- 타입 바꿔주기 (더블클릭)


-- 물리 모델링 완성

14:00 ~
-- Tools
Forward > preview 누르고 schema 트리거 만들기 전까지 복사하기


CREATE TABLE customer (
cno NUMBER NOT NULL,
cname VARCHAR2(20) NULL,
bno VARCHAR2(20) NULL
);
ALTER TABLE customer
ADD ( PRIMARY KEY (cno) ) ;
CREATE TABLE detail (
qty NUMBER NULL,
saleprice NUMBER NULL,
ono NUMBER NOT NULL,
pno NUMBER NOT NULL
);
ALTER TABLE detail
ADD ( PRIMARY KEY (ono, pno) ) ;
CREATE TABLE orders (
ono NUMBER NOT NULL,
orderdate DATE NULL,
total NUMBER NULL,
cno NUMBER NOT NULL,
status VARCHAR2(20) NULL
);
ALTER TABLE orders
ADD ( PRIMARY KEY (ono) ) ;
CREATE TABLE product (
pno NUMBER NOT NULL,
name VARCHAR2(20) NULL,
price NUMBER NULL
);
ALTER TABLE product
ADD ( PRIMARY KEY (pno) ) ;
ALTER TABLE detail
ADD ( FOREIGN KEY (pno)
REFERENCES product ) ;
ALTER TABLE detail
ADD ( FOREIGN KEY (ono)
REFERENCES orders ) ;
ALTER TABLE orders
ADD ( FOREIGN KEY (cno)
REFERENCES customer ) ;
-- 사용자 새로만들기

-- 부모를 먼저 지우면 '외래 키에 의해 참조되는 고유/기본 키가 테이블에 있습니다'
테이블 지우는 순서 : 자식을 먼저 삭제하고 부모를 지운다

-- 테이블잘못만들어서 사용자 삭제하고 다시 만들었다,,


- 다음의 인사기록카드 표에 해당하는 데이터 모델링을 실습해봅니다


- 오늘 학습한 내용에 대하여 요약 및 정리하고
- 팀별로 프로젝트 관련 회의를 진행합니다
- 회의가 일찍 끝나면 팀별로 호텔 예약 시스템에 대하여 모델링 작업을 해 봅니다