4.1 데이터베이스의 기본
4.1.1 엔터티
엔터티 entity란 사람, 장소, 물건, 사건, 개념 등 여러 속성을 지닌 명사를 의미한다. 예를 들어, 회원이라는 엔터티에는 이름, 아이디, 주소, 전화번호 등의 속성이 있다.
이러한 엔터티는 서비스 요구 사항에 맞춰 속성이 정해진다. 서비스 요구 사항과 관련 없는 속성이라면 해당 속성은 사라진다.
약한 엔터티와 강한 엔터티
엔터티는 종속 관계로 강약이 정해진다. A가 B의 존재 여부에 따라 종속적이라면 A는 약한 엔터티이고, B는 강한 엔터티가 된다.
4.1.2 릴레이션
릴레이션 relation은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다. 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아 관리한다. 예를 들어, 회원이라는 엔터티가 데이터베이스에서 관리될 때 이는 릴레이션이 된다.
릴레이션은 관계형 데이터베이스에서는 '테이블'이라고 하며, NoSQL 데이터베이스에서는 '컬렉션'이라고 한다.
테이블과 컬렉션
데이터베이스의 종류는 크게 관계형 데이터베이스와 NoSQL 데이터베이스로 구분할 수 있다. 관계형 데이터베이스의 대표 MySQL은 레코드-테이블-데이터베이스 구조로 이루어져 있고, NoSQL 데이터베이스의 대표 MongoDB는 도큐먼트-컬렉션-데이터베이스 구조로 이루어져 있다.
즉, 레코드가 쌓여 테이블이 되고, 테이블이 쌓여 데이터베이스가 된다.
4.1.3 속성
속성 attribute은 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보이다. 예를 들어 차라는 엔터티의 속성은 차 넘버, 바퀴 수, 차 색깔, 차종 등이 될 수 있다. 이 중 서비스 요구 사항을 기반으로 관리할 필요가 있는 속성들만 엔터티의 속성이 된다.
4.1.4 도메인
도메인 domain은 릴레이션에 포함된 각 속성들이 가질 수 있는 값의 집합을 말한다. 예를 들어, 성별이라는 속성이 가질 수 있는 값은 {남, 여}라는 집합이 된다.
4.1.5 필드와 레코드
데이터베이스에서 필드와 레코드로 구성된 테이블을 만들 수 있다.
회원이라는 엔터티는 member라는 테이블에 이름, 아이디 등의 속성을 갖고 있고 name, ID, address 등의 필드를 갖는다. 이 테이블에 쌓이는 행 단위의 데이터를 레코드(튜플)이라고 한다.
엔터티를 데이터베이스에 넣어 테이블로 만들려면 속성에 맞는 타입을 정의해야 한다.
필드 타입
필드는 타입을 갖는다. 대표적인 타입으로 숫자, 날짜, 문자 타입이 있다. 타입은 DBMS마다 다르며 아래 타입은 MySQL 기준이다.
숫자 타입
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
날짜 타입
, ,
문자 타입
, - 수를 입력해 몇 자까지 입력할지 정한다.
, - 큰 데이터를 저장할 때 쓰는 타입
, - 문자열을 열거한 타입
4.1.6 관계
데이터베이스에 테이블은 여러 개가 있고, 각 테이블은 서로의 관계가 정의되어 있다. 이러한 관계를 관계화살표로 나타낸다.
1:1 관계
하나의 레코드가 다른 테이블의 레코드 하나와 연결된 경우이다.
한 유저당 하나의 이메일이 할당됨
1:N 관계
한 유저가 여러 상품을 선택할 수 있고, 하나도 선택하지 않을 수 있음
N:M 관계
N:M 관계는 테이블 두 개를 직접 연결하지 않고, 1:N, 1:M 관계를 갖는 테이블 두 개로 나눠 설정한다.
4.1.7 키
테이블 간 관계를 더 명확하게 하고, 테이블 자체의 인덱스를 위해 설정된 장치로 기본키, 외래키, 후보키, 슈퍼키, 대체키가 있다.
키들은 위와 같은 관계를 가지며, 슈퍼키는 유일성이 있고 후보키(candidate)는 최소성까지 갖춘 키이다. 유일성은 중복되는 값 없는 특성을 의미하며, 최소성은 필드를 조합하지 않고 최소 필드만으로 키를 형성할 수 있음을 의미한다.
기본키 Primary Key
유일성과 최소성을 만족하는 키이다. 테이블 데이터 중 고유하게 존재하는 속성이며 기본키에 해당하는 데이터는 중복되어서는 안된다. 기본키는 자연키 또는 인조키 중 골라 설정한다.
자연키 - 중복되지 않는 것을 '자연스레' 뽑다 나오는 키를 의미한다. 언젠가 변하는 속성이 있다.
인조키 - 인위적으로 생성한 키를 의미한다. 변하지 않는 속성이 있어 보통 기본키는 인조키로 설정한다.
외래키 Foreign Key
다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는데 사용한다. 중복되어도 괜찮다.
후보키 Candidate Key
기본키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족하는 키이다.
대체키 Alternate Key
후보키가 두 개 이상일 경우 기본키로 지정하고 남은 후보키들을 말한다.
슈퍼키 Super Key
각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키를 의미한다.
Last updated
Was this helpful?