SQLD: 엔티티와 속성
데이터베이스와 DBMS
데이터베이스란 구조화된 데이터의 조직화된 모음으로, 여러 사람이 공유하여 사용할 목적으로 생겨났다. DBMS는 데이터를 효율적으로 생성, 수정, 삭제 등을 할 수 있도록 해주는 소프트웨어이다.
데이터 모델
현실세계의 대상을 추상화, 단순화, 명확하하여 데이터베이스로 표현하는 것을 데이터 모델링이라고 한다.
요구사항을 접수하여 그림으로 표현하는 것을 개념적 데이터 모델링이라고 한다. 개념적 데이터 모델링에서는 엔터티, 관계, 속성 등이 개념적 데이터 모델링 안에 들어있다.
엔터티 (Entity)
업무에 필요한 정보를 저장/관리하기 위한 집합적인 명사 개념
집합적인 명사 개념이라 함은, A회사의 많은 직원들이 있다고 가정하면 이들을 집합적으로 표현하면 ‘직원’이라고 말할 수 있다.
즉, 집합적으로 단순하게 표현한 것을 엔터티라고 할 수 있다.
단순화, 추상화, 명확화
인스턴스
엔터티 집합 내에 존재하는 개별적인 대상
엔터티의 특징
- 반드시 해당 업무에서 필요한 대상이고, 업무에 사용될 것
- 주어진 요구사항에서 엔터티를 뽑아내야 한다
- 예: 직원관리 -> 부서, 직원, 등
- 유일한 식별자로 식별이 가능할 것
- 인스턴스를 유일하게 구분할 수 있는 것
- 예: 사번, 주민등록번호 등
- 인스턴스가 2개 이상일 것
- 엔터티는 집합이다.
속성이 반드시 2개 이상 존재할 것
- 관계가 하나 이상 존재할 것
엔터티의 분류
유무형에 따른 분류
유형 | 개념 | 사건 |
---|---|---|
직원 | 부서 | 강의 |
주류 | 과목 | 매출 |
강사 | 계급 | 주문 |
고객 |
유형: 현실에 존재하는, 물리적 형태가 있는 정보
개념: 물리적 형태가 없는 개념적으로 존재하는 정보
사건: 업무 수행 중 발생하는 엔터티
발생시점에 따른 분류
기본/키 | 중심 | 행위 |
---|---|---|
직원 | 주문 | 주문이력 |
고객 | 매출 | |
상품 | 계약 |
기본/키 : 본래 업무에 존재하는 정보, 독립적으로 생성 가능
중심: 기본 업부로부터 발생하며, 업무에 있어 중심 역할
행위: 2개 이상의 엔터티로부터 발생
엔터티의 명명 규칙
- 가능한 현엽 용어를 쓴다
- ‘사람’ 대신 ‘고객’
- 가능하면 약어를 사용하지 않는다
- ‘일별매출목록’을 ‘일매목’따위로 줄여쓰지 않는다
- 단수 명사를 사용한다
- 엔터티 이름은 유일해야 한다
- 엔터티 생성 의미대로 이름을 부여한다
- ‘연락처’와 같은 애매한 이름보다는 ‘직원연락처’, ‘고객연락처’ 등으로 명확하게 한다
속성
업무상 관리하기 위한, 의미적으로 더는 분리되지 않는 최소 데이터 단위
속성은 엔터티가 가지는 공통적인 특징으로, 추후 관리하고자 하는 정보가 된다.
엔터티-인스턴스-속성의 관계
- 하나의 엔터티는 2개 이상의 인스턴스를 가진다
- 하나의 엔터티는 2개 이상의 속성을 가진다
- 속성은 각 인스턴스를 설명해줄 수 있다
- 하나의 속성에는 하나의 속성값만 들어간다
식별자
엔터티 내 유일한 인스턴스를 식별할 수 있는 속성의 집합
| 직원 ID | 이름 | 나이 | 연봉 |
| — | — | — | — |
중복이 허용되는 다른 속성들과는 다르게, 중복이 불가능함으로 유일한 인스턴스를 식별하기 위해 참조할 수 있는 속성이다. 현실 세계에서의 예시로는, 회원 가입시 중복이 허용되지 않는 ID와 같은 정보가 식별자가 될 수 있다.
속성의 분류
특성에 따른 분류
기본: 업무로부터 추출된 속성
설계: 설계시 규칙화 등이 필요해서 만든 속성
- 예: 코드, 일련번호 등
파생: 다른 속성들로부터 계산/변형되어 만들어진 속성
구성방식에 따른 분류
PK : 유일하게 인스턴스를 식별할 수 있는 속성
FK : 두 테이블을 연결하기 위한 속성
일반속성 : 나머지
복합속성 : 여러 가지 의미가 모여진 속성 (의미적 최소단위)
- 주소, 전화번호 등
속성 명명규칙
엔터티 명명규칙과 크게 다르지 않다.
- 가능한 현업 용어를 사용한다
- 가능하면 약어를 사용하지 않는다
- 명사형을 사용한다
- 가능하다면, 전체 데이터 모델이서 유일할 것
도메인
각 속성이 입력받을 수 있는 값의 범위
특정 속성이 입력받을 수 있는 값이 문자인지 숫자인지, 몇자리까지 입력을 받을 수 있는지가 도메인에 해당된다.