기본적으로 DB의 공학적 개론이지만 웬지 SQL 쪽에 많이 치우쳐져 있는 것 같다....
Adv of using DBMS Approach
1) Controlled Redundancy (중복을 조절함)
- Redundancy in storing the same data multiple times leads to several problems.
(여러번의 같은 데이터 중복은 몇가지 문제를 갖는다.)
- We should have a database design that stores eah logical data item in only one place in the DB.
▶ Data normalization avoids data redundancy
▶ Denormalization (역정규화)
관리적인 측면과 성능적인 측면을 고려해서 테이블의 설계를 재구성하는 것.
정규화(Normalization) 단계에서 추출되었던 실체가 제거되기도 하고 언급되지 않았떤 실체가 새롭게 추출되기 도 한다.
실세계 => 정규화 => Conceptual DB Modeling => 정규화 혹은 역정규화 => 논리적 DB Modeling
2) Restricting unauthorized access (공인되지 않은 접근 제한)
- Security and authorization subsystem(권한인가 서브시스템)
- File processing system provides password mechanism and very less security which is not sufficient to enforce security policies like DBMS.
3) Providing backup and recovery
- Backup and recovery subsystem of the DBMS is responsible for recovery
4) Representing complex relationshipas among data
- May include numerous varieties of data that are interrelated in many ways
5) Providing storage structures and search techniques for efficient query processing
- Indexs
▶ Index는 RDBMS에서 검색속도를 높이기 위해 사용하는 하나의 기술이다. Index는 색인이므로 해당 테이블의 컬럼을 색인화하여 검색시 테이블의 레코드를 다 찾는게 아니라 색이화 되어있는 Index 파일만 검색하여 검색속도를 빠르게 한다. select 쿼리로 비교 했을때 보통 6.5배 정도가 색인화 했을때 더 빠르다고 한다. 대신 Insert나 Update의 속도 는 조금 느려진다. table만 검색할때와 table과 index를 검색할때를 비교하면 전자가 더 빠르겠지...
▶ 오늘 강의에서는 수정도 용이하다고 들었는데 이게 무슨소린지는 잘 모르겠다. 하지만 시험에 나올 것 같아...
- Buffering and caching
▶ 버퍼링이나 캐싱이 좋은 이유는 속도가 빨라진다. 캐싱은 사용자가 자주 쓰는 파일들 같은 것을 임의의 메모리에 저 장(적재,loader)하여 나중에는 찾을 필요 없이 바로 꺼내 오는것이다. 버퍼링은 DB의 관리자와 사용자의 속도가 다 른것에 대비하는 것이 주 목적이다.
- Query processing and optimization
6) Enforcing intergrity constraints
- Key or uniqueness constraint(유일성)
▶ Every course record must have a unique value for Course_number
- Referential integrity constraint
▶ Every section record must be related to a course record
- Business rules
▶ These Business Rules are important because they define the conditions that the Database must meet.
For example, every Order must be associated with a valid Product.
This prevents invalid Orders being entered into the Database.
These Rules can be understood by both the Users and the Database designer.
When you extend a Database Schema, it is always valuable to keep these Rules up-to-date.
This is not always done meticulously but is necessary where Users will 'sign-off' on their requirements.
7) Providing persistent sotrage for program objects
- Complex object in C++ can be stored permanently in an OO DBMS(Object oriented? 객체지향형 DBMS)
- Impedance mismatch problem
▶ Differences between DB model and programming language model
▶ OO DB systems typically offer data structure compatibility
예를 들어서 보통 DB언어와 프로그래밍 언어는 호환이 잘 안되는데 OO DB와는 호환이 잘된다.
8) Providing multiple user interfaces
- programming language interfaces, query language, forms, GUI, etc
9) Permitting inferencing and actions using rules