Notice
Recent Posts
Recent Comments
05-17 23:47
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Database Management - E/R model 1 본문

BackEnd/Database Management

Database Management - E/R model 1

알 수 없는 사용자 2023. 3. 17. 23:26

 우리가 주로 사용하는 데이터베이스 시스템(DBMS)은 관계형 데이터베이스이다. 관계형 데이터베이스는 주로 현실 세계의 데이터화 하고 싶은 문제들을 개념적 모델링의 하나인 E/R Model을 사용하게 된다. 개념적 모델링은 현실 세계에서 존재하는 것들을 추상화하여 개념적인 수준에서 모델링하는 작업이고, E/R Model(Entity-Relationship model)은 데이터베이스 설계에서 사용되는 개념적 모델링(Conceptual modeling) 기법이다. E/R 모델에서는 개체(Entity)와 개체들 사이의 관계(Relationship)을 정의하게 된다. 개체는 데이터베이스에 저장되어야 하는 유형의 정보를 나타내며, 관계는 개체들 간의 상호작용을 의미하게 된다. 이러한 것들을 잘 정의하여 실제 데이터베이스의 구조와 관계를 잘 파악할 수 있고, 데이터베이스 스키마를 구성할 수 있다.

 우선 데이터베이스를 잘 설계하려면 다음과 같은 일반적인 프로세스를 거친다.

  1. Requiremets Analysis 요구사항 분석
    • What is going to be stored?
    • how is it going to be used?
    • What are we going to do with the data?
    • Who should access the data
  2. Conceptual Design 개념적 설계
    • A high-level description of the database
    • Sufficiently precise that technical people can understand it
    • But, not so precise that non-technical people can't participate
  3. Logical, Physical, Security, etc.
    • Logical Database Design
    • Physical Database Design
    • Security Design

 또한 데이터베이스 설계를 위해 기본적인 개념인 Entities 와 Entity Sets를 살펴보자.

 

Entity

Entities  데이터베이스에서 관리하고자 하는 각각의 개체를 말함. 예를 들어 고객 A의 데이터로 아이디와 패스워드를 저장하고 싶다고 할 때, 아이디, 패스워드라는 특정 속성(Attribute)를 가지는 고객 A는 개체(Entity)라고 할 수 있다. OOP 개념에서 Instances과 유사한 개념이다.
Entity Sets  엔티티 집합은 데이터베이스에서 관리하고 싶은 엔티티들의 집합을 말한다. 고객이라는 instance들을 생성하고 그 고객들을 Entity Sets 안에 포함되는 것으로 보면 된다. Entity Set을 어떻게 설계하는지에 따라 Entity의 속성이 달라진다.

 Entity set은 Attributes를 가지는데, entity들 각각에 들어갈 수 있는 특성이라고 보면된다. 예를 들어서 사람들은 각자 키와 몸무게를 가지는데 이때, 키와 몸무게는 Attribute가 되는 것이다. 사람 한명 한명은 entity로 볼 수 있고, entities를 모아놓은 것을 Entity Sets 라고 할 수 있다. 특히 속성(Attributes)중에서 Key라는 개념은 주어진 집합 내의 관계에서 모든 인스턴스 가운데 유일성(Unique)과 최소성(Minimality)을 보장해주는 하나 이상의 Attribute 집합을 Key라고 한다. 여기서 나오는 개념이 함수 종속성(Functional Dependency)이라고 있는데 데이터베이스에서 두 개 이상의 속성(Attribute)들 간의 관계를 나타내는 중요한 개념 중 하나라고 보면 된다.

 예를 들어서 학생 Entity Sets가 있고, Attributes로는 학번X, 이름Y, 전공Z을 가진다고 하자. 이때 각각의 Attribute은 학번에 대해 이름과 전공이 항상 동일하게 결정이 되는데, 이러한 관계를 함수 종속성이라고 표현하고, 다음과 같은 함수 종속성이 성립한다.

X → YZ

 이는 학번(X)가 결정되면 이름(Y)와 전공(Z)가 항상 같은 값을 가져야 함을 나타내는 RDBMS에서 자주 쓰이는 notation(표기법)이다. 여기서 X는 (최소) 결정자(Minimal Determinant), YZ는 종속속성(Dependent)이다. 이런 표기법을 사용하면 데이터베이스 설계에서 함수 종속성을 명확히 분석하고, 필요한 경우에는 더 작은 단위로 나누어 정규화 할 수 있게 된다. 위의 notation을 다음과 같이 말로 대체할 수 있다. "X가 결정되면 Y와 Z는 항상 같은 값을 가져야 한다." 이것이 Minimality이다.

 다시 돌아와서, 속성(Attributes)중에서 키(key) 라는 개념은 다른 속성들과는 다르게 고유성(Unique, 단 하나의 값만 가짐)을 보장하고, 다른 속성들과는 다르게 최소성(Minimality, 함수 종속성에서 결정자와 종속자 간의 관계를 나타내는 속성들이 최소한으로 유지되는 상태)을 보장하는 하나 이상의 Attribute 집합을 일컫는다.

key : A key is a minimal set of attributes that uniquely identifies an entity

 

 해당 key는 tuple을 유일하게 식별할 수 있는 식별자이며 중요한 개념이다. key에도 다양한 유형이 있는데 다음과 같다.

명칭 설명
Primary Key(기본키) 각 레코드를 식별하는 유일한 값을 가진다.
특징으로는 Null을 가질 수 없고, 중복된 값을 가지지 않는다.
Foreign Key(외래키) 다른 테이블의 Primary Key를 참조하는 키이다.
데이터 무결성(Integrity)을 유지하기 위해 사용된다. (중복된 값 있을 수 있음)
Candidate Key(후보키) 테이블에서 Primary Key가 될 수 있는 키이다.
중복된 값을 가질 수 없고, Null을 가질 수 없다.
Alternate Key(대체키) 후보 키 중 Primary Key로 선택되지 않은 나머지 Candidate Key들이다.
똑같이 Null을 가지지 못하고 중복된 값이 없다.
Composite Key(복합키) 두 개 이상의 열을 조합하여 Primary Key를 만든다.
각 열의 값 조합은 유일해야 하고, Null을 가질 수 없다.
Super Key(슈퍼키) 테이블에서 유일한 값을 가지는 열의 집합이다.
Candidate Key와 Primary Key를 포함한다.
Unique Key(고유키) 중복된 값을 허용하지 않는 Key이다.
Null 값을 가질 수 있다.

 Foreign Key 만 유일하게 Key들 중에 중복된 값이 있을 수 있다.

 

Relationship

 관계(Relationship)는 수학에서 다음과 같이 정의하고 있다. 집합 A에서 B로의 관계를 데카르트곱(cross-product) A✕B의 한 부분집합으로 정의한다. DB에서도 유사하게 entity sets 사이의 relationship을 다음과 같이 정의한다.

A relationship between entity sets A and B is a subset of all possible pairs of entities in A and B, with tuples uniquely identified by A and B's keys

 Relationship은 따라서 두 개 이상의 Entity Sets 간의 Attribute들을 가져와서 만들어진 새로운 형태의 Entity Sets라고 봐도 무방하다.

 

E/R Diagram

 이러한 E/R 모델은 한눈에 파악하도록 Diagram을 그릴 수 있는데 그리는 방법은 다음과 같다.

  • Entity Sets 는 직사각형의 크기로 안에 이름을 넣은 후 그린다.
  • 각 Entity Sets 에 맞는 Entities를 동그라미로 그리고 Entity Sets와 선으로 연결해준다. 또한 Attribute 이름을 넣어준다.
  • Relationship은 Entity Sets 간에 생성된 것이므로 두 개 이상의 Entity Sets 간에 연결된 형태로 마름모로 그려준다.

예제는 다음과 같다.

E/R Diagram

 Programming Language에서도 변수이름에 대한 Notation이 있듯이, 여기에도 Notation이 있다.

Entity Sets : 복수로 작성하고, 명사로 작성하며, Camel case를 따른다.
Entities : 단수로 작성하고, 명사로 작성하며, Camel case를 따른다.
Relationships : 동사로 작성하며, Camel case를 따른다.

 

 

Comments