2024. 7. 23. 18:00ㆍSQL
1. 속성(Attribute)의 개념
속성의 사전적 의미 : 사물의 성질, 특징 또는 본질적인 성질. 본질적 속성이란 어떤 사물 또는 개념에 없어서는 안 될 징표의 전부. 징표는 사물이나 개념이 어떤 것인지 나타내고, 그것을 다른 것과 구별하는 성질.
데이터 모델링 관점에서의 속성 정의 : 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소 데이터 단위임. 관리하기 위한 최소의 의미 단위로 생각 가능. 엔티티에서 한 분야를 담당하고있음.
속성의 정의
- 업무에서 필요로함.
- 의미상 더 이상 분리되지 않음.
- 엔티티를 설명하고 인스턴스의 구성요소가 됨.
예 ) 생년원일은 하나로서 읨가 있음. 기능점수를 산정할 때 분리된 속성은 하나의 속성으로 계산하게 됨. 이름주소로 정의한다면 속성이 두개의 의미를 갖기 때문에 속성보다는 내역으로서의 속성. 인정사항이라는 속성으로 정의하여 관리할 수 있음.
2. 엔터티, 인스턴스와 속성, 속성값에 대한 내용과 표기법
가. 엔티티, 인스턴스, 속성, 속성값의 관계
엔티티에는 두 개 이상의 인스턴스가 존재함. 각 엔티티는 고유의 성격을 표현하는 속성정보를 두개 이상 가짐. 각각의 인스턴스들은 어떤 성격의 데이터로 구성되는지를 파악하는 작업이 필요. 분석단계에서 여러개의 인스턴스가 가지는 동일한 성격은 무엇인지를 파악하고 이에 이름을 부여하여 속성으로 기술하는 작업이 필요. 예) 사원은 이름, 주소, 전화번호, 직책을 가짐. 사원이라는 엔티티에 속한 인스턴스들의 성격을 구체적으로 나타내는 항목이 바로 속성., 하나의 속성은 하나의 인스턴스에만 존재할 수 있음. 속성은 관계로 기술 될 수 없고, 자신이 속성을 가질 수 없음.
엔티티 내의 하나의 인스턴스는 한개의 속성값만 가질 수 있음. 주소, 전화번호, 직책 등은 속성, 안에 강남구,123-1231, 대리는 속성값. 속성값 = 속성들의 구체적인 내용.
한 개의 엔티티는 = 두개 이상의 인스턴스의 집합이어야 함
한 개의 엔티티는 = 두개 이상의 속성을 가짐
한 개의 속성은 = 한개의 속성값을 가짐.
속성은 엔티티에 속한 엔티티에 대한 자세하고 구체적인 정보를 나타냄. 각각의 속성은 구체적인 값을 가짐.
나. 속성의 표기법
엔티티 내에 이름을 포함하여 표현하면 됨.

3. 속성의 특징
만약 도출된 속성이 다음의 성질을 만족하지 못하면 적절하지 않은 속성일 확률이 높음
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보
- 정규화 이론에 근간하여 정해진 주식별자에 함수적 종속성을 가져야 함
- 하나의 속성에는 한 개의 값만 가짐. 하나의 속성에 여러개의 값이 있는 다중값일 경우, 별도의 엔티티를 이용하여 분리함.
4. 속성의 분류
가. 속성의 특성에 따른 분류
업무 분석을 통해 바로 정의한 속성을 기본속성(Basic Attribute)
업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성을 설계속성(Designed Attribute)
다른 속성으로부터 계산이나 변형이 되어 생성되는 속성을 파생속성(Dervied Attribute)
1) 기본속성
업무로부터 추출한 모든 속성이 여기에 해당. 엔티티에 가장 일반적이고 많은 속성을 차지.
코드성 데이터 / 엔티티 식별을 위한 일련번호 / (계산하거나 영향을 받아 생성도니 속성을 제외한 모든 속성은 기본속성임)
주의 : 업무로부터 분석한 속성이라도 업무상 코드로 정의한 속성이 많다는 것. 이러한 경우 속성의 값이 원래 속성을 나타내지 못하므로 기본속성이 되지 않음.
(고유속성)
2) 설게속성
업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기위해 속성을 새로 만들거나 변형하여 정의하는 속성 (일하기 쉬우라고 만든 속성). 코드성 속성은 업무필요에 의해 변형하여 만든것. 일련번호와 같은 속성은 단일한 식별자를 부여하기 위해 모델상 새로 정의하는 설계속성.
(일하기 쉬우라고 만든 속성).
3) 파생속성
다른 속성에 영향을 받아 발생하는 속성으로 계산된 값들이 이에 해당됨.
다른 속성에 영향을 받기 때문에 프로세스 설계 시 데이터 정합성을 유지하기위해 유의해야할 점이 많으며, 가급적 파생속성을 적제 정의하는 것이 좋음. 파생속성은 엄격하게 분류하여 속성정의서에 나열함. 계산값일 경우 속성값 검증 시 사용하기도 함. 어떤 속성에 의해 영향을 받는지 정의되어야 함. 파생속성은 될 수 있으면 꼭 필요한 경우에만 정의. 속성내부에 숨지않도록 하는 것이 좋음. 파생속성은 일반 엔티티에서는 많이 사용하지 않고 통계관련 엔티티나 배치 작업이 수행되면서 발생되는 경우 많이 이용.
(부산물 속성 같은 느낌)
나. 엔티티 구성방식에 따른 분류
엔티티를 식별할 수 있는 속성을 PK(Primary Key)속성
다른 엔티티와의 관계에서 포함된 속성을 FK(Foreign Key)속성
PK, FK에 포함되지 않은 속성을 일반속성

그 안에 세부 의미를 쪼갤 수 있는 지에 따라 단순형 복합형으로 분류
주소 속성은 시 구 동 번지에 따른 세부 속성 = 복합속성(Composite Attribute)
나이 성별 등 속성은 다른 속성으로 구분할 수 없는 단순한 속성이므로 = 단순속성(Simple Attribute)
속성은 하나의 값을 가지고 있으나, 동일한 성질의 여러 개의 값이 나타나느 경우가 있음. 속성 하나에 한 개의 값을 가지는 경우 = 단일값(Single Value)
여러개의 값을 가지는 경우 = 다중값(Multi Value)
어떤 사람의 전화번호와 같은 속성은 집 휴대전화 회사 전화번호 같이 여러개의 값을 가질 수 있으므로 이런 속성을 = 다중값 속성(Multi Valued Attribute).
다중값 속성의 경우 별도의 엔티티를 만들어 관계로 연결해야함.
5. 도메인(Domain)
각 속성은 가질 수 있는 값의 범위가 있는 이것을 속성의 = 도메인 이라고 한다.
학점이라는 속성 = 0.0~4.5 사이의 실수 값이며 이것이 도메인
엔티티 내에서 속성에 대한 데이터타입과 크기, 제약사항을 지정하는 것
(한계점과 성격 등을 정해주는 것 같아요)
6. 속성의 명명(Naming)fffff
속성명이 곧 사용자 인터페이스(User Interface)에 나타나기 때문에 업무와 직결되는 항목
용어사전이라는 업무사전을 프로젝트에 사용
도메인 정의를 미리 정의하여 용어사전과 같이 사용.
용어적 표준과 데이터타입의 일관성을 확보할 수 있음.
속성명을 부여하는 원칙
- 해당 업무에서 사용하는 이름을 부여
- 서술식 속성명은 사용하지 않음
- 약어사용은 가급적 제한
- 전체 데이터모델에서 유일성을 확보하는 것이 좋음
- 속성의 이름을 부여할 때는 현업에서 사용하는 이름을 부여하는 것이 가장 중요. 일반적인 용어라도 업무에서 사용하지 않는 용어라면 속성명으로 사용하지 않는 것이 좋음
- 서술식의 속성명은 사용하지 말아야 한다. 명사형을 이용. 수식어가 많이 붙으면 안됨. 수식어가 많이 붙으면 의미파악힘들고 물리속성으로 전환하는데 명확한 의미파악이 어려움. 소유격 사용하지 않음 (구구절절하게 설명하지 말란 뜻)
- 공용화되지 않은 업무에서 사용하지 않는 약어는 사용하지 않음. 의사소통에 제약과 많은 불편 (공통되지 않는 전문용어 쓰는 것은 = 아는척하려다 딴 사람들이 못알아먹음)
- 모든 속성의 이름은 유일하게 작성하는 것이 좋음. 대량의 속성을 정의하는 경우 어려울수도 있지만 데이터 대한 흐름을 파악하고 정합성을 유지하는데 큰 도움. 반정규화를 적용할 때 속성명의 충돌을 해결하여 안정적으로 반정규화 적용가능(닉네임중복 피해라)
'SQL' 카테고리의 다른 글
| 식별자(Identifiers)에 대해 알아봤습니다. (2) | 2024.07.23 |
|---|---|
| 관계(Relationship)에 대해 알아봤습니다. (0) | 2024.07.23 |
| 엔티티(Entity)에 대해 알아봤습니다. (0) | 2024.07.17 |
| 데이터 모델링의 이해 (1) | 2024.07.17 |
| SQLD 주요내용 (0) | 2024.07.17 |