sql #2

MSSQL 2019. 12. 8. 23:47

* 데이터베이스 모델링

 

데이터베이스 모델링은 db 구축의 준비과정이다. 현실에서 일어나는 작업이나 사물을

DBMS를 통해 옮기기 위한 것임.

 

1. 계획 - 요구사항 분석

산출물: 요구사항 명세서, 업무 흐름도

 

2. 분석 - 개념적 데이터 모델링 ERD

산출물: 애트리뷰트 기술 및 관계 정의

 

3. 설계 - 물리적 데이터베이스 설계

산출물: 테이블 명세서

 

4. 구축 - 데이터베이스 테이블 생성

 

-----------------------

계획

 

* 요구사항 분석

데이터 모델링하기 위해 요구사항 분석을 함. 기존의 문서를 조사하고

설문을 통해 요구사항을 기술함.

-----------------------

분석

 

* 논리적 설계

요구사항 분석 산출물로 데이터 모델링 해야함.

애트리뷰트, 자료간 관계 정의함.

골격 구축 작업 단계로 개체 관계 모델 (ERD)를 사용함. entity relationship diagram

 

* 개체관계모델

데이터베이스의 전체 구조를 쉽게 나타냄. 업무를 검토하고 분석 시에 사용함.

 

엔티티(entity): ERD에서 사각형으로 표현함. 사물, 사람같은 개념이다. 

엔티티는 개체타입과 인스턴스로 구분됨.

사각형으로 표현한게 개체타입. 인스턴스는 테이블처럼 생긴 엔티티의 세부적인 정보들.

예로 고객이란 인스턴스는 id, pw, 주소 등이 들어있는 집합임.

 

애트리뷰트(attribute): ERD에서 타원으로 표현함. 엔티티는 애트리뷰트의 집합이다.

고객이란 엔티티는 id, pw, 주소라는 애트리뷰트를 가짐.

 

ERD에서 고객이란 사각형 엔티티에 id, pw 등 타원으로 연결함.

중복된 값을 구별하는 애트리뷰트는 기본키이며 ERD에서 밑줄로 표시함.

 

관계: 엔티티간 연관성이며 ERD에서 마름모로 표현함.

관계의 차수(degree)란? 관계의 차수로 관계로 연결된 엔티티 타입의 개수를 말함.

카디날리티 비율(cadinality ratio): 엔티티를 이루는 각 값들이 관계에 참여할 수 있는 수

1:1 1:n m:n으로 구분함.

 

1:1 (one to one) - 사원 : 컴퓨터의 관계 

사원 당 컴퓨터는 1대 이므로 1:1이다.

 

1:n (one to many) -  부서 : PC의 관계 

부서 안에 PC가 여러 대 있으므로 1:n이다.

 

m:n (many to many) - 고객 : 상품의 관계 

고객은 여러 상품을 주문할 수 있다 / 상품은 여러 고객에게 구매될 수 있다.

 

* 릴레이션 구조

행과 열로된 테이블인데 표 형태이다.

 

테이블 구조에 약간의 제약조건이 추가된게 릴레이션이다.

1. 어떤 행도 동일해서는 안된다.

2. 각 열은 유일한 이름을 가진다.

 

릴레이션 = 릴레이션 스키마 + 릴레이션 익스턴스

릴레이션 스키마: 첫 행의 헤더이며 릴레이션이 어떻게 구성되는지 기본적인 정보를 담고 있다.

릴레이션 익스턴스: 스키마에 정의된 것에 따라 실제 저장되는 데이터들

 

튜플: 릴레이션 구성하는 행 / 애트리뷰트의 모임

애트리뷰트: 데이터베이스 구성하는 가장 작은 논리적 단위.

도메인: 애트리뷰트에 저장될 수 있는 데이터의 집합 (성별이라면 남, 여)

차수: 애트리뷰트의 개수 (열 개수)

카디날리티: 튜플의 개수 (행 개수)

 

* 키란?

데이터베이스 조건에 만족하는 튜플 찾거나, 정렬의 기준이 되는 애트리뷰트

 

기본키: 

후보키 중에 주 키.

널 값을 가질 수 없음.

중복값 가질 수 없음.

 

외래키: 

관계를 맺고 있는 참조 릴레이션의 기본 키와 같음

외래키 지정 시 참조 테이블의 기본 키에 없는 값 입력할 수 없음

 

후보키: 

튜플을 유일하게 식별할 수 있는 속성들의 집합.

기본키로 사용할 수 있는 속성들.

유일성 + 최소성 만족해야함.

 

대체키(보조키): 

후보키가 둘 이상일 때 기본 키를 제외한 나머지 후보 키.

 

슈퍼키: 

속성의 집합으로 구성하여 유일성은 만족하나 최소성 만족못함.

여러 속성을 묶어 키를 구성하다보니 공간 낭비 등 최소성이 만족될 수 없음.

 

* 무결성

개체 무결성: 릴레이션에서 튜플 구분하기 위해 기본키 구성하는 속성은

NULL이나 중복값을 가질 수 없음.

 

참조 무결성: 참조 릴레이션의 기본 키 값과 외래키 값은 NULL이거나 동일해야한다.

 

-----------------------

설계

 

* 물리적 모델

엔티티 -> 테이블로 변환함.

애트리뷰트 -> 필드로 변환

엔티티간 관계 -> 외래키나 다른 테이블로 변환

 

1:1 관계는 두 엔티티를 한 테이블로 통합.

 

1:N 관계는 1이 부모 테이블, N은 자식 테이블이됨.

1의 기본키가 N쪽의 외래키로 들어가고 2개의 테이블로 만듦.

 

N:M 관계는 새로운 테이블을 만든다.

새로운 테이블은 두 엔티티의 기본키를 외래키로 설정하여 만듬.

새로운 테이블의 기본키는

1. 두 엔티티의 기본키를 외래키로 조합하여 기본키를 만드는 식별관계

2. 새로운 필드를 추가하여 기본키로 설정하고 외래키를 일반 속성으로 두는

비식별관계가 있다.

 

* 테이블 명세

엔티티는 테이블이되고 애트리뷰트는 칼럼이 된다.

'MSSQL' 카테고리의 다른 글

sql #6  (0) 2019.12.08
sql #5  (0) 2019.12.08
sql #4  (0) 2019.12.08
sql #3  (0) 2019.12.08
sql #1  (0) 2019.12.07
블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,