해당 포스트는
SQLD
를 학습하며 정리한 내용에 대한 포스트입니다.
이론을 학습한 내용을 정리하고 퀴즈, 기출문제 등을 기록하려고 합니다.
🌈 속성 (Attribute)
💻 속성이란?
사람이나 사물을 정의할 때 보통 여러가지 특징들이 수식어로 붙게 된다.
사물이나 개념의
특징을 설명해줄 수 있는 항목
들을 속성이라고 부른다.속성이라는 것은 업무에서 필요한 정보인 엔터티가 가지는 항목이다.
속성은 의미상 더 이상 쪼개지지 않는 레벨이어야 하고 프로세스에 필요한 항목이어야 한다.
업무(프로세스)에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더이상 분리되지 않는 최소의 데이터 단위
예를 들어 연예인이라는 엔터티에 이꼬비라는 인스턴스가 있을 때
국적
이라는 속성이 있을 수 있지만 업무상 불필요한 데이터라고 판단되면국적
이라는 속성은 삭제하는 것이 바람직하다.
속성의 특징
- 속성은 업무에서 관리되는 정보
- 속성은 하나의 값만 가진다
- 주식별자에게 함수적으로
종속
된다.즉, 기본키가 변경되면 속성의 값도
변경
된다.
속성 명명법
- 의미가 있는 문자를 사용
- 업무에서 사용되는 명칭을 사용
- 약어의 사용은 가급적 지양
- 속성의 이름은 애매모호하지 않게, 복합 명사를 사용하여 구체적으로 명명함으로써 전체 데이터모델에서
유일성
을 확보하는 것이 반정규화, 통합 등의 작업을 할 때 혼란을 방지할 수 있는 방법이 됨.
💻 속성값
각각의 속성은
속성값
을 가지며 속성값은 엔터티에 속한하나의 인스턴스를 구체적으로 나타내주는 데이터
라고 볼 수 있다.하나의 속성
은하나의 속성값만
가질 수 있다. (❌ 하나 이상 ❌)
만약 하나의 속성이 여러 개의 속성값을 갖는 경우 별도의 엔터티로 분리하는 것이 바람직하다.
예를 들어 아래 테이블의 직업이라는 속성에 속성값이 여러 개일 경우
이름 | 생년월일 | 직업 |
---|---|---|
이꼬비 | 19900402 | 개발자, 연구원, 유튜버 |
아래의 테이블과 같이 별도의 엔터티로 분리
이름 | 직업 |
---|---|
이꼬비 | 개발자 |
이꼬비 | 연구원 |
이꼬비 | 유튜버 |
💻 엔터티, 인스턴스, 속성, 속성값의 관계
정리해보면 엔터티 ⊃ 인스턴스 ⊃ 속성의 관계가 성립
한다는 것을 알 수 있다.
이것을 각각의 표기법으로 나타내면 다음과 같다.
한 개의 엔터티는
두 개 이상의 인스턴스
를 갖는다.한 개의 인스턴스는
두 개 이상의 속성
을 갖는다.한 개의 속성은
하나의 속성값
을 갖는다. (❌ 하나 이상 ❌)
💻 분류
🔍 분해 여부에 따른 분류
종류 | 설명 |
---|---|
단일 속성 | - 하나의 의미로 구성된 것으로 회원ID, 이름 등 |
복합 속성 | - 여러 개의 의미 가 있는 것으로 대표적으로 주소가 있다. - 주소는 시, 군, 동 등으로 분해될 수 있다. |
다중값 속성 | - 속성에 여러 개의 값 을 가질 수 있는 것- 예를 들어 상품 리스트가 있다. - 다중값 속성은 엔터티로 분해 된다. |
🔍 특성에 따른 분류
기본 속성 (Basic Attribute) | - 업무 프로세스 분석을 통해 바로 정의가 가능한 속성 - 비지니스 프로세스에서 도출되는 본래의 속성 이다. 예) 회원ID, 이름, 계좌번호, 주문 일자 등 |
설계 속성 (Designed Attribute) | - 업무에 존재하지는 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성 - 데이터 모델링 과정에서 발생되는 속성 - 유일한 값을 부여 한다. 예) 상품코드, 지점코드, 학번 |
파생속성 (Derived Attribute) | - 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성 - 즉, 다른 속성에 의해서 만들어지는 속성 이다. 예) 합계, 평균 등 |
기본속성
엔터티의 가장 일반적인 속성
업무 프로세스 분석을 통해 바로 정의가 가능한 속성들이 속한다.
엔터티의 가장 많은 비율을 차지하는 속성
일부 설계속성과 파생속성을 제외한 모든 속성이 기본속성에 해당
설계속성
업무에 존재하지는 않지만 설계 과정에서 합리적인 모델링을 위해 만들어진 속성
속성들의 속성 값이 다른 인스턴스들의 속성값과 중복될 수 있는 경우
- 유니크함을 보장하지 못하기 때문에 이때 고유한 값을 가지는 설계속성을 할당하여 인스턴스에 유니크함을 부여하는 것
모델링을 위해 인위적으로 만들어서 정의한 속성으로 일련번호와 같이 유니크한 식별자를 부여하기 위한 것이 목적
파생속성
다른 속성으로부터 파생된 속성을 의미
데이터 조회 시 빠른 성능을 보장하기 위해 본래의 속성값을 계산하여 따로 저장할 수 있도록 만든 속성
계산된 값이나 가공된 값
재고를 계산하여 속성으로 가지고 있는 경우 이것은 파생속성에 해당
파생속성을 설계할 경우 반드시 데이터의 정합성이 고려
계산 과정에서 누락되는 데이터가 생기는 경우
- 결과값이 엉터리가 될 수 있는 위험 요소가 존재하기 때문에 불가피하게 필요한 경우에만 정의하는 것이 좋다.
🔍 구성방식에 따른 분류
PK (Primary Key)속성 | 엔터티의 인스턴스들을 식별할 수 있는 속성 |
FK (Foreign Key)속성 | 다른 엔터티의 속성에서 가져온 속성 |
일반속성 | PK, FK를 제외한 나머지 속성 |
PK 속성
엔터티에 속한 각 인스턴스에 유니크함을 부여하는 속성
상품 엔터티의 상품코드, 학생 엔터티의 학번, 직원 엔터티의 사번 등
FK 속성
다른 엔터티와 관계를 맺게 해주는 매개체 역할을 하는 속성
다른 엔터티의 PK값과 일치하거나 NULL 값을 가질 수도 있다.
직원 엔터티의 부서 코드, 학생 엔터티의 학과코드, 회원 엔터티의 회원등급코드 등
일반속성
PK, FK를 제외한 나머지 속성을 일반속성이라고 부른다.
상품 엔터티의 상품명, 가격, 학생 엔터티의 이름, 생년월일 등
구성방식에 따른 분류 : PK속성 - FK속성 - 일반속성
특성에 따른 분류 : 기본속성 - 설계속성 - 파생속성
💻 도메인 (Domain)
속성이 가질 수 있는
속성값의 범위
를 도메인이라고 하며, 엔터티 내에서 속성에 대한 데이터 타입과 크기 그리고 제약사항을 지정하는 것실제 속성값이 올바르게 되었는지 확인한다.
속성명과 반드시 동일할 필요는 없다.
엔터티를 정의할 때 데이터 타입과 크기로 나타낼 수 있다.
예) 우편번호는 다섯 자리의 숫자라는 범위를 가지고 있고, 이것은 엔터티를 정의할 때 데이터 타입과 크기로 나타낼 수 있다.
예) 성별이라는 속성의 도메인은 남자와 여자이다.
용어사전이란?
엔터티의 속성명을 정의할 때 명확한 의미의 이름을 부여하고 다른 엔터티와의 혼란을 예방하기 위해 이용하는 것
하나의 데이터베이스에서 같은 의미를 가진 테이터가 엔터티마다 다른 명으로 정의된다면 혼란스러울 수 있다.
이런 현상을 방지하기 위해 설계 시
용어사전
을 두고 각 엔터티에 공통된 룰로 적용하는 것이 좋다.
🎯 추가 내용
📚 레퍼런스
정미나. (유튜브 선생님에게 배우는) 유선배 SQL개발자(SQLD) 과외노트 / [정미나 저] (2023). Print.
한국데이터산업진흥원. SQL 자격검정 실전문제 : 국가공인 SQL전문가·국가공인 SQL개발자 / 한국데이터산업진흥원 [편] (2020). Print.