ComputerScience/Database
Database, Data Modeling with project
ELLIE_ing
2021. 11. 10. 22:56
데이터 모델링이란?
- 효율적으로 데이터 베이스를 구축하기 위해, db의 뼈대를 세우는 작업
-> 테이블 구성하는데 어떤 속성이 필요할까?
-> 사업운영에 어떤 조건이 있을까?
-> 속성 명은 어떻게 설정해야할까?
-> 각 속성의 어떤 조건이 있을까?
-> 해당조건을 어떻게 제약해야할까?
-> 테이블은 몇개로 구성해야할까?
-> 각 속성의 타입은 어떻게 될까?
필요한 조건, 내용을 수집, 정리각 운영 방침을 참고하여, 연관성있는 내용들은 묶어서 정리해보자!
-> 각 정보들을 테이블로 표현, 생성
네이밍 규칙
- 유지보수와 의미의 명확성을 전달하기 위해 네이밍 규칙 설정
- 공통규칙
- 줄임말 사용은 최소화(단, 범용적으로 사용되는 줄임말 사용)
- 테이블 네이밍 규칙
- 테이블 명, 파스칼 표기법 사용
- kickboardRental(x) -> KickboardRental(o)
- 테이블, 뷰(view)임을 한 눈에 확인할 수 있도록 테이블 명 앞에는 'tb_', 'v_'를 붙힌다.
- tb_KickboardRental(킥보드 대여와 관련된 테이블)
- v_KickboardInfoForAnalysis(데이터 분석을 위해 필요한 정보만 모아둔 가상테이블)
- 속성 네이밍 규칙
- 속성명을 작성할 때는 스네이크 표기법 활용
- customerID(x)-> customer_id(o)
- CustomerTel(x) -> customer_tel(o)
- 유일키, 외래키 등은 한 눈에 알아볼 수 있도록 속성 명 앞에 'pk_', 'fk_'를 붙힌다.
단, 중복으로 설정되어있는 경우 외래키> 유일키 순으로 작성한다.- pk_kickboard_id
- fk_pk_customer_id
- 테이블 명, 파스칼 표기법 사용
킥보드 대여테이블
만약 '엘리스토끼'가 E01모델을 한번 더 대여한다면?
-> Duplicate entry 'elice-rabbit' for key 'PRIMARY'
이런 문제를 해결하기 위해 나온 게 ↓↓↓↓↓
복합키(Composite Key)
- 복합키 란?
- 두 개 이상의 속성을 활용하여 튜플(레코드, 행)을 구분
- 킥보드 데여 테이블
- 누가 언제 빌려갔는지가 중요하기에 대여 일자를 추가하여 복합키 구성
-> 처음과 동일하게 고객 ID가 중복되지만, 또 다른 속성인 대여일자가 달라 서로 다른 행으로 처리
복합키 선언 방법
- 유일키 선언과 비슷한 구조이며 괄호 안에 복합키로 사용할 속성들을 작성하면 된다.
CREATE TABLE 테이블명
{속성명
타입,속성명2
타입,
...
PRIMARY KEY(복합키로 사용할 속성 명
, 복합키로 사용할 속성 명
)
}
- 킥보드 대여 테이블
- 10월 5일 도도새가 킥보드를 빌려간내용을 추가하던 중에 실수로 도도새의 id를 'dododo_bird'로 입력한다면?
- 오류없이 그냥 추가된다면, 실제 존재하지 않은 고객ID가 추가되어 추후 관리에 문제생김
이를 해결하기 위해 나온 것 ↓↓↓↓↓
왜래키(Foreign Key)
- 왜래키란?
- 다른 테이블의 키와 연결을 해주는 키, 참조의 무결성을 유지하게 해줌
- 참조의 무결성 : 외래키 값이 참조중인 테이블의 값과 일관성을 가진다는 것
- 킥보드 대여테이블
-> 고객의 id에 대해 따로 테이블 구성, 고객 테이블의 '고객ID' 속성을 참조하는 외래키 구성
-> 새로 추가하려는 행 중 외래키인 '고객ID'의 내용이 고객 테이블에 있지 않은 내용이므로 추가되지않음.
선언방법
- 위치에 어떤 내용이 들어가는 지 주의
CREATE TABLE테이블명
{속성명
타입,속성명2
타입,
...
FOREIGN KEY(왜래키로 사용할 속성 명
) REFERENCES참조하는 속성이 있는 테이블
(참조할 속성 명
)
}