수, 단어, 이미지, 영상 등의 형태로 된 의미 단위를 일컫습니다.
컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아 놓은 집합을 의미합니다.
데이터는 DBMS(Database Management System)
으로 제어하고 관리합니다.
MySQL, Oracle, Access 등이 DBMS의 종류입니다.
즉, 데이터가 저장된 하드에어를 부르는 말이기도 하면서, 데이터베이스를 관리하는 시스템 자체를 통칭합니다.
데이터를 오래 저장하고 보존할 수 있습니다.
→ 메모리에 저장할 경우 데이터를 오래 보존할 수 없습니다.
데이터를 체계적으로 보존하고 관리할 수 있습니다.
→ 원하는 자료를 쉽게 읽어낼 수 있어야 의미있는 정보라고 할 수 있습니다.
Relational Database Management System으로 관계형 데이터 모델
에 기초를 둔 데이터베이스 시스템을 가리킵니다.
관계형 데이터란 데이터가 서로 상호 관련성
을 가진 형태로 표현한 데이터를 의미합니다.
columns
데이터를 구분하는 항목입니다.
데이터베이스의 구조가 되는 부분으로 설계를 가장 먼저 해야되는 부분입니다.
rows
데이터의 실질적인 값을 가리킵니다.
primary key
고유 키를 갖고 있으며 이 값을 갖고 특정 데이터를 참조하고 찾을 수 있습니다.
정규화
row
에는 하나의 값만 들어갈 수 있기 때문에 2개 이상의 값이 들어가는 경우 정규화 단계를 거칩니다.테이블 간의 중복된 데이터를 허용하지 않겠다
제 1정규화
Atomic Columns
하나의 고유한 값만 가져야합니다.
즉 한개의 column
에는 하나의 row
데이터만 있어야 합니다.
여러 데이터가 있다면, 테이블의 row
수를 늘리면서 데이터의 중복을 제거해야주어야 합니다.
제 2정규화
No Partial Dependencies
부분 종속성이 없어야 합니다.
테이블에서는 prime key
를 제외한 column 항목은 key
와 관련이 있어야 한다는 의미입니다.
관련이 없는 항목이 있다면 다시 테이블을 소분해 줄 방법을 찾아봐야겠습니다.
제 3정규화
No Transitive Dependencies
이행 종속성이 없어야 합니다.
이행 종속성이란? A → B이고 B → C 일 때 A → C 인 경우를 가리킵니다.
테이블을 소분해주었는데도, 테이블 내에 위의 관계가 눈에 들어오시나요?
그렇다면 또 다시 테이블을 분리해줍시다.
우선, A → B인 테이블_1
을 하나 만들어줍니다.
그 다음 B → C인 테이블_2
을 또 하나 만들어줍니다.
여기서 테이블_1
의 B를 foreign key
로 설정하여 테이블_2
에서 참조할 수 있게 해줍니다.
스타벅스 코리아 음료페이지 모델링 실습입니다.
구현 사항은 다음과 같습니다.
음료
카테고리
영양 정보
알러지
음료 이미지
음료 설명
신상 여부
모든 테이블의 prime key
는 id
입니다.
Category
{ id, category_item }Bevarages
{id, beverage_name, beverage_seasonal, beverage_new }Image
{ id, img_url }Desc
{ id, desc }Nutrition
{id, sugar, kcal, protein, caffeine, Na, saturated_fat}Allergy
{id, allergy_item }Beverage_Allergy
{id, allergy_id, beverage_id }ERD는 백엔드의 청사진이라고 할 수 있습니다.
다른 개발자가 내 코드를 보고 이해할 수 있게 쓴 코드가 좋은 코드라고 하죠?
ERD 역시 마찬가지입니다.
테이블을 설정하면서 여러 규칙이 있는데요, 우선 세가지만 알아보겠습니다:
1) table명 (class명)은 복수형으로 작성합니다.
2) 다대다 관계에 있는 테이블 사이의 중간테이블
은 camelCase
혹은 snake_case
로 맞추어 줍니다.
3) field
명을 보고 어떤 데이터를 가리킬 수 있는지 정보를 담고 있어야 합니다.
정규화 사진 설명 추가하기
시작부터 어떻게 모델링을 할 것인가?
일대일 관계 내의 column에서 긴 문자열을 갖는 항목에 대한 분리 필요성?
다대다 관계의 정규화에 대한 이해