본문 바로가기

데이터베이스

데이터베이스 설계 모호한 개념정리2(관계대수)

#데베설 #스키마 #외부 스키마 #내부 스키마 # 개념 스키마

 

데이터베이스 설계 쪽에서 매번 공부하면 잊고, 또잊고 하며 혼란을 겪어 왔다. 이를 해결하기 위해 매번 망각하고 다시 리마인드하는데 매번 시간이 많이 걸려 나 자신이 알아들을 수 있는 쉬운 용어로 이를 정리하려고 한다. 

키(Key)란? Map이라는 자료구조에서도 '키"라는 말이 사용된다. 하지만 여기서 키는 그 의미가 아닌 테이블의 속성들 중 튜플을 식별할 수 있는, 속성중의 하나인 속성으로써의 키이다. 따라서 키라고 기억하지 말고 "속성으로써의 키(Key)"라고 기억하는게 더 효율적이다. 즉 데이터 베이스에서의 키란 속성으로써의 키로 특정 튜플을 식별하는 속성이 키이다.

특정 튜플을 식별하는 속성=키

키의 다른 한 가지 추가적인 역할은 릴레이션간의 연결고리 역할이다.

관계대수란? 
1. 릴레이션간 연산을 통해 결과 릴레이션을 찾는 절차를 기술한 언어.
1. (논리적 데이터 모델중)관계 데이터 모델을 사용하는데 필요한 언어. 
1. DBMS 내부의 처리언어로 사용되고 있는 절차적인 언어(이렇기 때문에 관계대수에 대한 별다른 인지 없이 프로젝트를 수행할 수 있는일이다. 쿼리는 SQL로 짜고 DBMS내부적으로만 사용되는 언어가 관계대수이다 보니 관계대수에 대한 별다른 지식 없이도 프로젝트를 수행했던 것이다).
1. SQL(Structured Qurey Language)의 이론적 기반을 제공하는 언어(말 그대로 이론적 기반만을 제시하는 것이지 실제 쓰이는 것은 SQL이다). 
1. 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술한 언어

왜 관계대수를 배우나? 하나 이상의 릴레이션에 연산을 수행하여 결과 릴레이션(도출 데이터)이 어떻게 나오는지 그 절차를 관계대수를 통해 확인할 수 있으므로 배워야 한다.

무결성 제약조건에 대하여!

데이터 무결성은 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것이다.

 

정규화란? 이상현상을 없애고 데이터의 정확성과 일관성을 위해 무손실 분해하는 과정(소위 정규화 과정이라함)

이상현상이란? 두가지 이상의 정보가 한 릴레이션에 저장되어 일을때 발생하는 비합리적인 현상임. 구체적으로는 기본키가 아닌 결정자 속성이 있기 때문에 발생하는 것임. 이상현상을 없애기 위해서 릴레이션을 분해하여 기본키가 아닌 결정자 속성을 없애는 것이다. 이 분해하는 과정을 정규화라고 한다.

정규화를 하기 위해서는 우선 함수종속성부터 이해해야한다.

함수종속성이란? 속성간에 함수적으로 종속하는 성질. A ==>> B 일때 A를 결정자 속성 B를 종속자 속성이라고 한다.  함수 종석성을 파악하는 방법은 정말 쉽다. A,B 두개의 속성의 의미를 가지고 판단하면 된다. 즉, 상식적으로 파악하면 된다는 것이다. 예를들어 학생번호를 알면 학생이름을 알수 있는 것은 당연하지만 학생이름을 안다고 해서 학과를 알수 있지는 않을 것이다(즉 함수 종속성은 속성의 의미로 부터 정해진다).

함수종속성을 나타내는 표기법으로 함수 종속성 다이어그램이 있다. 자세한 내용은 구글링 혹은 데이터베이스 개론과 실습 p402참고(이거 복습할려고 하면 함수 종속성에 대해 설명하는 페이지는 모두 읽어보는 게 좋다. 얼마안된다).

이상현상이 발생하는 이유는 함수종속성때문에 이상현상이 발생하는 것이 아니라 기본키가 아닌 결정자 속성때문에 이상현상이 발생하는 것이다(즉, 함수종속성은 이상현상을 발견 하고자 할때 사용되는 도구 같은 것). 기본키가 아닌 결정자 속성이 있다는 것은 두 가지 이상의 정보가 한 릴레이션에 저장되어 있기 때문에 그런 것이고 따라서 릴레이션 분해를 통해 이상현상을 제거해야 한다.

 정규화 과정을 이해하려면 이상현상의 삽입이상, 삭제이상, 수정이상을 이해하고 함수종속성을 이해해야 한다. 데이터베이스개론 p387부터 쭉 읽는 게 가장 빠른길이다.