SQLD

#3 데이터 모델링(속성)

sundori 2024. 7. 8. 21:54

목차

    속성이란?

    우리가 무언가(사람, 사물)을 정의할 때 보통 여러 가지 특징들이 수식어로 붙게 되는 것을 볼 수 있다. 예를 들어 우리 사람에게는 이름, 주민번호, 전화번호 등 수식어가 붙는데 이렇게 사물이나 개념의 특징을 설명해 줄 수 있는 것들을 속성이라고 부른다.

    그리고 이러한 속성은 더 이상 분해가 되지 않아야 하며, 필요한 항목이어야 한다. 사람이라는 엔터티에 국적이라는 속성으로 예를 들 수 있다. 

    속성값

    각각의 객체(엔터티)가 가질 수 있는 속성들은 속성값들을 가지는데 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터라고 볼 수 있다.

    속성 속성값
    이름 홍길동
    국적 대한민국
    전화번호 010-1234-5678

     

    하지만 각 속성은 하나의 속성값만을 가질 수 있다. 만약 하나의 속성이 여러 개의 속성값을 갖는 경우 별도의 엔터티로 분리하는 것이 좋다.

    어떻게 분리하냐? 위의 표는 사람이라는 엔터티가 가지는 속성들이고 또 하나의 엔터티 국적을 만드는 것이다.

    엔터티, 인스턴스, 속성, 속성값의 관계

    위에 것들을 보면 엔터티 ⊃ 인스턴스 ⊃ 속성의 관계가 성립한다는 것을 알아야한다. 
    ⊃ 기호는 수학적으로 "포함 관계"를 나타내는 기호이다. 이 기호는 한 집합이 다른 집합을 포함하는 관계를 나타낼 때 쓰며

    위의 식을 풀이하자면 엔터티가 인스턴스를 포함하고 인스턴스는 속성을 포함한다는 의미입니다.

    포함 관계

    분류

    특성에 따른 분류

    기본속성(Basic Attribute)
    • 기본속성은 엔터티(또는 레코드)의 주요 속성으로, 직접적으로 저장되거나 기록될 수 있는 속성입니다.
    • 예를 들어, "사용자" 엔터티의 기본속성으로는 "이름", "나이", "성별" 등이 있을 수 있습니다.
    • 기본속성은 보통 엔터티의 주요 특성을 나타내며, 해당 엔터티의 핵심 데이터로 취급됩니다.

      사실상 엔터티의 가장 많은 퍼센티지를 차지하는 속성이며 일부 설계속성과 파생속성을 제외한 모든 속성이 이 기본 속성에 속한다.
    설계속성(Designed Attribute)
    • 설계속성은 여러 개의 기본속성을 조합하여 만들어진 속성입니다.
    • 즉, 설계속성은 하나의 속성이지만 내부적으로는 여러 기본속성으로 구성될 수 있습니다.
    • 예를 들어, "주소"라는 설계속성은 "도시", "도로명", "우편번호" 등 여러 개의 기본속성으로 구성될 수 있습니다.
    • 설계속성은 데이터의 일부를 논리적으로 그룹화하고, 더 세부적으로 나눌 수 있도록 도와줍니다.

      이러한 속성은 업무에 존재하지 않지만 설계하다 보니 필요하다고 판단되어 도출되는 경우도 많다.
    파생속성(Derived Attribute)
    • 파생속성은 다른 속성들의 값 또는 다른 데이터로부터 계산되거나 유도된 값입니다.
    • 저장하지 않고 필요할 때 계산하여 사용할 수 있습니다.
    • 예를 들어, "나이"라는 기본속성을 이용하여 "출생년도"라는 파생속성을 계산할 수 있습니다. 즉, "출생년도"는 "나이"를 이용해 유도된 값입니다.
    • 파생속성은 데이터 중복을 줄이고 데이터의 일관성을 유지하는 데 도움을 줍니다.

      다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형되어 생성된 속성이다.

    구성방식에 따른 분류

     주 키 (Primary Key/PK) 속성
    • 주 키는 관계형 데이터베이스에서 각 레코드를 고유하게 식별하기 위해 사용되는 유일한 식별자입니다.
    • 주 키는 해당 테이블의 각 레코드에 대해 반드시 유일해야 하며, NULL 값을 가질 수 없습니다.
    • 주 키는 테이블에서 다른 속성들과 연결될 때 사용되기도 하며, 주로 인덱스를 생성하여 데이터 검색 속도를 향상시킵니다.

      엔터티에 속한 각 인스턴스에 유니크함을 부여하는 속성이다. 사람의 경우 주민번호 상품의 경우 상품코드, 학생의 경우 학번이 주 키에 속한다.
    외래 키 (Foreign Key / FK) 속성
    • 외래 키는 다른 테이블의 주 키를 참조하는 속성입니다.
    • 관계형 데이터베이스에서 테이블 간의 관계를 설정하는 데 사용됩니다.
    • 외래 키는 특정 테이블의 주 키 값을 다른 테이블의 속성으로 가질 수 있습니다.
    • 이를 통해 데이터베이스에서 다양한 테이블 간의 관계를 정의하고 유지할 수 있습니다.

      다른 엔터티와 관계를 맺게 해주는 매개체 역할을 하는 속성이다. 직원의 경우 부서 코드, 학생의 경우 학과 코드, 고객(회원)의 경우 회원등급이 될 수 있다.
    일반 속성
    • 일반 속성은 주 키나 외래 키가 아닌 일반적인 데이터를 나타내는 속성입니다.
    • 엔터티나 테이블에서 필수적인 데이터 요소지만, 주 키나 외래 키가 아닌 모든 속성을 포함합니다.
    • 예를 들어, "사용자" 엔터티의 "이름", "나이", "이메일" 등이 일반 속성입니다.
    • 일반 속성은 데이터의 실제 값들을 저장하고 관리하는 데 사용됩니다.

      PK, FK를 제외한 나머지 속성들을 일반속성이라고 하며 상품의 경우 상품명, 가격, 학생의 경우 이름, 생년월일이 이에 속한다.

    도메인

    여기까지 계속 속성에 대해 설명했는데 도메인은 속성이 가질 수 있는 값(속성값)의 범위를 말한다. 예를 들어 우리들의 주민번호는 13자리의 숫자 그리고 우편번호는 5자리의 숫자라는 범위를 가지고 있고 이것은 엔터티를 정의할 때 타입과 크기로 나타냅니다.

     

    도메인의 개념

    • 도메인은 속성이 허용하는 값의 범위를 정의합니다. 예를 들어, 숫자, 문자열, 날짜 등의 데이터 타입이 있으며, 각각의 데이터 타입은 특정한 값의 집합을 허용합니다.
    • 예를 들어, "주민번호" 속성의 도메인은 13자리의 숫자입니다. 따라서 이 속성은 오직 13자리의 숫자만을 포함할 수 있습니다.
    • 또 다른 예로, "우편번호" 속성의 도메인은 5자리의 숫자입니다. 이 속성은 정확히 5자리의 숫자만을 값으로 가질 수 있습니다.

    도메인과 데이터 유효성

    • 도메인은 데이터의 유효성을 확인하는 데 중요한 역할을 합니다. 데이터베이스에서 도메인을 정의함으로써, 허용되지 않는 값이나 잘못된 형식의 데이터가 저장되는 것을 방지할 수 있습니다.
    • 예를 들어, "이름" 속성의 도메인이 문자열이고 최대 길이가 50자라면, 이 속성은 50자 이내의 문자열만을 포함할 수 있습니다. 이를 통해 데이터의 일관성과 정확성을 유지할 수 있습니다.

    도메인과 데이터베이스 설계

    • 데이터베이스 설계 과정에서 각 속성의 도메인을 명확히 정의하는 것은 매우 중요합니다. 이는 데이터 모델링의 일환으로, 각 속성이 어떤 종류의 데이터를 저장할 수 있는지를 명확히 하고, 데이터의 일관성을 유지하는 데 도움을 줍니다.
    • 도메인을 정의함으로써 데이터베이스 시스템은 입력된 데이터의 유효성을 자동으로 검사하고, 잘못된 데이터가 입력되는 것을 방지할 수 있습니다.

    결론적으로, 도메인은 데이터베이스 설계에서 각 속성의 허용되는 값의 범위를 정의하며, 데이터의 정확성과 일관성을 유지하는 데 중요한 역할을 합니다.

     

    'SQLD' 카테고리의 다른 글

    #5 데이터 모델링(식별자)  (0) 2024.07.15
    #4 데이터 모델링(관계)  (0) 2024.07.09
    #2 데이터 모델링(엔티티)  (0) 2024.07.04
    #1 데이터 모델링  (0) 2024.07.04