반응형
2. 논리적 설계
2.1 ERD
| |
|
(ERD로 작성)
(새발표기법)
2.2 TABLE 기술서
TABLE
| 테이블명 | 설명 |
| 구독자 | 회원의 정보 저장 |
| 출판사 | 관리자의 정보 저장 |
- Reader TABLE
| 한글 필드명 | 설명 | |
| 고객번호 | 회원에게 부여된 고유 번호(FK) | |
| 이름 | 회원의 이름 | |
| 나이 | 회원의 나이 | |
| 성별 | 회원의 성별 | |
| 주소 | 도 | 회원 주소지의 도 |
| 시 | 회원 주소지의 도 | |
| 구 | 회원 주소지의 도 | |
| 동 | 회원 주소지의 도 | |
| 상세 | 회원 주소지의 나머지 상세 주소 | |
| 구독기간 | 회원의 구독 기간 | |
| 총구독기간 | 회원의 총 구독 기간 | |
| 연락처 | 회원의 연락처 | |
- Publisher TABLE
| 한글 필드명 | 설명 |
| 고객번호 | 회원에게 부여된 고유 번호 |
| 발행호 | 출판사에서 출간한 책의 발행 호 |
| 발송일 | 출판사에서 출간한 책의 전체 발송날짜 |
| 비밀번호 | 출판사(관리자)임을 인증할 수 있는 비밀번호 |
3. 물리적 설계
3.1 ERD
(새발표기법)
3.2 TABLE 기술서
TABLE
| 테이블명 | 영문 TABLE명 |
| 구독자 | Reader |
| 출판사 | Publisher |
- 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 | ||
- 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
반응형
BIG
'Programming' 카테고리의 다른 글
| 개발측면 - 생산 문제 에스컬레이션 (0) | 2025.01.07 |
|---|---|
| 개발을 시작하는 Python 신입, 주니어에게 (0) | 2025.01.06 |
| The Joel Test : 좀 더 좋은 프로그래밍을 위한 12단계 (0) | 2023.04.12 |
| 개발자용 폰트 :: Bitstream Vera Sans Mono + 맑은고딕 (3) | 2023.04.12 |
| Google 스타일 가이드 (0) | 2023.03.23 |
댓글