본문 바로가기
Programming

ERD 표기 방법 / 논리적 설계, 물리적 설계 / 테이블 정의

by Chan_찬 2023. 4. 13.
728x90

2. 논리적 설계

2.1 ERD

 

 
 

(ERD로 작성)

 
(
새발표기법)



2.2 TABLE 기술서

TABLE

테이블명 설명
구독자 회원의 정보 저장
출판사 관리자의 정보 저장

 

  1. Reader TABLE
한글 필드명 설명
고객번호 회원에게 부여된 고유 번호(FK)
이름 회원의 이름
나이 회원의 나이
성별 회원의 성별
주소 회원 주소지의 도
회원 주소지의 도
회원 주소지의 도
회원 주소지의 도
상세 회원 주소지의 나머지 상세 주소
구독기간 회원의 구독 기간
총구독기간 회원의 총 구독 기간
연락처 회원의 연락처

 

  1. Publisher TABLE
한글 필드명 설명
고객번호 회원에게 부여된 고유 번호
발행호 출판사에서 출간한 책의 발행 호
발송일 출판사에서 출간한 책의 전체 발송날짜
비밀번호 출판사(관리자)임을 인증할 수 있는 비밀번호

3. 물리적 설계

3.1 ERD

 

(새발표기법)

 


3.2 TABLE 기술서

TABLE

테이블명 영문 TABLE
구독자 Reader
출판사 Publisher

 

  1. Reader TABLE
한글 필드명 영문 필드명 데이터타입 비고
고객번호 idReader DOUBLE Primary key
이름 ReaderName CHAR(10)  
나이 ReaderAge INTEGER  
성별 ReaderSex BOOL  
주소 ReaderAdd_do INTEGER  
  ReaderAdd_city CHAR(10)  
  ReaderAdd_gu CHAR(10)  
  ReaderAdd_dong CHAR(10)  
  상세 ReaderAdd_detail CHAR(10)  
구독기간 ReaderTerm INTEGER  
총구독기간 Reader3Term DATE  
연락처 ReaderTel INTEGER  

 

  1. Publisher TABLE
한글 필드명 영문 필드명 데이터타입 비고
고객번호 ReaderNum NUMBERIC(8) Primary Key
발행호 idPublisher INTEGER  
발송일 sendDate DATE  
비밀번호 passwordOwner INTEGER  

 

 

4. DDL

CREATE TABLE Publisher (
sendDate DATE,
passwordOwner INTEGER,
idPublisher INTEGER,
ReaderNum NUMERIC(8) NOT NULL
);
 
DROP INDEX XPKPublisher;
 
CREATE UNIQUE INDEX XPKPublisher ON Publisher
(
ReaderNum ASC
);
 
 
ALTER TABLE Publisher
ADD PRIMARY KEY (ReaderNum);
 
 
CREATE TABLE Reader (
ReaderName CHAR(10),
ReaderAge TIMESTAMP(),
ReaderSex SMALLINT,
ReaderAdd_do CHAR(10),
ReaderAdd_city CHAR(10),
ReaderAdd_gu CHAR(10),
ReaderAdd_dong CHAR(10),
ReaderAdd_detail CHAR(30),
ReaderTel NUMERIC(12),
ReaderTerm INTEGER,
Reader3Term TIMESTAMP,
ReaderNum NUMERIC(8) NOT NULL
);
 
DROP INDEX XPKReader;
 
CREATE UNIQUE INDEX XPKReader ON Reader
(
ReaderNum ASC
);
 
 
ALTER TABLE Reader
ADD PRIMARY KEY (ReaderNum);
 
 
ALTER TABLE Reader
ADD FOREIGN KEY (ReaderNum)
REFERENCES Publisher (ReaderNum)
ON DELETE RESTRICT;
 
 
 
 
create trigger tD_Publi after DELETE on Publisher
REFERENCING OLD AS OLD for each row mode db2sql
WHEN (0 < (select count(*) from Reader where Reader.ReaderNum =
old.ReaderNum))
BEGIN ATOMIC
SIGNAL SQLSTATE '75001' ('Cannot DELETE Publisher because Reader
exists.');
END
!!
 
create trigger tI_Reade after INSERT on Reader
REFERENCING NEW AS NEW for each row mode db2sql
WHEN ((0 = (select count(*) from Publisher where new.ReaderNum =
Publisher.ReaderNum))
)
BEGIN ATOMIC
SIGNAL SQLSTATE '75001' ('Cannot INSERT Reader because Publisher
does not exist.');
END
!!

 

728x90
728x90
Buy me a coffeeBuy me a coffee

댓글