안녕세계

[SK고용디딤돌] MySQL (2/7) - 3주차 본문

[SK고용디딤돌] MySQL (2/7) - 3주차

Junhong Kim 2016. 7. 18. 18:05
728x90
반응형

/** MySQL **/


     Forward Engineering

                →

design                 database

                ←

     Reverse Engineering(역공학)


스키마란? 구조


DB이름이 SCHEME 이름이다. 이 구조에 테이블을 만들어 넣는다. (스키마 = 데이터베이스)

CREATE DATABASE는 DATABASE를 생성하는 DDL(데이터베이스 정의어)이다.

DB는 물리적 저장공간(데이터 파일)이 필요하다.


물리적파일 → 데이터 파일

논리적파일 → 데이터베이스


CREATE TABLE, USER, VIEW 등을 통틀어서 데이터베이스 객체라 함.












/* 역공학을 통해서 Database가 ERD로 그려진 모습 */


* 기본키 : 최소성,유일성을 모두 만족시키는 속성의 집합중 하나, 레코드를 식별할 수 있는 속성

* 외래키 : 릴레이션의 속성 집합이 다른 릴레이션의 기본키로 이용되는 키

* 후보키 : 최소성과 유일성을 모두 만족시키는 속성의 집합

* 대체키 : 후보키중 기본키로 선정되고 남은 키

* 슈퍼키 : 유일성을 만족시켜주는 모든 속성의 집합


* 컬   럼: 동일한 데이터 타입/길이, 같은 특성을 갖는다.

* 레코드: 다양한 속성의 컬럼이 모여서 행을만듬. 이것을 식별하기 위한 키를 기본키라고 함.


CHAR [10] vs VARCHAR (Variable Character) [10] → 문자 10개 라는 뜻


* CHAR → 자리수 변동이 없는 것(고정길이 - 가변길이보다는 조금 더 빠름) (예) 주민등록번호

이 

에 

스 

큐 

엘 

 낭

공 

간 


* VARCHAR → 자리수 변동이 없는 것(가변길이) (예) 생년월일, 이름

 마 

 이 

 에

 스

 큐

 엘


인덱스 = B-Tree Index (Balnced Tree Index) , depth가 일치하는 것



1) PK      2) NN      3) N      4) FK


[점선] Non-identifying Relationship : key -- nonkey (null 허용)

[실선] Identifying Relationship     : key ㅡ key (NN: not null, null 허용하지 않음)



                  ┌── Workbench Tool ──

 논리설계   →   물리설계  →  데이터베이스 구축

  엔터티          DBMS          DDL 스크립트

애트리뷰트        TABLE

릴레이션십        INDEX

                STORAGE

                  ...


1stNF → BCNF


□ : entity [엔티티]

▣ : weak entity [약한 엔티티] (weak entity(가족)의 주속성은 entity(사원)의 주속성 임(생략가능), entity에 의해서 결정 됨)

● : 주식별자

○ : attribute 

◎ : multi-value attribute



기획 → 요구사항 정의서(명세서) → 구조적 문장

                                                ㄴ 분석이 가능한 1)엔티티 2)속성 3)릴레이션십


설명문? 간결&간조 → 주어, 목적어, 서술어 명확




1. 키워드(명사) 추출

  : Entity 추출 → 명사 추출법을 사용

    ㄴ 엔티티는 반드시 2개 이상의 애트리뷰트를 가져야 한다. 명사에 포함되는 것이 명사가 될 수 있다.

    ㄴ 후보들중에 entity가 되는 것이 있고 attribute가 되는 것도 있음 relation도 될 수 도 있음 .


[병원시스템]

- 병원에는 많은 의사가 근무하고 있으며 많은 환자가 진료를 받고 있다.

- 각 환자에게는 여러가지 실시된 검사 기록(검사번호, 검사실)이 유지된다.

- 의사에 대해서 의사번호, 의사명, 진료과목의 정보가 유지된다.

- 환자에 대해서는 환자번호, 환자명, 주민번호, 진료일자의 정보가 유지된다.

- 한 명의 의사는 여러 환자를 진료하며, 한 명의 환자는 여러 의사로부터 진료를 받을 수 있다.


[ERD로 작성]

엔티티관계속성


병원, 의사, 근무, 환자, 진료, 검사기록, 검사번호, 검사실, 유지, 의사번호, 의사명, 진료과목, 환자번호, 환자명, 주민번호, 진료일자, 정보


[ERD → Table(룰)]




X[결정자] → Y : X에 의해서 Y가 결정된다.

회원번호 → (이름, 주소, 나이)


[ERD  FDD(수학적 접근) 작성원칙]

- 1:N 일 경우는 N쪽의 KEY에서 1쪽의 KEY로 화살표 표시한다.

- 1:N 의 경우 관계성의 속성은 N쪽의 KEY에서 해당 속성쪽으로 화살표를 삽입한다.

- 일반화의 경우 서브엔터터 KEY에서 슈퍼엔터티 KEY로 화살표를 삽입한다.

- 다중 값의 경우 해당 엔터티의 KEY와 다중 값 속성을 함께 묶는다.

- M:N 일 경우 양 쪽 KEY를 묶는다.

- N:M 의 경우 관계성의 속성은 양쪽 KEY 묶음에서 해당 속성쪽으로 화살표를 삽입한다.




[학적과시스템]

1. 강사는 여러 과목을 강의한다.

2. 각 강의는 시간들과 장소 정보가 있다.

3. 학생들은 여러 과목에 등록한다.

4. 과목을 등록한 학생들은 과목마다 학점을 부여 받는다.

5. 과목은 과목번호, 과목명 정보를 가지고 있다.

6. 강사는 강사번호, 강의분야, 강사명, 성별 정보를 가지고 있다.

7. 학생은 학번, 학과, 성별, 집주소 정보를 가지고 있다.


728x90
반응형
Comments