본문 바로가기
카테고리 없음

데이터베이스 기본개념

by youngxdev 2023. 3. 1.

엔터티

개체, 객체, 명사, 집합과 같이 의미 있는 하나의 저장 단위가 바로 엔터티입니다. 유저, 컴퓨터, 콘텐츠, 상품 등을 예로 들 수 있습니다.

 

속성

엔터티는 여러 개의 속성을 갖습니다. 엔터티가 유저라면 이름, 전화번호, 생년월일, 성별 등은 엔터티의 속성이 됩니다.

 

테이블(=컬렉션=릴레이션)

데이터베이스에 엔터티와 속성은 아래와 같은 테이블 방식으로 저장됩니다.

유저
이름
전화번호
생년월일
성별

관계형 데이터베이스에서는 이것을 테이블, 비관계형데이터베이스에서는 컬렉션, 공통적으로는 릴레이션(relation)이라고 부릅니다.

 

도메인

유저라는 엔터티의 성별이라는 속성은 남자, 여자라는 값을 가질 수 있습니다. 이것을 도메인이라고 합니다. 

 

필드와 레코드

이름 전화번호 생년월일 성별
홍길동 010-xxxx-xxx1 2999.01.01
홍길순 010-xxxx-xx1x 2999.01.02

위 테이블에서 첫 번째 행(row)이 앞에서 설명한 속성과 같습니다. 이것을 다른 말로 필드, 속성, 컬럼이라고 합니다. 그리고 그 밑에 실제 데이터가 한 줄씩 쌓이게 되는데, 이것을 행(row), 레코드라고 합니다.

 

위에서 필드를 만들 때는 필드마다 알맞은 타입을 지정해 줘야 합니다. 예를 들어 이름, 전화번호, 성별은 문자열인 varchar, 생년월일은 datetime으로 설정할 수 있습니다. 이 외에도 많은 데이터 타입이 있는데 mysql 공식문서에서 확인할 수 있습니다.

관계

서비스에서 필요한 개체의 수만큼 테이블도 만들어지게 됩니다. 그런데 어떤 테이블(개체)들은 서로 관계가 존재하는 경우도 있는데요. 예를 들어, 유저 테이블과 주소 테이블이 있다면 주소 테이블의 하나의 행(row)은 유저 테이블과 매칭이 됩니다.

 

유저
이름
전화번호
생년월일
성별

 

주소
상세 주소

집이 하나인 유저라면 유저 테이블의 하나의 행과 주소 테이블의 하나의 행이 1:1로 매칭되는데 이것을 1:1관계, 집이 2개 이상인 유저라면 유저 테이블의 하나의 행과 주소 테이블의 2개 이상의 행과 1:N으로 매칭되는데 이것을 1:N 관계라고 합니다.
물론 N:N 관계도 존재합니다. 일반적으로 중간 테이블이라는 새로운 테이블을 만들어서 관리합니다.

 

기본키와 외래키

실제로 테이블에 데이터가 들어갈 때는 유저 테이블의 하나의 행과 주소 테이블의 하나의 행을 매칭 시켜주는 값이 어디에는 저장되어야 하는데요. 이것을 키라고 합니다. 이 키값을 가지고 이 주소가 어떤 유저의 집 주소인지를 알 수 있는 것입니다.

일반적으로 테이블에 데이터가 하나씩 생성되면서 행이 하나씩 생기면 동시에 1부터 자동적으로 +1씩 1,2,3,4 이런 식으로 키가 생성되게 됩니다. 이것을 기본키 PK(Primary Key)라고 합니다. 

 

유저 테이블에 홍길동이라는 유저가 생성되면 PK도 동시에 생성되는데 예를 들어 홍길동의 PK가 1이라고 한다면 아래와 같습니다.

id 이름
1 홍길동

이제 주소 테이블에 홍길동의 집 주소가 등록된다면 주소 테이블에 아래와 같은 데이터가 생성됩니다.

id user_id 주소
1 1 서울특별시 어딘가

주소 테이블도 마찬가지로 기본키도 생성되고, 이 주소가 홍길동 유저의 집 주소라는 것을 알기 위해서 user_id라는 컬럼에 유저 테이블의 홍길동의 기본키인 1값을 저장했습니다. 여기서 user_id를 외래키 FK(Foreign Key)라고 합니다.

 

댓글