모델링의 개념 및 특징

  • 현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적 및 구조화 된 형태로 표현하는 과정
  • 데이터베이스의 구조와 관계를 정의하여 데이터의 저장 / 조작 / 관리 방법을 명확하게 정의

 

   1. 단순화(Simplification)

  • 현실을 단순화하여 핵심 요소에 집중하고 불필요한 세부 사항을 제거
  • 단순화를 통해 복잡한 현실 세계를 이해하고 표현

   2. 추상화(Abstraction)

  • 현실세계를 일정한 형식에 맞추어 간략하게 표현하는 과정
  • 다양한 현상을 일정한 양식인 표기법에 따라 표현

   3. 명확화(Clarity)

  • 대상에 대한 애매모호함을 최대한 제거하고 정확하게 현상을 기술
  • 명확화를 통해 모델을 이해하는 이들의 의사소통을 원활하게 함

 

데이터 모델링 3가지 관점
데이터 관점 말 그대로 데이터의 입장에서 바라보는 관점, 데이터가 어떻게 저장되고 접근되며 관리되는지 정의함
프로세스 관점 데이터가 시스템 내에서 어떻게 흐르고 변화되는지에 대해 확인
데이터와 프로세스 관점 특정 프로세스가 어떤 데이터를 사용하는지, 데이터는 어떻게 생성되고 변경되는지를 정의함

 

데이터 모델링 유의점

 

1. 중복(Duplication)이 일어나면 안된다.

  • 한 테이블 혹은 여러 테이블에 동일한 정보를 저장하지 않도록 설계해야 한다.

   

2. 비유연성(Inflexibility)이 되면 안된다.

  • 사소한 변화에도 모델 자체가 변경되지 않도록 유연성 있게 설계해야 한다.
  • 예시로, 학생이 수강하는 과목에 대해서 국어, 수학, 영어 등 과목을 컬럼으로 지정하게 되면 새로운 과목이 추가될 때마다 컬럼이 추가된다. 이는 모델 자체가 변경되는 것이니 옳은 설계가 아니며, '과목' 하나의 컬럼을 만들고 인스턴스가 새로 추가되는 형식이야말로 유연한 설계라고 할 수 있다.

3. 비일관성(Inconsistency)이 되면 안된다.

  • 데이터베이스 내의 정보가 모순되거나 상반된 내용을 갖게 되선 안되며, 이는 중복을 피하더라도 비일관성이 발생할 수 있기 때문에 데이터간 상호 연관 관계를 명확히 정의하고 품질 관리가 필요하다.

 

데이터 모델링 3가지 요소
대상, 엔터티 (Entitiy) 업무가 관리하고자 하는 대상 (객체, 엔터티)

-  현실 세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄
유일한 식별자에 의해 식별 가능 
-  영속적으로 존재하는 2개 이상의 인스턴스의 집합체
-  엔터티는 2개 이상의 속성을 가져야 함
-  업무 프로세스에 의해 이용되어야 함
-  타 엔터티와 최소 1개 이상의 관계가 성립해야 함
속성, 컬럼 (Attribute) 대상이 갖는 속성 (하나의 특징으로 정의될 수 있는 것) 

-  업무에서 필요로 하는 고유한 성질, 특징을 의미 (컬럼으로 표현할 수 있는 단위)
정해진 주식별자에 함수적 종속성을 띄고 있어야 함
-  인스턴스로 관리하고자 하는 더 이상 분리되지 않는최소의 데이터 단위
한 개의 속성은 1개의 속성 값을 갖는다 (속성의 원자) 
인스턴스를 이루는 구성 요소를 일컫음
    (ex. 학생 엔터티의 속성은 이름 / 학번 / 학과번호 등)
관계 (Realationship) 엔터티간의 연관성을 나타낸 개념

-  관계를 정의할 때 인스턴스간의 논리적인 연관성을 파악하여 정의함
존재적 관계 : 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계
    (ex. 부서 엔터티가 삭제되면 사원 엔터티의 존재에 영향을 미침)
행위적 관계 : 엔터티 간의 어떤 행위가 있는 관계
    (ex. 고객 엔터티의 행동에 의해 주문 엔터티가 발생)
-  관계의 구성요소는 관계명 / 차수(Cardinality) / 선택성(Optionality)이 있음
차수(Cardinality) : 1대1 / 1대N(1대다) / M대N(다대다)
    (차수는 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식)
관계의 페어링 : 엔터티 내의 인스턴스가 개별적으로 관계를 가지는 것
    (페어링은 두 엔터티 간의 특정한 인스턴스를 설명하고 추가 정보를 제공)

 

   엔터티의 분류   

1. 유형과 무형에 따른 분류

  • 유형 엔터티 : 물리적인 형태가 있으며, 안정적이고 지속적으로 사용되는 엔터티 (ex. 사원, 물품 등)
  • 개념 엔터티 : 물리적인 형태가 없으며, 관리해야 할 개념적 정보로부터 구분되는 엔터티 (ex. 조직, 보험상품 등)
  • 사건 엔터티 : 업무 수행에 따라 발생하는 엔터티로서 발생량이 많고, 통계자료에 이용됨 (ex. 주문, 청구 등) 

2. 발생 시점에 따른 분류

  • 기본 엔터티 : 태초부터 존재하던 정보로 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성됨. 따라서 타 엔터티의 부모 역할을 할 수 있으며, 자신만의 고유한 주식별자를 가지고 있음 (ex. 사원, 고객, 상품 등)
  • 중심 엔터티 : 기본 엔터티로부터 발생되어 해당 업무에서 중심적인 역할을 하는 엔터티. 이 또한 많은 데이터가 발생하고, 다른 엔터티와의 관계를 맺으며 다양한 행위 엔터티를 생성할 수 있음 (ex. 계약, 청구, 매출 등)
  •  행위 엔터티 : 2개 이상의 부모 엔터티로부터 발생하는 엔터티 (ex. 주문, 사원변경이력 등)

 

   함수의 종속성   

   속성은 정해진 주식별자에 함수적 종속성을 가져야 한다

  • 한 속성의 값이 다른 속성의 값에 종속적인 관계를 갖는 특징을 말한다.
  • A속성의 값에 의해 B속성의 값도 바뀐다면, B는 A에 함수적으로 종속됐다 하고, 이를 수식으로 A → B로 표현됨.

1. 완전 함수적 종속

  • 특정 컬럼이 기본키에 대해 완전히 종속될 때를 말한다.
  • PK를 구성하는 컬럼이 2개 이상일 경우, PK 값 모두에 의한 종속관계를 나타낼 때
  • 제품코드 + 제품명이 PK일 때 유통기한 속성은 두 개의 PK값에 의해 바뀌므로 완전 함수적 종속 관계

2. 부분 함수적 종속

  • 기본키 전체가 아니라, 기본키 일부에 대해 종속될 때를 말한다.
  • 학생번호 + 과목이 PK일 때 강사 속성은 학생번호가 아닌 과목에 따라 결정되므로 부분 함수적 종속 관계

0. 도메인(Domain)

  • 도메인이란, 각 속성이 가질 수 있는 값의 범위를 의미한다.
  • 엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정하는 것을 말한다. 

 

   속성의 분류   

1. 속성의 특징에 따른 분류

기본 속성 -  업무로부터 추출된 모든 속성
-  엔터티에 가장 일반적으로 많이 존재하는 속성
    (ex. 원금, 예치기간 등) 
설계 속성 -  기본 속성 외에 업무를 규칙화 하기 위해 새로 만들어지거나 기본 속성을 변형하여 만든 속성
    (ex. 상품코드, 지점코드 등)
파생 속성 -  다른 속성에 의해 만들어지며, 일반적으로 계산된 값들이 할당된 속성
-  데이터 정합성을 유지하기 위해 가급적 적게 정의하는 것이 좋음
    (ex. 합계, 평균 등)

 

2. 엔터티 구성 방식에 따른 분류

  • PK(Primary Key, 기본키) : 인스턴스를 식별할 수 있는 속성 (중복과 Null값을 허용하지 않음) 
  • FK(Foreign Key, 외래키) : 다른 엔터티와의 관계에 포함되어 있는 속성
  • 일반 속성 : 엔터티의 일반적인 속성 (PK/FK가 아님) 

3. 분해 여부에 따른 속성

  • 단일 속성 : 하나의의미로 구성된 경우를 말함 (ex. 회원 아이디는 임의로 분해할 수 없기 때문에 단일 속성)  
  • 복합 속성 : 여러개의 의미로 구성된 경우를 말함 (ex. 주소는 도, 시, 구 등으로 분해가능하기 때문에 복합 속성)
  • 다중값 속성 : 속성에 여러 개의 값을 가질 수 있는 경우, 이 경우는 엔터티로 분해해야 함

 

데이터 모델링의 3단계

개념이 있어야 논리를 세울 수 있고, 세워진 논리는 물리적인 형태를 갖출 수 있다!

 

1. 개념적 모델링

  • 업무 중심적이고 포괄적인 수준을 말한다.
  • 추상화 수준이 가장 높으며, 업무에 필요한 핵심 엔터티를 추출하는 단계이다.
  • 추출된 엔터티들간의 관계들을 표현하기 위해 ERD를 작성한다.  

2. 논리적 모델링

  • 개념적 모델링의 결과를 바탕으로 세부속성, 식별자, 관계 등을 표현하는 단계이다.
  • 데이터의 구조를 정의하기 때문에 비슷한 업무 혹은 프로젝트에서 동일한 형태를 갖추고 있다면 재사용이 가능한데, 재사용성이 높을수록 유지보수에 용이해진다.
  • 데이터 정규화를 수행한다.

3. 물리적 모델링

  • 논리 모델링이 끝나면 직접 물리적으로 생성하는 단계이다.
  • 데이터 베이스의 성능, 디스크의 저장구조, 하드웨어의 보안성을 고려해야 한다.
  • 가장 구체적인 모델링이기 때문에 추상화 수준이 가장 낮다.

0. ERD 작성 절차 (Entity Relationship Diagram)

     ERD란? 엔터티와 엔터티 간의 관계(Relationship)를 시각적으로 표현한 다이어그램

  1. 엔터티를 도출한 후 그리기
  2. 엔터티 배치하기
  3. 엔터티 간의 관계를 설정하기
  4. 관계명을 서술하기
  5. 관계의참여도 기술하기
  6. 관계의 필수 여부를 확인하기

 

   식별자 란?   

  • 하나의 엔터티에 구성된 여러개의 속성 중에 해당 엔터티를 대표할 수 있는 속성을 말한다.
  • 엔터티는 하나의 유일한 식별자가 존재해야 한다.
  • 식별자는 논리 모델링 단계에서 사용하는 용어이며, 물리 모델링에서는 키(Key)라고 한다.

 

   식별자 분류   

대표성 여부에
따른 분류
주식별자
(기본키)
유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자
-  엔터티 내에서 각 인스턴스를 유일하게 구분할수 있는 식별자
-  타 엔터티와 참조관계를 연결할 수 있는 식별자 
보조 식별자
(후보키)
-  유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자
-  엔터티 내에서 각 인스턴스를 구분할 수 있지만 참조 관계를 연결할 수 없음  
생성 여부에
따른 분류
내부 식별자 -  타 엔터티 참조 없이 엔터티 내부에서 스스로 생성되는 식별자
외부 식별자 타 엔터티와의 관계로 인하여 만들어지는 식별자, 즉 외래키(FK)
속성 수에
따른 분류 
단일 식별자 하나의 속성으로 구성
복합 식별자 두 개 이상의 속성으로 구성
대체 여부에
따른 분류
본질 식별자 -  원조 식별자
-  비즈니스 프로세스(업무)에서 만들어지는 식별자로 반드시 필요한 식별자
인조 식별자 인위적으로 만들어지는 식별자 (꼭 필요하진 않지만 편의성 등의 이유로 만들어짐)
-  각 행을 구분하기 위해 사용되며, 자동 증가하는 일련번호와 같은 성질을 띔
중복 데이터 발생 가능성이 높아지며 이에 따라 불필요한 인덱스가 낭비되기도 함

 

 

주식별자 특징

  1. 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분할 수 있어야 한다.
  2. 최소성 : 주식별자를 구성하는 속성은 유일성을 만족하는 최소한의 속성으로 구성되어야 한다.
  3. 불변성 : 주식별자의 값은 변해선 안되며 항상 고유의 값으로 존재해야 한다.
  4. 존재성 : 반드시 값이 존재해야 하기 때문에 Null을 허용하지 않는다. (Null - 값이 없음)

주식별자 도출기준

  1. 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
  2. 명칭이나 내역과 같은 이름은 피하는게 옳다. (이 때 마땅한 속성이 없다면 인조 식별자를 만듦)  
  3. 속성의 수를 최소한으로 설정해야 한다.

 

   식별 관계와 비식별 관계   

1. 식별 관계 (Identification Relationship)

  • 하나의 엔터티의 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계
  • 식별 관계는 ERD에서 실선으로 표시함

2. 비식별 관계 (Non-identification Relationship)

      강한 개체 : 독립적으로 존재할 수 있는 엔터티

      약한 개체 : 독립적으로 존재할 수 없는 엔터티 

  • 강한 개체의 기본키를 약한 개체에선 기본키가 아닌 일반속성으로 관계를 가지는 것을 말함
  • 비식별 관계는 ERD에서 점선으로 표시함

정규화

  • 최소한의 데이터를 하나의 엔터티에 넣는 식으로 데이터를 분해하는 과정
  • 데이터의 일관성, 최소한의 데이터 중복 및 유연성을 위한 과정
  • 데이터의 중복을 제거하고 이상현상을 줄이기 위한 데이터베이스 설계 기법
  • 논리 데이터 모델링 수행 시점에서 고려되며 제 1 정규화부터 제 5 정규화까지 존재 (보통 제 3정규화 까지 다룸)

0. 이상현상(Abnormality)

정규화를 하지 않아 발생하는 현상으로 삽입이상, 갱신이상, 삭제이상 등이 있다!

  • 삽입이상 : 특정 인스턴스가 삽입 될 때 정의되지 않아도 될 속성까지 반드시 입력해야 하는 상황
  • 삭제이상 : 특정 정보만 삭제하려 했으나, 연관된 다른 데이터까지 삭제되는 상황

 

   정규화 단계   

1. 제 1 정규화 (1NF)

  • 테이블의 컬럼이 원자성(한 속성이 하나의 값만 갖는특성)을 갖도록 테이블을 분해하는 단계
  • 즉, 하나의 행이 가진 컬럼의값이 반드시 한 값만 입력되도록 행을 분리하는 단계

2. 제 2 정규화(2NF)

  • 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만들도록 테이블을 분해하는 단계
  • PK(기본키)가 2개 이상의 컬럼일 경우, 기본키 컬럼의 일부와 종속되는 관계가 존재하면 분리하는 단계

3. 제 3 정규화(3NF)

  • 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 단계
  • 이행적 종속이란 B가 A에 함수적으로 종속되고, C가 B에 함수적으로 종속된 경우, C가 A에도 함수적으로 종속이 되는 경우가 성립할 때를 말함 (즉, AB와 BC로 분리하는 과정이며 주로 A는 PK상태이다)
  • 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없음

 

0. 조인(Join)

  • 데이터의 중복을 피하기 위해 테이블은 정규화에 의해 분리되며, 분리된 두 테이블은 서로 관계성을 갖게 된다. 그리고 다시 이 두 테이블의 데이터를 동시에 출력하거나, 관계가 있는 테이블을 참조하기 위해서는 데이터를 연결해야 하는 이 과정을 조인(Join)이라고 한다.
  • 계층형 데이터 모델 : 하나의 엔터티 내의 인스턴스끼리 계층 구조를 갖는 경우를 말함 (즉, 셀프조인)

 

 

Java 프로그래밍을 하기 앞서 개발에 도움이 되는 밑거름...

자바 개발 도구를 다운받고 이를 사용할 수 있도록 설정하는 것 까지 해보려고 한다.

 

먼저 들어가기 앞서 정보용으로 작성된 포스터가 아니며, 개발 공부를 위해 개인적으로 되짚는 글임을 알립니다. 


 

   1. 다운받고자 하는 개발키트 버전 확인 후 파일 다운로드 (JDK SE 17)   

 

Java Archive Downloads - Java SE 17

WARNING: Older versions of the JDK are provided to help developers debug issues in older systems. They are not updated with the latest security patches and are not recommended for use in production. For production use Oracle recommends downloading the late

www.oracle.com

사용하는 운영체제에 맞는 파일을 다운받으면 된다.

압축파일을 다운받은 후, 경로를 지정하기 편한 곳에 압축을 풀어둔다.

 

 

 

   2. 제어판 - 시스템 환경 변수 편집   

 

환경 변수(N)... 에 들어가면 나오는화면에서 Path를 선택한다.

 

 

새로 만들기(N) 버튼을 누른 후, JDK의 bin파일이 있는 주소를 입력해주고 확인을 누른 뒤 빠져나온다.

 

 

 

   3. 설치 확인하기   

이제 제대로 위치가 잡혀 있는지 확인하기 위해 CMD를 열어 확인해본다.

(하지만 요즘 윈도우는 기본적으로 설정을 해주지 않아도 알아서 잘 잡는다고는 한다...)

 

창에 java -version을 입력하자 17버전을 인식하는 것을 확인할 수 있다.

 


 

이번에는 이미 설정 된 17버전을 지우고 21버전을 설치해보도록 하겠다.

일단 설치하기 앞서 설정된 환경변수를 지워보자.

 

 

 다시 시스템 환경 변수 편집에 들어가 Path에 추가했던 파일 경로를 삭제한다.

 

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

 

설치하고자 하는 파일을 다운받고 압축을 푼다.

 

 

새로 받은 JDK의 bin파일 위치를 Path에 새로 만들어준다.

 

 

CMD로 잘 잡혀 있는지 확인한다.

 

필자는 개발 공부하는 동안 17버전을 써야 하기 때문에 등록했던 21버전을 지우고 다시 17버전으로  만들어 두었는데 확인해보니 17버전으로 잘 잡혀 있는 것 까지 확인했다 ^-^ 

+ Recent posts