본문 바로가기
공부기록/MySQL

3월 27일 (1) DB - 논리적 설계, E-R다이어그램, 테이블 명세서

by project100 2023. 3. 27.

논리적 설계

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