sec 51) 뷰/ 클러스터 (A)
필기 20.9, 20.6
* 뷰(View) - 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블, 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주, 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다. 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제, 뷰를 정의할 땐, CREATE문, 제거할 땐 DROP문을 사용.
필기 20.8
* 뷰(View)의 장,단점
- 장점 - 논리적 데이터 독립성을 제공, 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해줌, 사용자의 데이터 관리를 간단하게 해줌, 접근제어를 통한 자동보안이 제공됨
- 단점 - 독립적인 인덱스를 가질 수 없음, 뷰의 정의를 변경할 수 없음, 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름
* 클리스터(Cluster)
- 클러스터는 데이터 저장시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 클러스터링 된 테이블은 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업성능을 저하시킴
- 클리스터는 데이터의 분포도가 넓을수록 유리
- 데이터 분포도가 넓은 테이블을 클러스터링하면 저장 공간을 절약할 수 있다.
- 처리범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용
* tip)
- 클러스터링은 비슷한 종류끼리 묶어준다는 의미, 테이블에서는 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 방법, 서버에서는 두 대이상의 서버를 하나의 서버처럼 운영하기 위한 방법을 의미
- 분포도, 선택성(Selectivity) - (조건에 맞는 레코드 수/ 전체 릴레이션 레코드 수)*100, 전체 레코드 중 조건에 맞는 레코드의 숫자가 적은 경우 분포도가 좋다고 함, 인덱스는 분포도가 좁은 테이블이 좋고, 클러스터링은 분포도가 넓은 테이블이 유리
- 단일테이블 클러스터링 - 여러 개의 테이블 뿐만 아니라 한 개의 테이블에 대해서도 클러스터링을 수행할 수 있음, 특정 컬럼의 동일한 값을 동일 블록이나 연속된 블록에 저장하므로 데이터 조회 성능이 향상.
sec 52) 파티션(B)
필기 20.9, 20.8, 20.6
* 파티션(Partition)
- DB에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말한다
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워진다.
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행된다.
* 파티션의 장,단점
- 장점
- 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상됨
- 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상됨
- 파티션별로 백업 및 복구를 수행하므로 속도가 빠름
- 시스템 장애 시 데이터 손상 정도를 최소화할 수 있음
- 데이터 가용성이 향상됨
- 파티션 단위로 입,출력을 분산시킬 수 있음
- 단점
- 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구됨
- 테이블간 조인에 대해 비용이 증가함
- 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하됨
필기 20.8
* 파티션의 종류
필기 20.8
- 범위 분할(Range Partitioning) - 지정한 열의 값을 기준으로 분할함 ex) 일별, 월별 등
필기 20.8
- 해시 분할(Hash Partitioning) - 해시 함수를 적용한 결과 값에 따라 데이터를 분할함, 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할 때 유용, 특정 데이터가 어디에 있는지 판단 할 수 없음, 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적임
필기 20.8
- 조합분할(Composite Partitioning) - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식, 범위 분할한 파티션이 너무커서 관리가 어려울 때 유용함
sec 53) 분산 데이터베이스 설계(A)
* 데이터베이스 용량 설계
- 데이터베이스 용량 설계는 데이터가 저장될 공간을 정의하는 것
- 데이터베이스 용량을 설계할 때는 테이블에 저장될 데이터양과 인덱스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야 한다.
>> 데이터베이스 용량 설계의 목적
- 데이터베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높인다.
- 디스크의 특성을 고려해 설계함으로써 디스크의 입,출력 부하를 분산시키고 채널의 병목 현상을 최소화 한다.
* 분산 데이터베이스 설계
- 분산 데이터베이스는 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러개의 사이트(Site)에 분산된 데이터베이스를 말한다.
- 분산 데이터베이스는 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 데이터의 처리가 가능한 해당 지역에서 해결될 수 있도록 한다.
- 분산 데이터베이스 설계는 애플리케이션이나 사용자가 분산되어 저장한 데이터에 접근하게 하는 것을 목적으로 한다.
필기 20.8, 20.6
* 분산데이터베이스의 목표
** 투명성(Transparency) - 어떠한 사실이 존재함에도 마치 투명하여 보이지 않는 것처럼, 사실의 존재 여부를 염두에 두지 않아도 되는 성질을 말함
- 위치 투명성(Location Transparency): 액세스하려는 데이터베이스의 실제 위치를 알 필요없이 단지 데이터베이스의 논리적인 명칭만으로 액세스할 수 있다.
- 중복 투명성(Replication Transparency): 동일 데이터가 여러 곳에 중복되어있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행한다.
- 병행 투명성(Concurrency Transparency) - 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지않는다.
- 장애 투명성(Failure Transparency) - 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리한다.
* 분산 설계방법
- 테이블 위치 분산 - 데이터베이스의 테이블을 각기 다른 서버에 분산시켜 배치하는 방법
- 분할 (Fragmentation)
- 테이블의 데이터를 분할하여 분산시키는 것
- 분할 규칙: 완전성(Completeness), 재구성((Reconstruction), 상호 중첩 배제(Disjointness)
- 주요 분할 방법: - 수평 분할: 특정 속성의 값을 기준으로 행(Row) 단위로 분할,
- 수직 분할: 데이터 칼럼(속성) 단위로 분할
- 할당(Allocation): - 동일한 분할을 여러 개의 서버에 생성하는 분산방법,
- 중복이 없는 할당과 중복이 있는 할당으로 나뉨
sec 54) 데이터베이스 이중화/ 서버 클러스터링(B)
* 데이터베이스 이중화(Database Replication)
- 데이터베이스 이중화는 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 데이터베이스에 문제가 발생하면 복제된 데이터베이스를 이용해 즉시 문제를 해결할 수 있다.
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 데이터베이스 이중화 시스템에 연결된 다른 데이터베이스에도 동일하게 적용됨
- 애플리케이션을 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있다.
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있다.
* 데이터베이스 이중화의 분류
- Eager 기법: 트랜잭션 수행 중 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달하여 변경 내용이 즉시 적용되도록 하는 기법
- Lazy 기법: - 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법
- 데이터베이스마다 새로운 트랜잭션이 수행되는 것으로 간주됨
* 데이터베이스 이중화 구성방법
- 활동-대기(Active-Standby)방법: - 한 DB가 활성 상태로 서비스하고 있으면 다른 DB는 대기하고 있다가 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행함. - 구성 방법과 관리가 쉬워 많은 기업에서 이용됨
- 활동-활동(Active-Active)방법: - 두 개의 DB가 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함.
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 구성 방법 및 설정이 복잡.
* 클러스터링(Clustering)
- 클러스터링은 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 클러스터링은 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공
** 공유스토리지(NAS; Network Attached Storage) - 공유 스토리지는 데이터 저장소를 네트워크로 연결하여 파일 및 데이터를 공유하는 것으로, 다수의 사용자 또는 서버가 데이터를 안전하고 편리하게 공유할 수 있음.
** 고가용성(HA, High Availability) - 고가용성은 시스템을 오랜 시간동안 계속해서 정상적으로 운영이 가능한 성질을 의미
>> 클러스터링 종류:
- 고가용성 클러스터링: -하나의 서버에 장애가 발생하면 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
-일반적으로 언급되는 클러스터링이 고가용성 클러스터링임
- 병렬처리 클러스터링: 전체 처리율을 높이기 위해 하나의 작업을 여러 개의 서버에서 분산하여 처리하는 방식
* RTO/RPO
- RTO(Recovery Time Objective, 목표 복구시간): 비상사태 또는 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간을 의미함
- RPO(Recovery Point Objective, 목표 복구시점): 비상사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점을 의미함
sec 55) 데이터베이스 보안(B)
* 데이터베이스 보안
- 데이터베이스 보안이란 데이터베이스의 일부 또는 전체에 대해서 권한이 없는 사용자가 액세스하는 것을 금지하기 위해 사용되는 기술
- 보안을 위한 데이터 단위는 테이블 전체로부터 특정 테이블의 특정 행과 열에 있는 데이터 값에 이르기까지 다양
* 암호화(Encryption)
- 암호화는 데이터를 보낼 때 송신자가 지정한 수신자 이외에는 그 내용을 알 수 없도록 평문을 암호문으로 변환하는 것
- 암호화(Encryption)과정: 암호화되지 않는 평문을 암호문으로 바꾸는 과정
- 복호화(Decryption)과정: 암호문을 원래의 평문으로 바꾸는 과정
>> 암호화 기법
- 개인키 암호 방식(Private Key Encryption)
- 공개키 암호 방식(Public Key Encryption)
필기 20.9
* 접근통제
- 접근통제는 데이터가 저장도니 객체와 이를 사용하려는 주체 사이의 정보흐름을 제한하는 것
>> 접근통제 3요소: 접근통제 정책, 접근통제 메커니즘, 접근통제 보안모델
>> 접근 통제 기술
필기 20.9
- 임의 접근통제(DAC, Discretionary Access Control)
- 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
- 데이터 소유자가 접근통제 권한을 지정하고 제어함
- 객체를 생성한 사용자가 생성된 객체에 대한 모든 권한을 부여받고, 부여된 권한을 다른 사용자에게 허가할 수도 있음
필기 20.9
- 강제 접근통제(MAC, Mandatory Access Control)
- 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근통제 권한을 지정함
- 데이터베이스 객체별로 보안 등급을 부여할 수 있음
- 사용자별로 인가 등급을 부여할 수 있음
필기 20.9
- 역할기반 접근통제(RBAC, Role Based Access Control)
- 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근통제 권한을 지정함
- 임의 접근통제와 강제 접근통제의 단점을 보완하였음
- 다중 프로그래밍 환경에 최적화된 방식
* 접근통제 정책
- 접근통제 정책은 어떤 주체가 언제, 어디서, 어떤객체에게, 어떤 행위에 대한 허용 여부를 정의하는 것
>> 접근통제 정책의 종류
- 신분 기반 정책
- 주체나 그룹의 신분에 근거하여 객체의 접근을 제한하는 방법으로, IBP와 GBP가 있음
- IBP(Individual-Based Policy): 최소 권한 정책으로, 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP(Group-Based Policy): 복수 주체에 하나의 객체에 대한 허가를 부여함
- 규칙 기반 정책
- 주체가 갖는 권한에 근거하여 객체의 접근을 제한하는 방법으로, MLP와 CBP가 있음
- MLP(Multi-Level Policy): 사용자나 객체별로 지정된 기밀 분류에 따른 정책
- CBP(Compartment-Based Policy): 집단별로 지정된 기밀 허가에 따른 정책
- 역할 기반 정책
- GBP의 변형된 정책으로, 주체의 신분이 아니라 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법
* 접근통제 매커니즘
- 접근통제 매커니즘은 정의도니 접근통제 정책을 구현하는 기술적인 방법이다.
- 접근통제 매커니즘에는 접근통제 목록, 능력리스트, 보안등급, 패스워드, 암호화 등이 있다.
* 접근통제 보안 모델
- 접근통제 보안 모델은 보안 정책을 구현하기 위한 정형화된 모델이다.
>> 접근통제 보안 모델의 종류
- 기밀성 모델
- 무결성 모델
- 접근통제 모델
* 접근통제 조건
- 접근통제 조건은 접근통제 매커니즘의 취약점을 보완하기 위해 접근통제 정책에 부갛여 적용할 수 있는 조건
- 값 종속 통제(Value-Dependent Control): 일반적으로는 객체에 저장된 값에 상관없이 접근통제를 동일하게 허용하지만, 값 종속 통제는 객체에 저장된 값이 따라 다르게 접근통제를 허용해야 하는 경우에 사용한다.
- 다중 사용자 통제(Multi-User Control): 지정된 객체에 다수의 사용자가 동시에 접근을 요구하는 경우에 사용된다.
- 컨텍스트 기반 통제(Context-Based Control): - 특정시간, 네트워크 주소, 접근 경로, 인증수준 등에 근거하여 접근을 제어하는 방법
- 다른 보안 정책과 결합하여 보안 시스템의 취약점을 보완할 때 사용한다.
* 감사 추적
- 감사 추적은 사용자나 애플리케이션이 데이터베이스에 접근해 수행한 모든 활동을 기록하는 기능
- 감사 추적은 오류가 발생한 데이터베이스를 복구하거나 부적절한 데이터 조작을 파악하기 위해 사용됨
sec 56) 데이터베이스 백업(C)
* 데이터베이스 백업
- 데이터베이스 백업은 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 치명적인 데이터 손실을 막기 위해서는 데이터베이스를 정기적으로 백업해야한다.
* 로그파일
- 로그파일은 데이터베이스의 처리 내용이나 이용 사항 등 상태변화를 시간의 흐름에 따라 모두 기록한 파일
- 데이터베이스의 복구를 위해 필요한 가장 기본적인 자료이다.
- 로그 파일을 기반으로 데이터베이스를 과거 상태로 복귀(UNDO)시키거나 현재 상태로(REDO)시켜 데이터베이스 상태를 일관성 있게 유지할 수 있다.
* 데이터베이스 복구 알고리즘
- NO-UNDO/REDO: - 데이터베이스 버퍼의 내용을 비동기적으로 갱신한 경우의 복구 알고리즘
- NO-UNDO: 트랜잭션 완료 전에는 변경 내용이 데이터베이스에 기록되지 않으므로 취소할 필요가 없음
- REDO: 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않았으므로 트랜잭션 내용을 다시 실행해야 함
- UNDO/NO-REDO: - 데이터베이스 버퍼의 내용을 동기적으로 갱신한 경우의 복구 알고리즘
- UNDO: 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO: 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장매체에 기록했으므로 트랜잭션 내용을 다시 실행할 필요가 없음
- UNDO/REDO: - 데이터베이스 버퍼의 내용을 동기/비동기적으로 갱신한 경우의 복구 알고리즘
- 데이터베이스 기록 전에 트랜잭션이 완료될 수 있으므로 완료된 트랜잭션이 데이터베이스에 기록되지 못했다면 다시 실행해야함
- NO-UNDO/NO-REDO: - 데이터베이스 버퍼의 내용을 동기적으로 저장 매체에 기록하지만 데이터베이스와는 다른 영역에 기록한 경우의 복구 알고리즘
- NO-UNDO: 변경 내용은 데이터베이스와 다른영역에 기록되어 있으므로 취소할 필요가 없음
- NO-REDO: 다른 영역에 이미 기록되어 있으므로 트랜잭션을 다시 실행할 필요가 없음
* 백업 종류 - 복구 수준에 따라 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉨.
- 물리 백업: 데이터베이스 파일을 백업하는 방법/백업속도가 빠르고 작업이 단순하지만 문제 발생 시 원인 파악 및 문제 해결이 어려움.
- 논리 백업: DB내의 논리적 객체들을 백업하는 방법/ 복원 시 데이터 손상을 막고 문제 발생 시 원인 파악 및 해결이 수월하지만, 백업/복원 시 시간이 많이 소요됨.
sec 57) 스토리지(B)
* 스토리지(Storage)
- 스토리지는 단일 디스크로 처리할 수 없는 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- 스토리지의 종류에는 DAS, NAS, SAN
* DAS(Direct Attached Storage)
- DAS 는 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 일반 가정에서 컴퓨터에 외장하드를 연결하는 것이 여기에 해당
- 저장장치를 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉽다.
- 초기 구축 비용 및 유지보수 비용이 저렴
- 직접 연결 방식이므로 다른 서버에서 접근할 수 없고 파일 공유할 수 없다.
- 확장성 및 유연성이 떨어짐
* NAS(Network Attached Storage)
- NAS는 서버와 저장장치를 네트워크를 통해 연결하는 방식
- 별도의 파일 관리 기능이 있는 NAS Storage가 내장된 저장장치를 직접관리
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어 파일 공유가 가능
- 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있다.
- DAS에 비해 확장성 및 유연성이 우수
* SAN(Storage Area Network)
- SAN은 DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합한 방식으로, 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용해 네트워크를 구성
- 파이버 채널 스위치는 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠름
- 서버들이 자장장치 및 파일을 공유할 수 있음
- 확장성, 유연성, 가용성이 뛰어남.
sec 58) 논리 데이터 모델의 변환(C)
* 엔티티(Entity)를 테이블로 변환
- 논리 데이터 모델에서 정의된 엔테테를 물리 데이터 모델의 테이블로 변환하는 것
>> 변환규칙(논리적 설계(데이터 모델링)/물리적 설계)
- 엔티티(Entity)/테이블(Table)
- 속성(Attribute)/ 컬럼(Column)
- 주 식별자(Primary Identifier)/ 기본키(Primary Key)
- 외부 식별자(Foreign Identifier)/ 외래키(Foreign Key)
- 관계(Relationship)/ 관계(Relationship)
* 슈퍼타입/서브타입을 테이블로 변환
- 슈퍼타입/서브타입은 논리 데이터 모델에서 이용되는 형태이므로 물리데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야함.
- 슈퍼타입/서브타입 모델을 테이블로 변환하는 방법에는 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블 변환이 있음.
* 슈퍼타입 기준 테이블 변환
- 슈퍼타입 기준의 테이블 변환은 서브타입을 슈퍼타입에 통합하여 하나의 테이블로 만드는 것
- 서브타입에 속성이나 관계가 적을 경우에 적용하는 방법
- 하나로 통합된 테이블에는 서브타입의 모든 속성이 포함되어야 한다.
* 서브타입 기준 테이블 변환
- 서브타입 기준의 테이블 변환은 슈퍼타입 속성들을 각각의 서브타입에 추가해 서브타입들을 개별적인 테이블로 만드는 것
- 서브타입에 속성이나 관계가 많이 포함된 경우 적용.
* 개별타입 기준 테이블 변환
- 개별타입 기준의 테이블 변환은 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환하는 것
- 슈퍼타입과 서브타입 테이블들 사이에는 각각 1:1 관계가 형성됨.
* 속성을 컬럼으로 변환
- 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환
- 일반 속성 변환: 속성과 컬럼은 명칭이 반드시 일치할 필요는 없으나, 개발자와 사용자 간 의사소통을 위해 가능한 한 표준화된 약어를 사용해 일치시키는 것이 좋음
- Primary UID를 기본키로 변환: 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦.
- Primary UID(관계의 UID Bar)를 기본키로 변환: 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦.
- Secondary(Alternate)UID를 유니크키로 변환: 논리 모델링에서 정의된 Secondary UID 및 Alternate Key는 물리 모델에서 유니크키로 만듦.
* 관계를 외래키로 변환
- 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환.
sec 59) 물리 데이터모델 품질 검토(C)
* 물리 데이터 모델 품질 검토
- 물리 데이터 모델의 품질 검토는 물리데이터모델을 설계하고 데이터베이스 객체를 생성한 후 개발 단계로 넘어가기 전에 모델러와 이해관계자들이 모여 수행
- 물리 데이터 모델 품질 검토의 목적은 데이터 베이스의 성능 향상과 오류예방
- 물리 데이터 모델을 검토하려면 모든 이해관계자가 동의하는 검토 기준이 필요
* 물리 데이터 모델 품질 기준
정확성: 데이터 모델이 요구사항이나 업무 규칙, 표기법에 따라 정확하게 표현되었음
완전성: 데이터 모델이 데이터 모델의 구성 요소를 누락 없이 정의하고 요구사항이나 업무 영역을 누락 없이 반영하였음
준거성: 데이터 모델이 데이터 표준, 표준화 규칙, 법적 요건 등을 정확하게 준수하였음
최신성: 데이터 모델이 최근의 이슈나 현행 시스템을 반영하고 있음
일관성: 데이터 모델이 표현상의 일관성을 유지하고 있음
활용성: 작성된 모델과 설명을 사용자가 충분히 이해할 수 있고, 업무 변화에 따른 데이터 구조의 변경이 최소화 될 수 있도록 설계되었음
* 물리 데이터 모델 품질 검토 항목
- 물리 데이터 모델의 품질 검토 항목은 물리 데이터 모델의 특성을 반영한 품질 기준을 작성 후 이를 기반으로 작성
- 물리 데이터 모델에 정의된 테이블, 컬럼, 무결성 제약 조건 등 물리 데이터 모델의 주요 구성 요소와 반정규화, 인덱스, 스토리지 등 물리 데이터 모델의 전반적인 것을 검토 항목으로 작성
sec 60) 자료구조(B)
* 자료구조
- 자료구조는 자료를 기억장치의 공간 내에 저장하는 방법과 자료간의 관계, 처리 방법 등을 연구 분석하는 것을 말함.
- 저장 공간의 효율성과 실행시간의 단축을 위해 사용.
- 자료구조의 분류
>> 선형구조(Linear Structure)
- 배열(Array)
- 선형리스트(Linear List)-연속리스트(Contiguous List)/연결리스트(Linked List)
- 스택(Stack)
- 큐(Queue)
- 데크(Deque)
>> 비선형구조(Non-Linear Structure)
- 트리(Tree)
- 그래프(Graph)
* 배열(Array)
- 배열은 크기와 형(Type)이 동일한 자료들이 순서대로 나열된 자료의 집합
- 반복적인 데이터 처리 작업에 적합한 구조
- 정적인 자료구조로, 기억장소의 추가가 어려움
- 데이터 삭제시 기억장소가 빈 공간으로 남아있어 메모리의 낭비가 발생
* 연속 리스트(Contiguous List)
- 연속 리스트는 배열과 같이 연속되는 기억장소에 저장되는 자료구조
- 중간에 데이터를 삽입하기 위해서는 연속된 빈 공간이 있어야한다.
- 삽입,삭제 시 자료의 이동이 필요
* 연결 리스트(Linked List)
- 연결 리스트는 자료들을 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료 구조이다.
- 연결을 위한 링크(포인터) 부분이 필요하기 때문에 기억 공간의 이용 효율이 좋지 않음.
- 접근 속도가 느리고, 연결이 끊어지면 다름 노드를 찾기 어려움.
* 스택(Stack)
- 스택은 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조.
- 후입선출(LIFO; Last In First Out) 방식으로 자료를 처리함.
- 저장할 기억 공간이 없는 상태에서 데이터가 삽입되면 오버플로(Overflow)가 발생.
- 삭제할 데이터가 없는 상태에서 데이터를 삭제하면 언더플로(Underflow)가 발생
* 큐(Queue)
- 큐는 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지는 자료구조.
- 선입선출(FIFO; First In First Out) 방식으로 처리함.
- 시작을 표시하는 프런트(Front) 포인터와 끝을 표시하는 리어(Rear) 포인터가 있음.
* 그래프(Graph)
- 그래프는 정점(Vertex)와 간선(Edge)의 두 집합으로 이루어진 자료구조.
- 사이클이 없는 그래프(Graph)를 트리(Tree)
- 간선의 방향성 유무에 따라 방향 그래프와 무방향 그래프로 구분됨.
필기 20.9
* 방향/무방향 그래프의 최대 간선수
- 방향 그래프의 최대 간선 수: n(n-1)
- 무방향 그래프에서 최대 간선 수: n(n-1)/2
** n은 정점의 개수