제육's 휘발성 코딩
반응형

데이터베이스란

데이터베이스(DB, Database)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터 모음이다. 이 데이터베이스를 제어 및 관리하는 통합 시스템을 DBMS (Database Management System)라고 하며, DBMS 마다 정의된 쿼리 언어들을 사용하여 데이터베이스를 관리한다.

엔티티

엔티티(Entity)란 사람, 장소, 물건 등 여러 개의 속성을 지닌 명사를 의미한다. 예를 들어 회원이란 엔티티를 보면 회원 (이름, 아이디, 주소, 전화번호) 등이 있으며 서비스에 맞게 속성을 지정한다.

약한 엔티티와 강한 엔티티

엔티티는 약한 엔티티와 강한 에티티로 나뉜다. 예를 들어 방과 건물을 보면, 방은 항상 건물에 종속적이며 건물은 독립적으로 존재한다. 이때 종속적인 방은 약한 엔티티, 독립적인 건물은 강한 엔티티로 볼 수 있다.

릴레이션

릴레이션(relation)은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이며, 엔티티에 관한 데이터를 데이터베이스에서 릴레이션에 담아서 관리한다.

데이터베이스는 RDBMS 와 NoSQL로 나뉘는데, RDBMS에선 릴레이션을 테이블 이라 하며, NoSQL에선 컬렉션 이라 부른다.

create table book (
  id INT NOT NULL AUTO_INCREMENT,
  title VARCHAR(255),
  author_id INT,
  PRIMARY KEY (id)
);
  • RDBMS인 Mysql 기준으로 다음과 같이 테이블을 생성할 수 있다.

속성

속성(attribute)은 릴레이션에서 관리하는 구체적이며, 고유한 이름을 갖는 정보이다. 예를 들어 차라는 엔티티가 있다면 차 (번호, 차종, 색) 등을 떠올릴 수 있는데, 이처럼 엔티티에 필요한 속성들이 엔티티 속성이 된다.

도메인

도메인(domain)이란 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합을 말한다. 예를 들어 성별이라는 속성이 있다면 이 속성이 가질 수 있는 값은 , 가 된다.

필드와 레코드(튜플)

image

엔티티의 속성들을 필드라고 하고, 속성들의 도메인들이 모인 하나의 row를 레코드(튜플)라 한다.

관계

사진1

  • 데이터베이스에 테이블은 하나만 있는 것이 아닌, 여러 개의 테이블이 있고 이러한 테이블은 서로의 관계가 정의되어 있다.
  • 최대 기수성 (1:1 , 1:N, N:M)
    • 1대1 관계 : 한 명의 고객은 하나의 고객등급이 부여
    • 1대N 관계 : 한 명의 고객은 여러 계좌를 개설할 수 있다.
    • M대N 관계 : 조인이 카테시안 곱이 발생하므로 1대N 또는 N대1로 해소 필요
  • 최소 기수성 (필수 (|), 선택 (0))

엔티티 식별자

식별자란 엔티티를 대표할 수 있는 유일성을 만족하는 속성을 말한다. 이러한 식별자에는 주 식별자보조 식별자가 존재하게 되는데, 해당 개념을 익히기 위해 키의 종류와 유일성과 최소성에 대해 알아보자.

유일성과 최소성

유일성이란 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질을 의미한다.

예를 들어 (이름, 주민번호, 나이)라는 속성이 있을 때 이름이나 나이는 중복될 수 있지만, 주민번호는 절대 중복될 수 없다. 주민번호와 같이 유일하게 식별할 수 있는 경우 유일성을 만족한다고 한다.

최소성이란 키를 구성하는 속성들 중 꼭 필요한 최소한의 키를 구성하는 성질을 의미한다.

위의 예시와 같이 (이름, 주민번호, 나이)가 하나의 키가 되어 있는 복합키의 상황이라면, 튜플을 구별하기 위해선 주민번호만 키로 사용하면 된다. 즉, 해당 예시는 필요 없는 속성들도 키가 되어있으므로 최소성을 만족하지 못한다.

키의 종류

image

  • 기본키 : 후보키 중에서 엔티티를 대표할 수 있는 키
    • 기본키는 NULL 일 수 없으며, 중복된 값을 가질 수 없다.
  • 후보키 : 유일성최소성을 만족하는 키
  • 슈퍼키 : 유일성은 만족하지만 최소성은 만족하지 않는
  • 대체키 : 여러 후보 키 중에서 기본키를 선정하고 남은 키
  • 외래키 : 참조 무결성을 확인하기 위해 다른 테이블의 필드를 가리키는 키
    • 무결성이란 데이터가 항상 정확한 값을 유지하는 성질을 의미한다. 한 곳에서 삭제되었는데 다른 연관된 곳에선 데이터가 남아있는 등의 결함을 방지하기 위해 사용
  • 복합키 : 두 개 이상의 컬럼으로 구성된 후보 키

주식별자 (기본키)

  • 최소성 : 키를 구성하는 속성들 중 꼭 필요한 속성으로만 키를 구성하는 것
  • 대표성 : 주식별자는 엔티티를 대표할 수 있어야 한다.
  • 유일성 : 주식별자는 엔티티의 튜플을 유일하게 식별한다.
  • 불변성 : 주식별자는 자주 변경되지 않아야 한다.

식별자 종류

  • 대표성, 생성 여부, 속성의 수, 대체 여부로 분류

식별자의 대표성

  • 주 식별자 : 유일성과 최소성을 만족하면서 엔티티를 대표하는 식별자
    • 다른 엔티티와 참조 관계로 연결될 수 있다.
  • 보조 식별자 : 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자

생성 여부

  • 내부 식별자 : 엔티티 내부에서 스스로 생성되는 식별자
    • ex) 부서코드, 주문번호, 종목코드
  • 외부 식별자 : 다른 엔티티와 관계로 인하여 만들어지는 식별자
    • ex) 계좌 엔티티에 회원ID

속성의 수

  • 단일 식별자 : 하나의 속성으로 구성
    • ex) 고객 엔티티에 회원ID
  • 복합 식별자 : 두 개 이상의 속성으로 구성

대체 여부

  • 본질 식별자 : 비즈니스 프로세스에서 만들어지는 식별자
  • 인조 식별자 : 인위적으로 만들어지는 식별자

 

인조 식별자는 후보 식별자 중에서 주식별자로 선정할 것이 없거나, 주식별자가 너무 많은 컬럼으로 되어 있는 경우에 사용한다.

즉, 순서 번호를 사용해서 식별자를 만드는 것이다. ex) oracle - rownum

References

https://kosaf04pyh.tistory.com/201

http://www.yes24.com/Product/Goods/108887922

반응형
profile

제육's 휘발성 코딩

@sasca37

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 맞구독은 언제나 환영입니다^^