논리적 설계
E-R 다이어그램을 릴레이션 스키마로 변환하는 규칙
1. 모든 개체는 릴레이션으로 변환한다.
개체의 이름 - 릴레이션 이름
개체의 속성 - 릴레이션 속성
개체의 키 속성 - 릴레이션의 기본키
예) 고객 - 고객번호, 이름, 주소, 등급
상품 - 상품번호, 상품명, 재고량, 단가
설계 시 규칙에 맞게 열로 지정할 수 있는 값들을 미리 넣어보자!
스키마
인스턴스
2. 다대다 관계는 릴레이션으로 변환한다.
관계의 이름 - 릴레이션 이름
관계의 속성 - 릴레이션 속성
예) 주문 - 주문번호, 주문수량, 고객번호, 상품번호(외래키)
또는 주문 - 주문수량, 고객번호, 상품번호(외래키이자 기본키)
3. 일대다 관계는 외래키로 표현한다.
4. 일대일 관계는 외래키로 표현한다.(흔하지 않다.)
필수적으로 참여하는 개체 릴레이션만 외래키를 받는다.
모든 개체가 필수적으로 참여하는 릴레이션 하나로 합친다.(거의 없는 경우)
5. 다중 값 속성은 릴레이션으로 변환한다.
+ 기타 고려사항
모든 관계를 독립적인 릴레이션으로 변환할 수 있다.
예)
회원릴레이션 | 회원아이디 | 비밀번호 | 이름 | 나이 | 직업 | 등급 | 적립금 |
상품릴레이션 | 상품번호 | 상품명 | 재고량 | 단가 | |||
제조업체 릴레이션 |
제조업체명 | 전화번호 | 위치 | 담당자 | |||
게시글 릴레이션 |
글번호 | 글제목 | 글내용 | 작성일자 | 회원아이디 | ||
주문릴레이션 | 주문번호 | 주문수량 | 배송지 | 주문일자 | 상품번호 | 회원아이디 | |
공급릴레이션 | 공급일자 | 공급량 | 상품번호 | 제초업체명 |
외래키의 값은 null이 들어갈 수 도 있다.
테이블 명세서 작성
데이터 타입 : 칼럼(열)에 저장할 데이터의 형태
문자열 - text(n)
숫자 - number(n)
n : 자릿수
자릿수를 지정하고 데이터를 집어넣기 때문에 설계 때 제대로 넉넉하게 잡아 주는 것이 필요.
널 허용 여부 : 데이터가 입력되지 않는 것을 허용함(null)
N - 허용 안 함 예) 아이디, 비밀번호
Y - 허용함(비워 놓을 수 있음) 기본값
기본값 : 입력값이 없을 경우 사용할 값을 지정
기본키 : 키 속성 열일 경우 표시(O 또는 PK)
비워두는 경우도 있다. 안 넣어도 된다.
외래키 : 외래키가 사용되는 테이블일 경우 작성(FK)
제약조건 : 기타 입력값에 대한 제약을 작성
제약조건은 데이터에서 작성하는 경우도 있지만 프로그램에서 짜는 경우도 있다.
시스템 구축을 할 때에는 영어로 작성
공간 자체를 넉넉하게 잡아주어도 된다. 문자열은 자릿수를 지정, 숫자는 소수점일 경우만 자릿수 지정
예)
테이블이름 | 상품 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
상품번호 | INT | N | PK | |||
상품명 | VARCHAR(20) | N | ||||
재고량 | INT | N | 0 | 0이상 | ||
단가 | INT | N | 0 | 0이상 |
테이블이름 | 제조업체 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
제조업체명 | VARCHAR(30) | N | PK | |||
전화번호 | INT | N | ||||
위치 | VARCHAR (200) |
Y | ||||
담당자 | VARCHAR(10) | N |
테이블이름 | 게시판 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
글번호 | INT | N | PK | |||
글제목 | VARCHAR(50) | Y | ||||
글내용 | VARCHAR (10000) |
Y | ||||
작성일자 | INT | N |
테이블이름 | 주문 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
회원아이디 | VARCHAR(20) | N | FK1 | |||
상품번호 | INT | N | FK2 | |||
주문번호 | INT | N | PK | |||
주문수량 | INT | N | 0이상 | |||
배송지 | VARCHAR (200) |
N | ||||
주문일자 | INT | N |
테이블이름 | 공급 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
제조업체명 | VARCHAR(30) | N | PK | FK1 | ||
상품번호 | INT | N | PK | FK2 | ||
공급일자 | INT | N | ||||
공급량 | INT | N |
ER Diagram을 그리세요
1) 회사는 4개의 부서를 운영한다. 부서는 (부서번호, 부서이름)을 저장한다.
2) 부서는 1명 이상의 직원(직원번호, 직원이름, 직책)을 두고 있다.
각 직원은 한 개의 부서에 소속된다.
3) 직원은 가족(이름, 나이)을 부양할 수 있다.
4) 각 직원은 근무했던 부서에 대한 근무기록(기간, 직책)이 있다.
작성된 ERD를 가지고 테이블 명세서를 작성하시오.
답
테이블이름 | 부서 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
부서번호 | number | N | PK | |||
부서이름 | text(20) | N |
테이블이름 | 직원 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
직원번호 | number | N | PK | |||
직원이름 | text(10) | N | ||||
직책 | text(10) | N | 사원 | 사원, 대리, 과장, 이사, 대표만 입력 |
테이블이름 | 부양가족 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
직원번호 | number | N | FK | |||
이름 | text(10) | N | PK | |||
나이 | number | N |
테이블이름 | 소속 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
소속번호 | number | N | PK | |||
부서번호 | number | N | FK | |||
직원번호 | number | N | FK | |||
근무기간 | date | N | ||||
직책 | text(10) | N |
ER Diagram을 그리세요
1) A 회사는 직원들이 사용하는 주차건물에 주차장이 여러 개 있다.
2) 각 주차장은 주차장 이름, 위치, 주차대수, 주차층 정보로 구성된다
3) 각 주차장의 주차공간은 일련번호가 붙은 주차 공간으로 구성되어 있다
4) 직원은 지정 주차 공간을 요청할 수 있다.
직원은 직원번호, 이름, 구내전화번호, 운전면허정보 정보로 구성된다
작성된 ERD를 가지고 테이블 명세서를 작성하시오.
답
테이블 | 직원 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
직원번호 | number | N | PK | |||
주차장이름 | text(20) | N | ||||
구내전화번호 | number | N | ||||
운전면허정보 | number | N |
테이블 | 주차장 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
이름 | text(10) | N | PK | |||
주차층 | number | N | ||||
위치 | text(50) | N | ||||
주차대수 | number | N | 0이상 |
테이블 | 주차공간 | |||||
속성이름 | 데이터타입 | 널허용여부 | 기본값 | 기본키 | 외래키 | 제약조건 |
직원번호 | number | N | FK1 | |||
주차장이름 | text(20) | N | FK2 | |||
일련번호 | number | N | PK |
'공부기록 > MySQL' 카테고리의 다른 글
3월 28일 (2) DB - My SQL DDL 테이블 제약 조건, 삭제, 수정 (0) | 2023.03.28 |
---|---|
3월 28일 (1) DB - My SQL DDL 자료형, 테이블 삽입 (0) | 2023.03.28 |
3월 27일 (2) DB - MySQL 사용 (0) | 2023.03.27 |
3월 24일 (2) DB - 데이터베이스 설계 (0) | 2023.03.24 |
3월 24일 (1) DB - 이론, MySQL 설치 (0) | 2023.03.24 |