속성 (프로그래밍) 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
'''속성'''(屬性, attribute)이란 [[개체]]가 가지고 있는 고유한 [[특성]]을 말한다. 예를 들어 '회원'이라는 개체는 "성명=홍길동", "성별=남자", "연령=30"이라는 속성을 가질 수 있다. [[데이터베이스]]에서 특정 [[레코드]](record)에 대한 속성값을 표시하기 위해 [[필드 (데이터베이스)|필드]](field)를 사용한다.
+
'''속성'''(屬性, attribute)이란 개체가 가지고 있는 고유한 특성을 말한다. 예를 들어 '회원'이라는 개체는 "성명=홍길동", "성별=남자", "연령=30"이라는 속성을 가질 수 있다. [[데이터베이스]]에서 특정 [[레코드]](record)에 대한 속성값을 표시하기 위해 [[필드 (데이터베이스)|필드]](field)를 사용한다.
  
 
== 개요 ==
 
== 개요 ==
 
속성이란 사전적인 의미로는 사물(事物)의 성질, 특징 또는 본질적인 성질, 그것이 없다면 실체를 생각할 수 없는 것으로 정의할 수 있다. 본질적 속성이란 어떤 사물 또는 개념에 없어서는 안 될 징표(徵表)의 전부이다. 이 징표는 사물이나 개념이 어떤 것인지를 나타내고 그것을 다른 것과 구별하는 성질이라고 할 수 있다.
 
속성이란 사전적인 의미로는 사물(事物)의 성질, 특징 또는 본질적인 성질, 그것이 없다면 실체를 생각할 수 없는 것으로 정의할 수 있다. 본질적 속성이란 어떤 사물 또는 개념에 없어서는 안 될 징표(徵表)의 전부이다. 이 징표는 사물이나 개념이 어떤 것인지를 나타내고 그것을 다른 것과 구별하는 성질이라고 할 수 있다.
이런 사전적인 정의 이외에 데이터 [[모델링]] 관점에서 속성을 정의하자면, “업무에서 필요로 하는 [[인스턴스]]로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 [[데이터]] 단위”로 정의할 수 있다. 업무상 관리하기 위한 최소의 의미 단위로 생각할 수 있고, 이것은 [[엔티티]]에서 한 분야를 담당하고 있다.<ref name="개요">〈[http://www.dbguide.net/db.db?cmd=view&boardUid=148180&boardConfigUid=9&categoryUid=216&boardIdx=132&boardStep=1 속성 (Attribute)의 개념]〉, 《데이터 전문가 지식포털》</ref>
+
이런 사전적인 정의 이외에 데이터 모델링 관점에서 속성을 정의하자면, “업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 [[데이터]] 단위”로 정의할 수 있다. 업무상 관리하기 위한 최소의 의미 단위로 생각할 수 있고, 이것은 [[엔티티]]에서 한 분야를 담당하고 있다.<ref name="개요">〈[http://www.dbguide.net/db.db?cmd=view&boardUid=148180&boardConfigUid=9&categoryUid=216&boardIdx=132&boardStep=1 속성 (Attribute)의 개념]〉, 《데이터 전문가 지식포털》</ref>
  
 
속성은  엔티티에서 관리되는 구체적인 정보 항목으로 더 이상 분리될 수 없는 최소의 데이터 보관 단위이다. 예를 들어, 엔티티 사원에 속하는 모든 엔티티는 이름을 갖고 있다. 또한 모든 사원에는 입사 일자, 사원번호, 생년월일 등의 특성을 가지고 있다. 엔티티 사원에 속하는 모든 인스턴스들이 공통으로 가지는 이러한 특성을 속성(Attribute)이라고 한다. 각 엔티티들은 일련의 속성들에 의해 상세화될 수 있다.<ref name="dbguide">〈[http://www.dbguide.net/db.db?cmd=view&boardUid=12854&boardConfigUid=9&categoryUid=216&boardIdx=41&boardStep=1 논리 데이터 모델링]〉, 《데이터 전문가 지식포털》 </ref>
 
속성은  엔티티에서 관리되는 구체적인 정보 항목으로 더 이상 분리될 수 없는 최소의 데이터 보관 단위이다. 예를 들어, 엔티티 사원에 속하는 모든 엔티티는 이름을 갖고 있다. 또한 모든 사원에는 입사 일자, 사원번호, 생년월일 등의 특성을 가지고 있다. 엔티티 사원에 속하는 모든 인스턴스들이 공통으로 가지는 이러한 특성을 속성(Attribute)이라고 한다. 각 엔티티들은 일련의 속성들에 의해 상세화될 수 있다.<ref name="dbguide">〈[http://www.dbguide.net/db.db?cmd=view&boardUid=12854&boardConfigUid=9&categoryUid=216&boardIdx=41&boardStep=1 논리 데이터 모델링]〉, 《데이터 전문가 지식포털》 </ref>
  
 
== 유형 ==
 
== 유형 ==
속성 차원은 [[텍스트]], 숫자, [[부울]] 또는 날짜 데이터 유형을 가질 수 있어 데이터의 그룹화, 선택 또는 계산을 위한 여러 가지 [[함수]]를 사용할 수 있다. 속성 유형은 속성 차원의 레벨 0 맴버에만 적용된다.
+
속성 차원은 [[텍스트]], 숫자, 부울 또는 날짜 데이터 유형을 가질 수 있어 데이터의 그룹화, 선택 또는 계산을 위한 여러 가지 함수를 사용할 수 있다. 속성 유형은 속성 차원의 레벨 0 맴버에만 적용된다.
  
 
* 텍스트 속성을 이용하여 기본 속성 맴버 선택 및 계산 시 속성 비교를 수행할 수 있다. 이러한 비교를 수행할 경우 문자가 비교된다. 예를 들어, [[패키지]] 유형 Bottle은 다른 패키지 유형 Can보다 작다.
 
* 텍스트 속성을 이용하여 기본 속성 맴버 선택 및 계산 시 속성 비교를 수행할 수 있다. 이러한 비교를 수행할 경우 문자가 비교된다. 예를 들어, [[패키지]] 유형 Bottle은 다른 패키지 유형 Can보다 작다.
14번째 줄: 14번째 줄:
 
* 숫자 속성 차원은 레벨 0 맴버의 이름에 숫자 값을 사용한다. 계산 시 숫자 속성 차원 맴버의 이름(값)을 포함할 수 있다. 예를 들어, 각 제품에 대한 온스당 이익을 계산하기 위해 온스 속성에 지정된 온스 수를 사용할 수 있다. 또 예를 들어 시장 모집단 그룹별로 제품 판매를 분석하기 위해 기본 차원 값 범위와 숫사 속성을 연결할 수도 있다.
 
* 숫자 속성 차원은 레벨 0 맴버의 이름에 숫자 값을 사용한다. 계산 시 숫자 속성 차원 맴버의 이름(값)을 포함할 수 있다. 예를 들어, 각 제품에 대한 온스당 이익을 계산하기 위해 온스 속성에 지정된 온스 수를 사용할 수 있다. 또 예를 들어 시장 모집단 그룹별로 제품 판매를 분석하기 위해 기본 차원 값 범위와 숫사 속성을 연결할 수도 있다.
  
* 데이터베이스의 부울 속성 차원은 두 개의 [[맴버]]만 포함한다. 부울 속성 차원이 추가될 때 이 속성 차원에 대해 기본적으로 두 개의 속성 값(True 및 False)이 생성된다. 계정 또는 엔티티와 같은 기본 차원은 부울 데이터 유형을 가지는 하나의 속성 차원과 연결될 수 있다.
+
* 데이터베이스의 부울 속성 차원은 두 개의 [[맴버]]만 포함한다. [[부울]] 속성 차원이 추가될 때 이 속성 차원에 대해 기본적으로 두 개의 속성 값(True 및 False)이 생성된다. 계정 또는 엔티티와 같은 기본 차원은 부울 데이터 유형을 가지는 하나의 속성 차원과 연결될 수 있다.
  
* 날짜 속성은 월-일-년 또는 일-월-년 형식으로 날짜 형식으로 지정하고 순서 정보를 적절하게 지정할 수 있다. 계산 시에 날짜 속성을 사용할 수 있다. 예를 들어, 특정 날짜 이후의 제품 판매 계산에서 날짜를 비교할 수 있다. 사용자는 [애플리케이션 설정] [[환경설정]]에서 [속성 차원 날짜 형식]의 옵션을 선택하여 날짜 형식을 설정할 수 있다.<ref name="속성데이터유형">〈[https://docs.oracle.com/cloud/help/ko/financial-consol-cloud/AGFCC/understanding_attribute_data_types.htm#AGFCC-admin_dimensions_180 속성 데이터 유형 이해]〉, 《오라클》 </ref>
+
* 날짜 속성은 월-일-년 또는 일-월-년 형식으로 날짜 형식으로 지정하고 순서 정보를 적절하게 지정할 수 있다. 계산 시에 날짜 속성을 사용할 수 있다. 예를 들어, 특정 날짜 이후의 제품 판매 계산에서 날짜를 비교할 수 있다. 사용자는 [애플리케이션 설정] 환경설정에서 [속성 차원 날짜 형식]의 옵션을 선택하여 날짜 형식을 설정할 수 있다.<ref name="속성데이터유형">〈[https://docs.oracle.com/cloud/help/ko/financial-consol-cloud/AGFCC/understanding_attribute_data_types.htm#AGFCC-admin_dimensions_180 속성 데이터 유형 이해]〉, 《오라클》 </ref>
  
 
=== 명목 자료 ===
 
=== 명목 자료 ===
36번째 줄: 36번째 줄:
 
=== 순서 자료 ===
 
=== 순서 자료 ===
 
데이터가 속하는 카테고리들에 순서가 있는 경우 순서 자료(ordinal data)라고 한다. 예를 들어 청팀이 이길 가능성에 대하여 조사하는 경우 그 답변을 “5. 매우 높다. 4. 높다. 3. 중립, 2. 낮다. 1. 매우 낮다."로 디자인할 수 있다. 명목 자료와 마찬가지로 숫자를 세고 퍼센트로 표현할 수 있다.  
 
데이터가 속하는 카테고리들에 순서가 있는 경우 순서 자료(ordinal data)라고 한다. 예를 들어 청팀이 이길 가능성에 대하여 조사하는 경우 그 답변을 “5. 매우 높다. 4. 높다. 3. 중립, 2. 낮다. 1. 매우 낮다."로 디자인할 수 있다. 명목 자료와 마찬가지로 숫자를 세고 퍼센트로 표현할 수 있다.  
평균에 대하서는 신중해야 한다. 명목 자료에 대해 평균을 계산해서는 안된다는 사람들이 있는데 이건 매우 높다에 5를, 높다에 4를 할당한 것처럼 그 각각의 숫자에 수학적/과학적 의미가 있는 것이 아니다.
+
평균에 대하서는 신중해야 한다. 명목 자료에 대해 평균을 계산해서는 안된다는 사람들이 있는데 이건 매우 높다에 5를, 높다에 4를 할당한 것처럼 그 각각의 숫자에 수학적/과학적 의미가 있는 것이 아니기 때문이다.
  
 
; 예시  
 
; 예시  
73번째 줄: 73번째 줄:
  
 
=== 이산형 vs 연속형 ===
 
=== 이산형 vs 연속형 ===
구간형이나 비율형 자료는 이산형(discrete)이나 연속형(continuous) 둘 중의 하나의 속성을 갖게 된다. 측정값이 [[정수]]로 딱딱 떨어지는 경우 이산형이고 연속된 무수히 많은 값 중 하나를 가질 수 있는 경우 연속형이 된다. 연속형 데이터는 실제 표현될 때 적당히 반올림되어 표현된다. 현실에서 측정/이해하고자 하는 변수는 종종 하나 이상의 데이터 타입에 속하게 되며 데이터 타입은 어떤 측정 방법을 택하느냐에 따라 결정된다. 나이를 예로 들자면 나이는 비율 자료로 수집될 수 있지만, 순서 자료로 수집될 수 있다. 반면, 명목 자료나 순서 자료를 둘 다 카테고리 유형 데이터인 구간 자료나 비율 자료로 수집할 수 없다. 보다 보편적으로 이야기하자면 데이터 측정은 주어진 데이터의 본질적인 속성보다 더 높고/낮은 수준으로 내려갈 수는 있어도 더 정교한/높은 수준으로 올라갈 수는 없다.
+
구간형이나 비율형 자료는 이산형(discrete)이나 연속형(continuous) 둘 중의 하나의 속성을 갖게 된다. 측정값이 정수로 딱딱 떨어지는 경우 이산형이고 연속된 무수히 많은 값 중 하나를 가질 수 있는 경우 연속형이 된다. 연속형 데이터는 실제 표현될 때 적당히 반올림되어 표현된다. 현실에서 측정/이해하고자 하는 변수는 종종 하나 이상의 데이터 타입에 속하게 되며 데이터 타입은 어떤 측정 방법을 택하느냐에 따라 결정된다. 나이를 예로 들자면 나이는 비율 자료로 수집될 수 있지만, 순서 자료로 수집될 수 있다. 반면, 명목 자료나 순서 자료를 둘 다 카테고리 유형 데이터인 구간 자료나 비율 자료로 수집할 수 없다. 보다 보편적으로 이야기하자면 데이터 측정은 주어진 데이터의 본질적인 속성보다 더 높고/낮은 수준으로 내려갈 수는 있어도 더 정교한/높은 수준으로 올라갈 수는 없다.
  
 
; 이산형  
 
; 이산형  
86번째 줄: 86번째 줄:
 
=== 표기법 ===
 
=== 표기법 ===
 
;  엔티티, 인스턴스, 속성, 속성값의 관계
 
;  엔티티, 인스턴스, 속성, 속성값의 관계
엔티티에는 두 개 이상의 인스턴스가 존재하고 각각의 엔티티에는 고유의 성격을 표현하는 속성정보를 두 개 이상 갖는다. 업무에서는 엔티티를 구성하는 특징이 무엇인지 또한 각각의 인스턴스들은 어떤 성격의 데이터로 구성되는지를 파악하는 작업이 필요하다. 분석단계에서 엔티티 내에 존재하는 여러 개의 인스턴스가 가지는 동일한 성격은 무엇인지를 파악하고 이에 이름을 부여하여 엔티티의 속성으로 기술하는 작업이 필요하다. 예를 들면 사원은 이름, 주소, 전화번호, 직책 등을 가질 수 있다. 사원이라는 엔티티에 속한 인스턴스들의 성격을 구체적으로 나타내는 항목이 바로 속성이다. 각각의 인스턴스는 속성의 집합으로 설명될 수 있다. 하나의 속성은 하나의 인스턴스에만 존재할 수 있다. 속성은 관계로 기술될 수 없고 자신이 속성을 가질 수도 없다.
+
엔티티에는 두 개 이상의 [[인스턴스]]가 존재하고 각각의 엔티티에는 고유의 성격을 표현하는 속성정보를 두 개 이상 갖는다. 업무에서는 엔티티를 구성하는 특징이 무엇인지 또한 각각의 인스턴스들은 어떤 성격의 데이터로 구성되는지를 파악하는 작업이 필요하다. 분석단계에서 엔티티 내에 존재하는 여러 개의 인스턴스가 가지는 동일한 성격은 무엇인지를 파악하고 이에 이름을 부여하여 엔티티의 속성으로 기술하는 작업이 필요하다. 예를 들면 사원은 이름, 주소, 전화번호, 직책 등을 가질 수 있다. 사원이라는 엔티티에 속한 인스턴스들의 성격을 구체적으로 나타내는 항목이 바로 속성이다. 각각의 인스턴스는 속성의 집합으로 설명될 수 있다. 하나의 속성은 하나의 인스턴스에만 존재할 수 있다. 속성은 관계로 기술될 수 없고 자신이 속성을 가질 수도 없다.
  
 
; 속성의 표기법
 
; 속성의 표기법
98번째 줄: 98번째 줄:
  
 
; 설계속성
 
; 설계속성
설계속성은 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다. 대개 코드성 속성은 원래 속성을 업무상 필요에 의해 변형하여 만든 설계속성이고 일련번호와 같은 속성은 단일(Unique)한 식별자를 부여하기 위해 [[모델]]상에서 새로 정의하는 설계속성이다.
+
설계속성은 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다. 대개 코드성 속성은 원래 속성을 업무상 필요에 의해 변형하여 만든 설계속성이고 일련번호와 같은 속성은 단일(Unique)한 식별자를 부여하기 위해 모델상에서 새로 정의하는 설계속성이다.
  
 
; 파생속성
 
; 파생속성
110번째 줄: 110번째 줄:
  
 
; 외래키 속성  
 
; 외래키 속성  
다른 테이블의 [[기본키]]를 참조하는 키 속성
+
다른 테이블의 기본키를 참조하는 키 속성
  
 
; 일반 속성
 
; 일반 속성
기본키나 [[외래키]]를 제외한 속성
+
기본키나 외래키를 제외한 속성
  
 
; 단일 속성
 
; 단일 속성
138번째 줄: 138번째 줄:
  
 
엔티티를 식별할 수 있는 속성을 PK(Primary Key)속성, 다른 엔티티와의 관계에서 포함된 속성을 FK(Foreign Key)속성, 엔티티에 포함되어 있고 PK, FK에 포함되지 않은 속성을 일반속성이라 한다. 또한 속성은 그 안에 세부 의미를 쪼갤 수 있는지에 따라 단순형 혹은 복합형으로 분류할 수 있다. 예를 들면 주소 속성은 시, 구, 동, 번지 등과 같은 여러 세부 속성들로 구성될 수 있는데 이를 복합 속성(Composite Attribute)이라 한다. 또한 나이, 성별 등의 속성은 더 이상 다른 속성들로 구성될 수 없는 단순한 속성이므로 단순 속성(Simple Attribute)이라 한다.
 
엔티티를 식별할 수 있는 속성을 PK(Primary Key)속성, 다른 엔티티와의 관계에서 포함된 속성을 FK(Foreign Key)속성, 엔티티에 포함되어 있고 PK, FK에 포함되지 않은 속성을 일반속성이라 한다. 또한 속성은 그 안에 세부 의미를 쪼갤 수 있는지에 따라 단순형 혹은 복합형으로 분류할 수 있다. 예를 들면 주소 속성은 시, 구, 동, 번지 등과 같은 여러 세부 속성들로 구성될 수 있는데 이를 복합 속성(Composite Attribute)이라 한다. 또한 나이, 성별 등의 속성은 더 이상 다른 속성들로 구성될 수 없는 단순한 속성이므로 단순 속성(Simple Attribute)이라 한다.
일반적으로 속성은 하나의 값을 가지고 있으나, 그 안에 동일한 성질의 여러 개의 값이 나타나는 경우가 있다. 이 때 속성 하나에 한 개의 값을 가지는 경우를 단일값(Single Value), 그리고 여러 개의 값을 가지는 경우를 다중값(Multi Value) 속성이라 한다. 주민등록번호와 같은 속성은 반드시 하나의 값만 존재하므로 이 속성은 단일값 속성(Single-Valued Attribute)이라 하고, 어떤 사람의 전화번호와 같은 속성은 집, 휴대전화, 회사 전화번호와 같이 여러 개의 값을 가질 수 있다. 자동차의 색상 속성도 차 지붕, 차체, 외부의 색이 다를 수 있다. 이런 속성을 다중값 속성(Multi-Valued Attribute)이라 한다. 다중값 속성의 경우 하나의 엔티티에 포함될 수 없으므로 1차 [[정규화]]를 하거나, 아니면 별도의 엔티티를 만들어 관계로 연결해야 한다.<ref name="개요" />
+
일반적으로 속성은 하나의 값을 가지고 있으나, 그 안에 동일한 성질의 여러 개의 값이 나타나는 경우가 있다. 이 때 속성 하나에 한 개의 값을 가지는 경우를 단일값(Single Value), 그리고 여러 개의 값을 가지는 경우를 다중값(Multi Value) 속성이라 한다. 주민등록번호와 같은 속성은 반드시 하나의 값만 존재하므로 이 속성은 단일값 속성(Single-Valued Attribute)이라 하고, 어떤 사람의 전화번호와 같은 속성은 집, 휴대전화, 회사 전화번호와 같이 여러 개의 값을 가질 수 있다. 자동차의 색상 속성도 차 지붕, 차체, 외부의 색이 다를 수 있다. 이런 속성을 다중값 속성(Multi-Valued Attribute)이라 한다. 다중값 속성의 경우 하나의 엔티티에 포함될 수 없으므로 1차 정규화를 하거나, 아니면 별도의 엔티티를 만들어 관계로 연결해야 한다.<ref name="개요" />
  
 
=== 특성 ===
 
=== 특성 ===
 
; 1. 속성의 어원적 의미
 
; 1. 속성의 어원적 의미
속성이라는 의미에는 가공되지 않은 것이라는 의미도 포함되어 있다. 이 말은 곧 원천적인 것을 의미한다. 또한 고유한 성질이란 의미도 가지고 있는데 이 말은 남의 도움을 받지 않더라도 자기만이 가지고 있는 독자적인 성질이 반드시 있어야 함을 뜻한다. 혼자서도 독자적인 성질을 가지고 있느냐에 대한 문제는 절대적이 아니라 상대적이라는 것 때문에 판단이 쉽지 않다. 즉 어떤 [[시스템]]의, 어떤 엔티티에서, 어떤 목적으로 사용하려고 하느냐에 따라서 달라지기 때문에 사람의 종합적인 판단이 필요하다는 것이다. 이러한 속성의 어원적인 특징들은 속성 검증의 원칙으로도 사용된다.
+
속성이라는 의미에는 가공되지 않은 것이라는 의미도 포함되어 있다. 이 말은 곧 원천적인 것을 의미한다. 또한 고유한 성질이란 의미도 가지고 있는데 이 말은 남의 도움을 받지 않더라도 자기만이 가지고 있는 독자적인 성질이 반드시 있어야 함을 뜻한다. 혼자서도 독자적인 성질을 가지고 있느냐에 대한 문제는 절대적이 아니라 상대적이라는 것 때문에 판단이 쉽지 않다. 즉 어떤 시스템의, 어떤 엔티티에서, 어떤 목적으로 사용하려고 하느냐에 따라서 달라지기 때문에 사람의 종합적인 판단이 필요하다는 것이다. 이러한 속성의 어원적인 특징들은 속성 검증의 원칙으로도 사용된다.
  
 
; 2. 속성도 일종의 집합이다.
 
; 2. 속성도 일종의 집합이다.
152번째 줄: 152번째 줄:
  
 
; 4. 속성들 간은 서로 독립적이다.
 
; 4. 속성들 간은 서로 독립적이다.
속성들은 반드시 [[식별자]]에 직접 종속되어야 한다. 이 말은 정규화의 제 2정규형에 해당하는 말이 다. 만약 속성들 간에 종속성이 존재한다면 이들은 별도의 엔티티로 분리되어야 한다. 이것이 바로 제3정규형이다.<ref name="dbguide" />
+
속성들은 반드시 식별자에 직접 종속되어야 한다. 이 말은 정규화의 제 2정규형에 해당하는 말이 다. 만약 속성들 간에 종속성이 존재한다면 이들은 별도의 엔티티로 분리되어야 한다. 이것이 바로 제3정규형이다.<ref name="dbguide" />
  
 
== 도메인 ==
 
== 도메인 ==
데이터 모델링 관점에 있어 [[도메인]](Domain)은 데이터 [[표준화]] 측면에서 매우 중요한 요소다.
+
데이터 모델링 관점에 있어 도메인(Domain)은 데이터 표준화 측면에서 매우 중요한 요소다.
 
도메인이 체계화 및 표준화되지 않으면 물리 모델 구현 관점에서 속성과 엔티티의 이름이 표준화되지 않을 수 있고 데이터 타입의 정확성까지 잃을 수 있기 때문이다.
 
도메인이 체계화 및 표준화되지 않으면 물리 모델 구현 관점에서 속성과 엔티티의 이름이 표준화되지 않을 수 있고 데이터 타입의 정확성까지 잃을 수 있기 때문이다.
 
도메인은 동일한 테이블 타입을 가지는 속성을 분리하는 것을 의미한다. 이러한 도메인 분리 과정에는 일정한 규칙이 존재하는 데, 도메인은 크게 Unique identifier, 코드 속성, 일반 속성으로 분리할 수 있다.
 
도메인은 동일한 테이블 타입을 가지는 속성을 분리하는 것을 의미한다. 이러한 도메인 분리 과정에는 일정한 규칙이 존재하는 데, 도메인은 크게 Unique identifier, 코드 속성, 일반 속성으로 분리할 수 있다.
162번째 줄: 162번째 줄:
 
특히 데이터 모델링을 수행한 후 애플리케이션을 개발할 경우, 도메인 적용 유무가 때때로 큰 차이를 가져오곤 한다.<ref name="axiom" />
 
특히 데이터 모델링을 수행한 후 애플리케이션을 개발할 경우, 도메인 적용 유무가 때때로 큰 차이를 가져오곤 한다.<ref name="axiom" />
  
온라인 서점 시스템을 구현한다고 할 때, [[소프트웨어]]로 해결하고자 하는 문제의 영역인 온라인 서점이 도메인이 된다
+
온라인 서점 시스템을 구현한다고 할 때, 소프트웨어로 해결하고자 하는 문제의 영역인 온라인 서점이 도메인이 된다
 
한 도메인은 다시 여러개의 하위 도메인으로 나뉠 수 있다.  
 
한 도메인은 다시 여러개의 하위 도메인으로 나뉠 수 있다.  
 
ex) 온라인 서점의 하위 도메인 : 상품, 회원, 주문, 정산, 배송 등등
 
ex) 온라인 서점의 하위 도메인 : 상품, 회원, 주문, 정산, 배송 등등
171번째 줄: 171번째 줄:
  
 
=== 정의 방법 ===
 
=== 정의 방법 ===
# 모든 속성을 엔티티별로 나열 <br>
+
1. 모든 속성을 엔티티별로 나열 <br>
# 속성을 명사로 분리 (복합 명사인 경우 명사를 분리) <br>
+
2. 속성을 명사로 분리 (복합 명사인 경우 명사를 분리) <br>
# 공통으로 발생하는 명사를 하나의 도메인으로 생성 (공통으로 발생하는 명사는 하나의 도메인으로 설정해 추후 동일한 데이터 타입을 할당) <br>
+
3. 공통으로 발생하는 명사를 하나의 도메인으로 생성 (공통으로 발생하는 명사는 하나의 도메인으로 설정해 추후 동일한 데이터 타입을 할당) <br>
# 각 도메인별로 데이터 타입과 길이를 지정 <br>
+
4. 각 도메인별로 데이터 타입과 길이를 지정 <br>
# 각 엔티티의 속성에 도메인 할당 <br>
+
5. 각 엔티티의 속성에 도메인 할당 <br>
  
 
즉, 모든 속성을 나열하고 속성을 명사로 분리해야 한다. 이때, 보통 2〜3개의 명사로 속성을 나열하면 도메인 설정에 문제가 발생하지 않는다. 공통 도메인 사용 절차적으로 발생하는 명사를 하나의 도메인으로 생성해야 한다. 이 경우 최소 공배수를 구한 다음 해당 명사만으로 도메인을 구성하면 된다. 도메인은 크게 어렵지 않지만 [[표준화]]를 위해서는 이를 적용하는 것이 바람직하다. 이를 통해서만 실수를 줄이고 데이터의 정합성까지 유지할 수 있기 때문이다. <ref name="axiom">axiom, 〈[http://www.gurubee.net/lecture/2872 도메인의 개념을 이해하자]〉, 《구루비》, 2015-08-13 </ref>
 
즉, 모든 속성을 나열하고 속성을 명사로 분리해야 한다. 이때, 보통 2〜3개의 명사로 속성을 나열하면 도메인 설정에 문제가 발생하지 않는다. 공통 도메인 사용 절차적으로 발생하는 명사를 하나의 도메인으로 생성해야 한다. 이 경우 최소 공배수를 구한 다음 해당 명사만으로 도메인을 구성하면 된다. 도메인은 크게 어렵지 않지만 [[표준화]]를 위해서는 이를 적용하는 것이 바람직하다. 이를 통해서만 실수를 줄이고 데이터의 정합성까지 유지할 수 있기 때문이다. <ref name="axiom">axiom, 〈[http://www.gurubee.net/lecture/2872 도메인의 개념을 이해하자]〉, 《구루비》, 2015-08-13 </ref>
215번째 줄: 215번째 줄:
 
=== 도메인 모델 도출 ===
 
=== 도메인 모델 도출 ===
 
도메인을 모델링할 때 기본이 되는 작업은 모델을 구성하는 핵심 구성요소, 규칙, 기능을 찾는 것이다.
 
도메인을 모델링할 때 기본이 되는 작업은 모델을 구성하는 핵심 구성요소, 규칙, 기능을 찾는 것이다.
이는 모두 [[요구사항]]을 분석하면서 찾아낼 수 있다
+
이는 모두 요구사항을 분석하면서 찾아낼 수 있다
 
* 요구사항을 통해 제공해야 하는 기능을 도출해낼 수 있다
 
* 요구사항을 통해 제공해야 하는 기능을 도출해낼 수 있다
 
출고 상태로 변경하기, 배송지 정보 변경하기 등
 
출고 상태로 변경하기, 배송지 정보 변경하기 등
249번째 줄: 249번째 줄:
 
* [[필드 (데이터베이스)|필드]]
 
* [[필드 (데이터베이스)|필드]]
 
* [[도메인]]
 
* [[도메인]]
* [[속성]]
 
  
 
{{프로그래밍|검토 필요}}
 
{{프로그래밍|검토 필요}}
 +
 
[[분류:데이터베이스]]
 
[[분류:데이터베이스]]

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)