。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/웹프로그래밍

[NC7기-76일차(8월10일)] - 웹프로그래밍 57일차

quarrrter 2023. 8. 10. 15:13

DB 모델링

exerd.com의 ER-Diagram 도구 설치 

https://exerd.com/down.do#a3

http://exerd.com/update/exerd/3.x/

복붙

윈도우가 아니라 help

 

DB 모델링의 목적 

=> 중복 데이터 제거, 중복 컬럼 제거 

 

모델링 : 글이나 그림을 사용하여 추상화하는 것 (인공지능 모델링: 계산식을 만드는 것) 

렌더링 : 명령어를 해석하여 화면에 출력하는 것 (HTML, CSS, JS 를 파싱(분석)해서 화면에 출력하는 것)

 

DB 모델링: 데이터를 분석하고 구조화 시켜서 데이터 속성과 관계를 글과 그림으로 표현(추상화)한것

목표: 데이터가 중복되지 않게 데이터를 테이블로 구조화하는것

중복 데이터 제거 ==> 데이터의 안정성, 신뢰성을 높인다. ==> 일관성, 무결성을 유지한다. 

 

용어

table(relation; entity; file)
- intension(schema; header) => 데이터 구조 설계도  //자바에서 클래스 
- extension(instance; data) => 데이터  //자바에서 인스턴스 
row(tuple; record) => 데이터(여러 컬럼으로 이루어진) 한 개. 예) 학생 /하나의 데이터 덩어리 가로
- column(attribute; field) => 데이터의 한 항목. 예) 이름, 학번, 전화번호 / 세로

schema : 저기 앞에 붙은거. 프로토콜이라 부르기엔 file은 파일이지, 프로토콜이 아님.


schema : 저기 앞에 붙은거. 프로토콜이라 부르기엔 file은 파일이지, 프로토콜이 아님.
database도 schema라고 부름


database도 schema라고 부름

 

데이터를 구분할 때 사용할 식별자 (수퍼 키라 부르기도 함)

식별자: 데이터를 구분할 때 사용하는 값(한개 이상). 한 개로 부족할 때 여러 개 섞어서 키로 씀 

 

후보키 (candidate key) 선정

super key 둘 중에서 선별된 최소 키. 

최소키: 최소한의 컬럼 값만으로 식별이 가능한 key 

 

기본키(primary key)

후보키 중 데이터 식별자로 선정된 키 

다른 테이블의 데이터가 참조할 수 있다. 

변경이 불가하다. => 값을 변경할 수 있는 컬럼은 pk로 선정하면 안된다. 

 

대안키(Alternate key)

후보키 중 기본키가 아닌 나머지 후보키 

unique 컬럼으로 설정한다. pk는 아니지만 pk처럼 중복되서는 안되기 때문에 

 

대리 키(surrogate key)/인공 키(artificial key)

pk로 사용될 필요한 컬럼이 없을 때 임의의 컬럼을 추가하여 pk로 사용

예) 게시글 번호

 

외래키:(foreign key)

다른 테이블의 pk나 unique 컬럼 값을 저장하는 컬럼. 

FK있는 테이블: 자식테이블

FK가 가리키는 PK 컬럼이 있는 테이블: 부모 테이블 

 

 

DB 모델링 순서

1. 논리 모델링: DBMS 특성을 고려하지 않고 데이터에 집중해서 개념을 도출하고 구조화시킨다. 

엔티티 및 속성 식별 -> 각 엔티티의 PK 선정 -> 엔티티별 관계 식별 (배타적, 통합,일반) -> 제 1정규화 (중복데이터, 중복 컬럼 제거) -> 제 2정규화(PK가 여러 컬럼으로 이루어진 경우 PK에 종속되지 않는 일반컬럼 분리) -> 제3정규화(PK가 아닌 다른 일반 컬럼에 종속된 경우 해당 컬럼 분리)-> 다대다 관계 해소 -> 관계의 차수 지정 -> 유니크 컬럼 선정  -> NULL 허용여부 지정 -> 인덱스 컬럼 지정 -> 포함관계/ 배타 관계 식별 

 

2. 논리 모델링: DBMS 특성을 반영 

DBMS 규칙/관계에 맞춰 테이블/ 컬럼명 설정 -> 도메인 정의 및 적용 -> 자동 증가 PK 컬럼 설정 -> 기본값 및 제약조건 설정 -> 포워드 엔지니어링(SQL DDL 작성)

 

 

제1정규화: 

- 정규화? 데이터 중복을 찾아내어 별도의 테이블로 데이터를 분리시키는 것.
- 중복 데이터 또는 중복 컬럼을 별도의 테이블로 분리하여 부모-자식 관계를 맺는다.
- 데이터를 참조 하는 테이블이 자식테이블이고, 데이터를 갖고 있는 테이블이 부모 테이블이다.
- 자식 테이블에서는 부모 테이블의 데이터를 가리키기 위해 그 데이터의 pk값을 보관해야 한다.
  - 부모-자식 테이블을 식별하기 애매할 때 1 : 다 관계에서 1 쪽이 부모 테이블이다.
- 이렇게 부모 테이블의 데이터에 대해 PK값을 저장하는 컬럼을 외부키(FK)라 부른다.
- 중복 컬럼? 사진1, 사진2, 사진3
- 중복 데이터? 교육센터명, 부서명, 은행명, ...

 

 

1.논리모델링

엔티티 및 속성 식별 -> 각 엔티티의 PK 선정 -> 엔티티별 관계 식별 (배타적, 통합,일반)
빨간거 누르고 ,부모선택, 자식선택, FK 생성됨
제1정규화, 현재 제2정규화 할건 없음

제3정규화: 주소테이블을 뺌 

다대다 관계 해소

테이블 속 데이터가 다른 테이블의 몇개의 데이터와 관계를 맺냐
강의배정: 관계 테이블( 엔티티라고 안 부름)
PK 컬럼 지정

 

비식별관계와 식별관계

 

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

9.

유니크키 지정

위쪽 +,

10 null 허용 ㅇ여

널허용

*포함관계 배타적 관계

관계선의 종류

실선(Identifying): 식별관계
부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우
부모가 있어야 자식이 생기는 경우


점선(Non-Identifying): 비식별관계
부모테이블의 PK가 자식테이블의 일반속성이 되는 경우
부모가 없어도 자식이 생기는 경우