관계형 데이터베이스

Leutbing·2023년 7월 28일
0

Database

관게형 데이터베이스

관계형 데이터베이스를 구성하는 개체나 관계를 모두 릴레이션이라는 표로 표현한다.

관계형 데이터베이스의 Relation 구조

  • 릴레이션 : 데이터들을 표 형태로 표현하는 것
  • 릴레이션 스키마 : 구조를 나타내는 릴레이션
  • 릴레이션 인스턴스 : 실제 값

튜플 (Tuple)

  • 릴레이션을 구성하는 각각의 행
  • 속성의 모임으로 구성된다.
  • 파일 구조에서 레코드와 같은 의미
  • 튜플의 수 = 카디널리티(Cardinality) = 기수 = 대응수

엔티티타입

식별자

모델링 과정

  1. 주식별자를 먼저 정의
  2. 관계
  3. 외래식별자 정의

주식별자(primary identifier)

엔티티에 소속된 인스턴들을 구별하는 기준 역할을 하는 속성을 말한다.
물리적 데이터베스 용어에서는 각 튜플의 유일성을 구별해 줄 수 있는 칼럼을 말하며 기본키라고 한다.

주식별자 선정방식

  • 현재 시점에서뿐만 아니라 미래에도 중복된 값이 없어야 한다.
  • 주식별자는 길이가 짧고, 단순하며, 나중에 자료를 검색할 때 기준이 되는 것이 좋다.
  • 어떤 컬럼이 기본키가 될 수 있는지 알려면 해당 컬럼의 값들을 비교하여 중복성 여부를 확인하면 된다.

복합 속성으로 이루어진 주식별자

단일 속성만으로 주식별자가 될 수 없는 경우는 여러 속성을 합쳐서 식별자가 될 수 있는지를 찾아야 한다. 복합 속성이 주식별자가 되는 경우는 해당 엔티티가 어떤 정보를 관리하기 위한 것인지를 살펴보면 주 식별자를 쉽게 찾을 수 있다.

외래식별자

외래식별자는 관계와 밀접한 관련이 있다. 두 엔티티가 관계가 있다면 자식 엔티티의 외래식별자 속성이 부모 엔티티의 주식별자를 참조하게 된다. 따라서 관계를 올바르게 정의했다면 외래식별자는 거의 기계적으로 정의할 수 있다.

관계의 정의 방법

1) 문서로부터 동사를 구분한다.
2) 관계 매트릭스를 그려본다.
3) 부모, 자식 관계에 있는 엔티티들을 찾아본다.
4) 관계가 정의되면 카디낼러티와 관계의 참여도를 표시한다.

엔티티타입

엔티티타입은 엔티티의 집합이라고 할 수 있고, 반대로 엔티티는 엔티티 타입에 속한 하나의 인스턴스라고 할 수 있다. 데이터베이스에서 테이블에 해당되는 데이터 모델에서 가장 중요한 표기법이다.

  • 업무에 필요하고 관리하고자 하는 정보
  • 유별한 식별자에 의해 식별이 가능
  • 영속적으로 존재
  • 업무에 사용
  • 속성을 가져야한다.
  • 하나 이상의 관계

즉, 식별자(identifier)은 데이터베이스에서 통상 KEY라고 인식하면 된다.

도메인

엔티티의 속성들이 가질 수 있는 값들의 집합이다.

용어사전 정의

용어사전(data dictionary)이란 논리적 데이터베이스 설계나 물리적 데이터베이스 설계시 사용되는 용어들의 의미를 정의해 놓은 문서를 말한다. 요기서 말하는 용어란 주로 엔티티(테이블) 이름, 속성(컬럼) 이름을 말한다.

용어사전을 정의하는 이유

동일한 의미의 용어를 설계자들이 서로 다르게 사용하여 일어나는 혼란을 방지하려는 목적과, 논리 설계 단계에서 한글로 작성한 엔티티, 속성 이름을 물리적 설계단계에서 영어 이름으로 바꿀 때 통일성을 기하려는 목적에서 사용한다.

4-STEP 모델링

업무의 흐름을 이해한 상태에서 엔티티타입과 속성 및 관계를 도출할 때 업무구조, 업무흐름, 기술적 모델링, 검토 및 정제의 방법을 적용해 데이터 모델을 완성해나가는 실무적이고 빠른 모델링 방식

JAVA

상속(Inheritance)

상위 클래스의 모든 멤버를 하위 클래스가 물려 받는 것
상속은 객체 지향 언어의 주요한 특징 중 하나인 재 사용성과 코드의 간셜성(중복된 코드를 하나의 클래스에 표현)을 제공

상속의 장점

  • 코드를 재활용함으로써 간소화된 클래스 구조 이용

형식

[public/final/abstract] class 클래스이름 extends 상위클래스이름
{
  멤버 변수;
  멤버 메서드;
}

오버라이딩

부모 클래스로부터 상속받은 메서드의 내용을 재정의(변경) 하는 것을 오버라이딩이라고 한다.

형식

class Car{

    void drive(){
        System.out.println("기름을 써서 출발");
    }
}

class EvCar extends Car{

    @Override
    void drive(){
        System.out.println("전기를 써서 출발");
    }
}

0개의 댓글