** 뷰설계
뷰란 데이터베이스 사용자들이 접근하도록 테이블을 이용하여 가상(Virtual) 테이블을 구성하는 데이터베이스 오브젝트로, 별도의 저장 공간은 없습니다. 뷰는 실제 데이터값이 저장되지는 않지만, 실제 테이블에 대한 창이므로 뷰를 통해 테이블에 원하는 작업(CRUD)을 할 수 있습니다.
1) 뷰의 특징.
- 복잡한 테이블 구조를 단순화 함.
- 다양한 관점에서 데이터를 제시함.
- 데이터의 보안을 유지
- 논리적인 데이터 독립성을 제공함.
2) 테이블의 구조를 단순화
- 여러개의 테이블에 대한 동일한 SQL 문장이 반복적으로 조인되는 경우에는 뷰 구성의 대상이 됩니다.
3) 다양한 관점에서 데이터를 제시
- 하나의 테이블도 데이터베이스를 이용하는 사람에 따라서 여러 가지 관점으로 데이터를 이용하는 경우가 있습니다. 그러나 하나의 테이블은 여러 사람에게 특정 컬럼이나 조건에 따라 선별적으로 정보를 제공할 수 없고, 일괄적으로 제공하거나 아니면 하지 말아야 합니다. 뷰는 이러한 제약 사항을 극복하게 할 뿐만 아니라 필요 없는 데이터를 다른 사용자에게 부여주지 않는 효과가 있습니다.
4) 데이터의 보안을 유지
- 뷰는 동일한 테이블의 특정 컬럼에 대해서도 보안을 유지할 수 있고, 특정 조건에 대해서도 보안을 유지할 수 있습니다. 하나의 시스템으로 구성하는 내부 시스템은 테이블 단위로 보안을 유지할 이유는 없으나 타 시스템과 연계될 경우에는 반드시 보안 대책을 강구해야 합니다.
5) 논리적인 데이터의 독립성을 제공
- 논리적인 데이터의 독립성이란 데이터베이스에서 테이블 구조가 바뀌어도 뷰가 영향을 받지 않는다는 것을 의미합니다.
* 뷰정의
1) 뷰의 대상이 되는 테이블을 선정
2) 뷰의 대상이 되는 컬럼을 선정
3) 뷰 정의서를 작성
** 인덱스 설계
인덱스(index)란 테이블의 로우를 식별할 수 있도록 컬럽값과 그 값을 포함하는 로우의 논리적인 주소를 별도의 저장 구조를 만들어 저장하는 것입니다. 인덱스를 이용하여 테이블에 존재하는 데이터 검색 속도를 빠르게 합니다.
데이터 모델링에서 각 엔티티를 식별하기 위해 주식별자를 부여하였습니다. 이 주식별자는 엔티티타입이 테이블로 전환되면서 PK로 전환되었습니다. PK는 기본적으로 유니크 인덱스를 생성하여 각 로우에 접근할 때 속도를 빠르게 합니다.
* 인덱스 대상 선정
1) 대상 테이블 선정
- 테이블이 다른 테이블에 의해 참조되는 관계거나 조인에 의해 처리되어야 하는 경우는 인덱스를 생성해 주어야 합니다.
작은 테이블이라 할지라도 PK는 기본적으로 인덱스를 생성하고 FK에 대해서도 참조 유형에 따라 인덱스를 지정해야 합니다.
다만, 일반 컬럼에 대해서는 데이터가 다른 테이블과 조인이 걸리거나 참조 무결성이 걸리지 않으므로 인덱스를 사용하지 않도록 합니다.
2) PK 컬럼 인덱스
- PK 컬럼은 반드시 인덱스를 사용하도록 설계합니다.
3) FK 컬럼 인덱스
- FK 컬럼에 인덱스가 걸려 있지 않으면 FK 제약 때문에 작업을 진행할 때 풀 테이블 스캔(Full Table Scan)이 발생됩니다. 또한 테이블의 데이터 입력, 수정, 삭제가 발생할 때 테이블 블록(Block)을 유발하므로 반드시 인덱스를 걸어주도록 합니다.
4) 인덱스 대상 컬럼 선정
* 인덱스 최적화
1) 인덱스 효율 검토
2) 인덱스 데이터 타입 적용
3) 인덱스 정렬
4) 클러스터링 검토
5) 인덱스 정의서 작성
데이터를 입력하는 insert문 (0) | 2022.03.26 |
---|---|
mysqli_connect(): (HY000/1130) 1130 에러 해결방법 (0) | 2022.03.22 |
데이터베이스 모델링(무결성, 트랜잭션) (0) | 2020.05.19 |
데이터베이스모델링(반정규화 절차 2) (0) | 2020.05.10 |
데이터베이스모델링(반정규화 절차 1) (0) | 2020.05.08 |
댓글 영역