DB 모델링
exerd.com의 ER-Diagram 도구 설치
http://exerd.com/update/exerd/3.x/
복붙
DB 모델링의 목적
=> 중복 데이터 제거, 중복 컬럼 제거
모델링 : 글이나 그림을 사용하여 추상화하는 것 (인공지능 모델링: 계산식을 만드는 것)
렌더링 : 명령어를 해석하여 화면에 출력하는 것 (HTML, CSS, JS 를 파싱(분석)해서 화면에 출력하는 것)
DB 모델링: 데이터를 분석하고 구조화 시켜서 데이터 속성과 관계를 글과 그림으로 표현(추상화)한것
목표: 데이터가 중복되지 않게 데이터를 테이블로 구조화하는것
중복 데이터 제거 ==> 데이터의 안정성, 신뢰성을 높인다. ==> 일관성, 무결성을 유지한다.
용어
- table(relation; entity; file)
- intension(schema; header) => 데이터 구조 설계도 //자바에서 클래스
- extension(instance; data) => 데이터 //자바에서 인스턴스
- row(tuple; record) => 데이터(여러 컬럼으로 이루어진) 한 개. 예) 학생 /하나의 데이터 덩어리 가로
- column(attribute; field) => 데이터의 한 항목. 예) 이름, 학번, 전화번호 / 세로
schema : 저기 앞에 붙은거. 프로토콜이라 부르기엔 file은 파일이지, 프로토콜이 아님. |
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.논리모델링
제3정규화: 주소테이블을 뺌
다대다 관계 해소
비식별관계와 식별관계
--------------
9.
유니크키 지정
10 null 허용 ㅇ여
*포함관계 배타적 관계
실선(Identifying): 식별관계
부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우
부모가 있어야 자식이 생기는 경우
점선(Non-Identifying): 비식별관계
부모테이블의 PK가 자식테이블의 일반속성이 되는 경우
부모가 없어도 자식이 생기는 경우
'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > 웹프로그래밍' 카테고리의 다른 글
[NC7기-78일차(8월14일)] - 웹프로그래밍 59일차 (0) | 2023.08.14 |
---|---|
[NC7기-77일차(8월11일)] - 웹프로그래밍 58일차 (0) | 2023.08.11 |
[NC7기-75일차(8월9일)] - 웹프로그래밍 56일차 (0) | 2023.08.09 |
[NC7기-74일차(8월8일)] - 웹프로그래밍 55일차 (2) | 2023.08.08 |
[NC7기-73일차(8월7일)] - 웹프로그래밍 54일차 (0) | 2023.08.07 |