728x90
Chapter 1. Database 설계
🎯핵심 키워드 정리
🔹외래키 (foreign key)
- 외래키는 두 테이블을 서로 연결하는데 사용되는 키이다.
- 데이터가 일관될 수 있도록 돕는 역할을 한다
- 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블이라 한다.
🔹외래키 (foreign key) 특징
- 외래 키는 관계를 표현한다.
- 외래 키는 기본키와 다르게 하나의 테이블에 여러 개를 지정 할 수 있다.
- 외래 키는 NULL값과 중복 값이 허용된다.
- 참조되는 값이 변경되면 참조하는 값도 변경된다.
- 외래 키는 기본 키의 일부가 될 수 있다.
✅ FOREIGN KEY (country_id) REFERENCES country(country_id)
-> FK는 country_id 이고 이것은 country(country_id) 참조되었다!
🔹기본키
- 기본키는 데이터베이스 테이블 내의 모든 레코드에서 고유한 아이디를 제공한다
- 유일성과 최소성을 가지며(후보키), 해당 레코드를 식별할때 기준이 되는 반드시 필요한 키
🔹기본키의 특징
- 모든 레코드가 서로 다른 값을 가지고 있어 각 레코드를 식별할 수 있다.
- NULL값이 존재할 수 없다.
- 레코드의 값은 중복이 불가능하다.
- 테이블에는 하나의 기본키만 가질 수 있지만 경우에 따라 1개 이상의 기본키를 정의할 수도 있다. (다수 열 기본 키, 복합 기본 키)
🔹ER 다이어그램
- 개체 관계 지도, 개체 관계 다이어그램이라고 불린다.
- 데이터베이스 안에 있는 개체 간의 관계를 시각화해서 보여주는 방식을 말한다.
🔹복합 키
- 두개 이상의 컬럼을 묶어서 하나의 기본키로 지정하는것.
- 기본키는 하나의 테이블에 하나만 존재할 수 있다, 또한 기본키는 하나 이상의 컬럼으로 구성되어 있다.
- 기본키가 만약 복합키라면, 복합키 또한 당연히 유일성과 최소성을 만족해야한다.
🔹연관 관계
존재적 관계라고도 한다(연관관계)
한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계
- 엔터티 간의 연관된 상태를 의미
- 연관관계는 항상 이용하는 관계로 존재적 관계에 해당
🔹의존 관계
행위적 관계 (의존관계)
엔터티 간의 어떤 행위가 있는 것을 의미
- 의존관계는 상대방 클래스의 행위에 의해 관계가 형성되는 행위적 관계
- ERD에서는 존재관계와 행위관계를 구분하지 않는다
- UML에는 클래스다이어그램 관계 중 연관관계와 의존관계가 있고 이것은 실선과 점선의 표기법으로 다르게 표현이 된다
- 의존관계는 오퍼레이션에서 파라미터 등으로 이용할 수 있다.
- 연관관계는 소스코드에서 멤버변수로 선언하여 사용할 수 있다.
🔹정규화
하나의 엔터티에 많은 속성을 넣음→ 엔터티를 조회할 때 마다 많은 양의 데이터가 조회 됨
- 최소한의 데이터만을 하나의 엔터티에 넣는식으로 데이터를 분해하는 과정을 정규화라고 함
- 데이터의 중복을 제거하여 용량을 최소화시킴
- 데이터 일관성, 최대한 데이터 유연성을 위한 과정
- 데이터의 이상현상을 줄이기 위한 데이터베이스 설계 기법
- 논리 데이터 모델링 수행 시점에서 고려됨
🔹이상현상
정규화를 하지 않아 발생하는 현상
- 삽입이상
- 갱신이상
- 삭제이상
🔹정규화단계
1) 제 1정규화
- 모든 속성은 반드시 하나의 값을 가져야 함
- 테이블 컬럼이 원자성을 갖도록 테이블을 분해하는 단계
2) 제 2 정규화
- 제 1정규화를 진행한 테이블에 대해 완전 함수 종속을 만들도록 테이블을 분해
- 엔터티의 일반속성은 주식별자 전체에 종속이어야 한다
3) 제 3 정규화
- 엔터티의 일반 속성 간에는 서로 종속적이지 않다
- 이행적 속성을 제거하도록 테이블을 분해
4) BNCF 정규화
- 모든 결정자가 후보키가 되도록 테이블을 분해하는 것(결정자가 후보키가 아닌 다른 컬럼에 종속되면 안됨)
5) 제 4 정규화
- 여러 컬럼들이 하나의 컬럼을 종속시키는 경우 분해하여 다중값 종속성을 제거
6) 제 5 정규화
- 조인에 의해서 종속성이 발생되는 경우 분해
🔹반 정규화
- 역정규화(De-Normalization)의 개념
- 성능을 위해 데이터 중복을 허용
- 성능의 향상을 항상 보정하는 것은 아님
- 조회(SELECT) 속도를 향상시키지만, 데이터 모델의 유연성은 낮아짐
- 비정규화는 정규화를 수행하지 않음을 의미
☑️ 실습 인증
1. Data grip 설치
2. 로컬 DB 셋팅
🔥 미션
- 주어진 IA(기획 플로우)와 와이어 프레임(디자인 프로토타입)을 보고 직접 데이터베이스를 설계해오기, 위에서 언급한 경우를 다 적용해서 할 것
- 이름 글자 수 등 세부적인 부분은 원하는 대로 해도 됨!
- 각 지역 별로 가게들이 있으며 가게를 방문하는 미션을 해결하며 포인트를 모으는 서비스
- 모든 지역마다 10개의 미션 클리어시 1000 point 부여로 고정
최소한 로그인/회원가입, 미션, 홈 화면에 필요한 데이터는 설계를 해야함
📢 1주차 학습 후기
😺: 데이터베이스 설계 같은 경우는 앞으로 프로젝트에 있어서 중요한 부분이기 때문에 얻어갈 점이 많았습니다. 또 이때까진 Draw.io 로만 erd를 설계했었는데 앞으론 ERDcloud 등 다양한 툴도 사용해봐야겠다고 다짐했습니다.
728x90
'🏃♀️ 대외활동 > UMC 7기 - Node.js' 카테고리의 다른 글
[UMC 7th Server] Chapter 4. ES6와 프로젝트 파일 구조의 이해 (1) | 2024.10.28 |
---|---|
[UMC 7th Server] Chapter 3. API URL의 설계 & 프로젝트 세팅 (1) | 2024.10.10 |
[UMC 7th Server] Chapter 2. 실전 SQL 워크북 (1) | 2024.10.06 |
[UMC 7th Server] Chapter 0. 서버 처음 해보기 워크북 (4) | 2024.09.26 |
[UMC 7기/Node.js 파트] UMC 7기 합격 후기 (0) | 2024.09.23 |