본문 바로가기
Delphi Tip/데이터베이스

델파이 데이타베이스 기초 2

by MonoSoft 2023. 10. 4.
728x90
반응형

델파이 데이타베이스

 

728x90

 

 

 

 

무결성(Integrity) 

무결성이란 데이타베이스에 저장된 데이타의 일관성(consistency)를 의미합니다.

즉 데이타 베이스 일관성을 좋게 하기 위해 나름대로 정의를 내린것들이죠.

 

 

 

실체(테이블) 무결성(Entity Integrity) 

 

테이블 무결성은 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구한다.

즉 기본키가 설정되어있어야 함을 의미한다.

 

 

영역무결성(Domain Integrity) 

영역무결성은 한 필드에 NULL값이 허용되는지를 결정

 

 

참조무결성(Referential Integrity)

참조무결성은 기본키(참조되는 테이블에서)와 참조 키(참조하는 테이블에서)간의

관계를 유지하는 것을 보장한다.

 

이것은 예를 들어 거래내역 테이블과 거래처관리

테이블이 거래처코드로 연결되어 있을때 거래내역 테이블에

자료를 추가할때 거래처관리 테이블에 없는 거래처코드는 입력이 될수 없고,

또 거래처관리 테이블을 삭제 할때 거래내역 테이블에 삭제 할려는

거래처코드를 가진 레코드가 있을때는

거래처 관리 테이블의 레코들 삭제 할수 없다는 말이다.

 

만약 삭제 된다면 나중에 거래내역 테이블에서

그 거래처 코드를 참조할려고 할때 치명적인 문제가 발생할테니..

 

 

정규화(Normalize)

이것은 테이블을 설계할때 중복된 자료의 저장을 최대한 피하기 위해

테이블을 설계할때 참고할수 있는 방법으로 보통

1-3단계(그이상의 정규화 단계 도있다) 의 정규화 과정을 거칩니다.

 

1) 제 1 정규형

데이터베이스가 제 1 정규형이 되기 위해서는

모든 반복되는 필드가 다른 테이블로 이동하여야 한다.

즉, 하나의 레코드는 정확히 하나의 값을 표현해야 한다.

 

예) 사원 관리 테이블 : 사원정보 필드

1. 사번

2. 이름

3. 부서코드 4. 직급

5. 지급에 따른 최대 급여

6. 직급에 따른 최소 급여

7. 부양가족이름1

8. 부양가족구분1

9. 부양가족이름2

10. 부양가족구분2

이런 테이블의 경우 부양가족이란 정보가 중복이 됩니다.

그리고 부양가족이 3이상일수도 있고 한명도 없을경우

상당히 비효율적인 필드가 됩니다.

그러므로 부양가족에 관한 테이블을 따로 만들어서

사번 필드를 가지고 연결해야 합니다.

그러면 그 테이블은 제 1 정규화를 만족하는 것입니다.

 

(제1정규형) 테이블 : 사원정보

테이블 : 부양가족정보 필드

1. 사번 <----> 1. 사번

2. 이름 2. 부양가족구분

3. 부서코드 3. 부양가족이름

4. 직급

5. 직급에 따른 최대급여

6. 직급에 따른 최소급여

7. 급여

 

2) 제 2 정규형

제 2 정규형은 모든 NON-KEY 필드들은 전체 PRIMARY-kEY필드에 의존한다.

즉 테이블의 중복성을 제거 하여 각 테이블이 자신만의 정보를 가지는 것입니다.

위의 예제를 계속 보면 부서와 최대, 최소 급여라는 부분은

부서에 의해서 결정이 되는 사항이다.

즉. 사원개개인과 관계 된게 아니라 부서만 알면 알수 있는 것이므로

사번(PRIMARY-KEY)와 아무 상관없다.

그러므로 사원 정보 테이블에 있어야 될 필요가 없다.

그래서 직급정보 테이블로 옮길 필요가 있다.

 

(제2정규형) 테이블 : 사원정보

필드

1. 사번

2. 이름 테이블 : 직급정보

3. 직급 <----> 1. 직급코드

4. 부서코드 2. 직급명

5. 급여

3. 직급에 따른 최대 급여

4. 직급에 따른 최소 급여

 

 

3) 제 3 정규형

제 3 정규형은 테이블의 각 필드가 테이블의 프라이머리키에

단독으로 관계 될때를 말한다.

제 2 정규형과 다른 것은 NON-KEY필드가 다른 NON-KEY필드에

의존하지 않아야 한다는 사실이다.

위에서 사원정보에서 직급에 따른 급여도 여기에 해당된다고 볼수 있다.

즉 직급에 따른 급여의 경우 프라이머리키인 사번에 관계되지 않고

직급코드에 관계되기 때문이다.

즉 사원정도 테이블은 테이블의 중복성을 제거 하면서 동시에

제 3 정규형도 만족하게 된것이다.

 

예를 들어 부서정보에 관한 테이블을 보자

테이블 : 부서정보 필드

1. 부서코드

2. 부서명

3. 부서장 이름

4. 부서장 급여

위의 테이블은 반복필드도 없고,

중복성도 없으므로 분명히 제 2 정규형을 만족한다.

하지만

4. 부서장 급여는 부서장 이름을 가지고 알수 있고

이것은 사원 정보테이블에 있는 내용이므로 제거할수 있다.

그러므로 제 3 정규형을 만족하기 위해서는

 

(제 3 정규형) 테이블 : 부서정보

필드

1. 부서코드

2. 부서명

3. 부서장 사번 <-----> 사원정보테이블의 사번과 연결

 

이제 제 3 정규형을 만족하는 테이블을 설계하는 과정을 보았습니다.

 

 

4) 정규화의 이점

정규화된 데이타베이스는 중복성의 감소로

그렇지 않은 데이타베이스보다 저장장소를 효율적으로 쓸수 있습니다.

또한 무결성은 데이타를 찾기 위한 작업을 효과적으로 할수 있게 합니다.

그리고, 단일 테이블 쿼리 성능을 향상시키기 위해

한 행 이상을 반환하는 테이블의 탐색과 쿼리 속도를 증가시킬수 있습니다.

 

5) 정규화의 단점

일반적으로 정규화된 데이타베이스는

다중 테이블로부터 정보를 얻어 오기 위해 더 많은 조인들이 요구됩니다.

그래서 속도가 더 떨어질수도 있습니다.

 

비정규화

비정규화란 정규화된 논리적 설계를 가지고 퍼포먼스 향상을 위해

의도적으로 정규화의 규칙을 따르지 않는 것을 말합니다.

 

728x90
반응형

댓글