다음 14가지 기술은 수많은 데이터베이스 분석과 디자인 실습을 통해 많은 사람들에 의해 점차적으로 정리된다. 이러한 경험의 적용에 있어서 독자는 기계적으로 암기하고 암기하는 것이 아니라, 그것을 소화하고 이해하며, 사실에서 진실을 찾고, 유연하게 숙달해야 한다. 그리고 점차적으로 달성하십시오: 응용 프로그램에서 개발하고 개발에 적용하십시오.
1. 원본 문서와 엔터티 간의 관계
일대일, 일대다 또는 다대다 관계일 수 있습니다. 일반적으로 이는 일대일 관계입니다. 즉, 하나의 원본 문서는 하나의 엔터티에만 해당합니다. 특별한 경우에는 일대다 또는 다대일 관계일 수 있습니다. 즉, 하나의 원본 문서가 여러 엔터티에 해당하거나 여러 원본 문서가 하나의 엔터티에 해당할 수 있습니다. 여기서 엔터티는 기본 테이블로 이해될 수 있습니다. 이 대응 관계를 명확히 한 후에는 입력 인터페이스를 설계하는 데 큰 도움이 될 것입니다.
〖예 1〗: 직원 이력서 정보는 인사 정보 시스템의 세 가지 기본 테이블인 직원 기본 정보 테이블, 사회적 관계 테이블, 작업 이력서 테이블에 해당합니다. 이는 "여러 엔터티에 해당하는 하나의 원본 문서"의 전형적인 예입니다.
2. 기본 키와 외래 키
일반적으로 엔터티는 기본 키와 외래 키를 모두 가질 수 없습니다. E-R 다이어그램에서 리프 위치의 엔터티는 기본 키를 정의할 수도 정의하지 않을 수도 있지만(후손이 없기 때문에) 외래 키는 있어야 합니다(부모가 있기 때문에).
기본 키와 외래 키의 디자인은 글로벌 데이터베이스 디자인에서 중요한 역할을 합니다. 글로벌 데이터베이스 설계가 완료된 후 미국의 한 데이터베이스 설계 전문가는 "열쇠는 어디에나 있고, 열쇠 외에는 아무것도 없다"고 말했습니다. 이는 그의 데이터베이스 설계 경험이자 정보에 대한 그의 이해를 반영합니다. 시스템의 핵심(데이터 모델)입니다. 왜냐하면 기본 키는 매우 추상적인 엔터티이고 기본 키와 외래 키의 쌍은 엔터티 간의 연결을 나타냅니다.
3. 기본 테이블의 속성
기본 테이블은 다음과 같은 네 가지 특성을 가지고 있다는 점에서 중간 테이블 및 임시 테이블과 다릅니다.
(1) 원자성 . 기본 테이블의 필드는 분해할 수 없습니다.
(2) 원시성. 기본 테이블의 레코드는 원본 데이터(기본 데이터)의 레코드입니다.
(3) 연역적. 모든 출력 데이터는 기본 테이블과 코드 테이블의 데이터에서 파생될 수 있습니다.
(4) 안정성. 기본 테이블의 구조는 비교적 안정적이며 테이블의 레코드를 장기간 저장해야 합니다.
기본 테이블의 성격을 이해한 후에는 데이터베이스를 설계할 때 기본 테이블과 중간 테이블, 임시 테이블을 구분할 수 있습니다.
4. 정규형 표준
기본 테이블과 해당 필드 간의 관계는 세 번째 정규형을 충족하도록 노력해야 합니다. 그러나 세 번째 패러다임을 만족하는 데이터베이스 설계가 최선의 설계가 아닌 경우가 많습니다. 데이터베이스의 운영 효율성을 향상시키기 위해서는 패러다임 표준을 낮추는 것이 필요한 경우가 많습니다. 즉, 시간과 공간을 교환하는 목적을 달성하기 위해 중복성을 적절하게 늘리는 것입니다.
〖예시 2〗: 표 1과 같이 물품을 보관하기 위한 기본 테이블이 있다. "Amount" 필드가 존재한다는 것은 테이블의 디자인이 제3정규형을 충족하지 않는다는 것을 의미합니다. 왜냐하면 "Amount"는 "Unit Price"에 "Quantity"를 곱하여 얻을 수 있기 때문입니다. 이는 "Amount"가 중복 필드임을 나타냅니다. . 그러나 중복된 필드 "amount"를 추가하면 쿼리 통계 속도가 향상될 수 있습니다. 이는 시간과 공간을 교환하는 방법입니다.
Rose 2002에는 데이터 열과 계산 열이라는 두 가지 유형의 열이 있습니다. "금액"과 같은 열을 "계산 열"이라고 하고, "단가", "수량"과 같은 열을 "데이터 열"이라고 합니다.
표 1 제품 테이블의 테이블 구조
제품명 제품 모델 단가 수량 금액
TV 2,500 40 100,000
5? . 대중적인 방식으로 세 가지 패러다임을 이해하십시오.
세 가지 패러다임을 대중적인 방식으로 이해하는 것은 데이터베이스 설계에 큰 이점이 됩니다.
데이터베이스 설계에 있어서 세 가지 패러다임을 더 잘 적용하기 위해서는 세 가지 패러다임을 대중적으로 이해하는 것이 필요하다(대중적인 이해는 충분한 이해이지 가장 과학적이고 정확한 이해는 아니다):
제1장 정규 형식: 1NF는 속성에 대한 원자 제약 조건으로, 속성이 원자적이어야 하고 분해될 수 없음을 요구합니다.
두 번째 정규 형식: 2NF는 레코드에 고유 식별자가 있어야 한다는 고유 제약 조건입니다. , 엔터티 중복 데이터베이스 설계의 고유성이 이를 수행할 수 있습니다. 그러나 중복성이 없는 데이터베이스는 최고의 데이터베이스가 아닐 수도 있습니다. 때로는 운영 효율성을 높이기 위해 패러다임 표준을 낮추고 중복된 데이터를 적절하게 보관해야 할 수도 있습니다. 구체적인 접근 방식은 개념적 데이터 모델을 설계할 때 세 번째 패러다임을 고수하고, 물리적 데이터 모델을 설계할 때 패러다임 표준을 낮추는 작업을 고려하는 것입니다. 정규형을 낮추는 것은 필드를 추가하고 중복성을 허용하는 것을 의미합니다.
6. 다대다 관계를 식별하고 올바르게 처리하는 데 능숙해야 합니다.
두 엔터티 간에 다대다 관계가 있는 경우 이 관계를 제거해야 합니다. 해결책은 둘 사이에 세 번째 엔터티를 추가하는 것입니다. 이러한 방식으로 원래의 다대다 관계는 이제 두 개의 일대다 관계가 됩니다. 원래 두 엔터티의 속성은 세 엔터티에 합리적으로 할당되어야 합니다. 여기서 세 번째 엔터티는 본질적으로 기본 테이블에 해당하는 더 복잡한 관계입니다. 일반적으로 데이터베이스 디자인 도구는 다대다 관계를 인식할 수 없지만 다대다 관계를 처리할 수 있습니다.
〖예 3〗: '도서관정보시스템'에서는 '책'도 개체이고, '독자'도 개체이다. 이 두 엔터티 간의 관계는 일반적인 다대다 관계입니다. 책은 여러 독자가 서로 다른 시간에 빌릴 수 있고 독자는 여러 권의 책을 빌릴 수 있습니다. 이를 위해 두 엔터티 사이에 세 번째 엔터티를 추가해야 합니다. 이 엔터티의 이름은 "도서 대여 및 반납"입니다. 해당 속성은 대출 및 반납 시간, 대여 및 반납 플래그입니다(0은 도서 대여를 의미함, 1은 도서 반납을 의미함). book), 또한 "Book"과 "Reader"에 연결될 수 있도록 2개의 외래 키("Book"의 기본 키와 "Reader"의 기본 키)가 있어야 합니다.
7. 기본 키 PK 값을 얻는 방법
PK는 프로그래머가 사용하는 테이블 간 연결 도구로 물리적인 의미가 없는 디지털 문자열일 수 있습니다. 프로그램에 의해 자동으로 1씩 추가됩니다. 물리적으로 의미 있는 필드 이름이거나 필드 이름의 조합일 수도 있습니다. 하지만 전자가 후자보다 낫다. PK가 필드 이름의 조합인 경우 필드를 너무 많이 포함하지 않는 것이 좋습니다. 너무 많으면 인덱스가 많은 공간을 차지할 뿐만 아니라 속도도 느려집니다.
8. 데이터 중복성을 올바르게 이해하십시오.
여러 테이블에서 기본 키와 외래 키가 반복적으로 발생하는 것은 데이터 중복성이 아닙니다. 확신하는. 키가 아닌 필드의 반복은 데이터 중복입니다. 그리고 그것은 낮은 수준의 중복, 즉 반복 중복입니다. 높은 수준의 중복성은 필드의 반복 발생이 아니라 파생된 필드 발생입니다.
〖예 4〗: 상품에는 '단가, 수량, 금액'의 세 가지 필드가 있습니다. '금액'은 '단가'에 '수량'을 곱하여 파생됩니다. 높은 수준의 중복성입니다. 중복성의 목적은 처리 속도를 높이는 것입니다. 동일한 데이터가 다른 시간, 위치, 역할에서 여러 번 입력될 수 있기 때문에 낮은 수준의 중복만 데이터 불일치를 증가시킵니다. 따라서 우리는 높은 수준의 중복성(파생 중복성)을 옹호하고 낮은 수준의 중복성(반복적 중복성)에 반대합니다.
9. E-R 다이어그램에는 표준 답이 없습니다.
정보 시스템의 E-R 다이어그램에는 설계 및 작성 방법이 고유하지 않기 때문에 표준 답이 없습니다. 시스템 요구 사항의 비즈니스 범위와 기능적 내용이 충족되면 실현 가능합니다. 그렇지 않으면 E--R 다이어그램을 수정하십시오. 하나의 표준적인 답이 있는 것은 아니지만 마음대로 설계할 수 있다는 뜻은 아니다. 좋은 E-R 다이어그램의 기준은 명확한 구조, 간결한 연관, 적절한 수의 엔터티, 합리적인 속성 분포 및 낮은 수준의 중복이 없음입니다.
10. 뷰 기술은 데이터베이스 설계에 매우 유용합니다
기본 테이블, 코드 테이블, 중간 테이블과 달리 뷰는 데이터베이스의 실제 테이블에 의존하는 가상 테이블입니다. 데이터 소스가 존재합니다. 뷰는 프로그래머가 데이터베이스를 사용할 수 있는 창, 기본 테이블 데이터 합성의 형태, 데이터 처리 방법 및 사용자 데이터를 기밀로 유지하는 수단입니다. 복잡한 처리를 수행하고, 컴퓨팅 속도를 향상시키며, 저장 공간을 절약하려면 뷰 정의 깊이가 일반적으로 3레벨을 초과해서는 안 됩니다. 3계층 뷰가 여전히 충분하지 않다면 뷰에 임시 테이블을 정의하고, 임시 테이블에 뷰를 정의해야 합니다. 이런 식으로 정의를 반복적으로 겹쳐서 보면 뷰의 깊이가 제한되지 않습니다.
국가의 정치, 경제, 기술, 군사 및 안보 이익과 관련된 특정 정보 시스템의 경우 견해의 역할이 더욱 중요합니다. 이러한 시스템의 기본 테이블에 대한 물리적 설계가 완료되면 기본 테이블에 첫 번째 수준 뷰가 즉시 설정됩니다. 이 수준 뷰의 수와 구조는 기본 테이블과 완전히 동일합니다. 또한 모든 프로그래머는 뷰에서만 작업할 수 있도록 규정되어 있습니다. 여러 사람이 공동으로 보유한 '보안키'를 가진 데이터베이스 관리자만이 기본 테이블을 직접 조작할 수 있다. 생각해 보세요. 왜 그럴까요?
11. 중간 테이블, 보고서 및 임시 테이블
중간 테이블은 통계 데이터를 저장하는 테이블이며, 보고서 출력에 사용됩니다. 또는 쿼리 결과를 위해 설계되었으며 때로는 기본 키와 외래 키가 없습니다(데이터 웨어하우스 제외). 임시 테이블은 개인 용도로 임시 레코드를 저장하기 위해 프로그래머가 설계했습니다. 기본 테이블과 중간 테이블은 DBA가 관리하고, 임시 테이블은 프로그래머가 직접 관리한다.
12. 무결성 제약 조건은 세 가지 측면에서 나타납니다.
도메인 무결성: 검사를 사용하여 제약 조건을 구현하고 데이터베이스 설계 도구에서 필드의 값 범위를 정의할 때 검사가 있습니다. 해당 필드의 값을 정의하는 버튼입니다. 참조 무결성: PK, FK 및 테이블 수준 트리거를 사용하여 구현됩니다. 사용자 정의 무결성: 저장 프로시저 및 트리거를 사용하여 구현되는 일부 비즈니스 규칙입니다.
13. 데이터베이스 설계가 패치되는 것을 방지하는 방법은 "세 가지 원칙"입니다.
(1) 데이터베이스의 테이블 수가 적을수록 좋습니다. 테이블의 수가 줄어들어야 시스템의 E-R 다이어그램이 작고 정확하다는 것을 보여줄 수 있으며, 반복적이고 중복되는 개체를 제거하고 객관적 세계에 대한 높은 추상화 수준을 형성하며 체계적인 데이터 통합을 수행하고 패치를 방지합니다. . 디자인;
(2) 테이블의 결합된 기본 키 필드 수가 적을수록 좋습니다. 기본키는 첫째로 기본키 인덱스를 구축하는 역할을 하고, 둘째로 하위 테이블의 외래키 역할을 하기 때문에 결합된 기본키의 필드 수가 줄어들어 실행 시간이 절약될 뿐만 아니라, 인덱스 저장 공간;
(3) 테이블의 필드 수가 적을수록 좋습니다. 필드 수가 줄어든 경우에만 시스템에 데이터 중복이 없고 데이터 중복성이 거의 없음을 의미할 수 있습니다. 더 중요한 것은 독자가 "열을 행으로 변경"하는 방법을 배우도록 권장하여 하위 테이블의 필드가 변경되는 것을 방지한다는 것입니다. 메인 테이블에 많은 빈 필드가 남게 됩니다. 소위 "열 대 행"은 기본 테이블의 내용 중 일부를 꺼내 별도의 하위 테이블을 만드는 것입니다. 이 방법은 매우 간단하지만 일부 사람들은 익숙하지 않아 채택하지 않고 구현하지 않습니다.
데이터베이스 설계의 실제 원칙은 데이터 중복성과 처리 속도 사이의 적절한 균형을 찾는 것입니다. '세 청년 스승'은 총체적인 개념이자 종합적인 견해이며 하나의 원칙은 분리될 수 없습니다. 이 원칙은 절대적인 것이 아니라 상대적인 것입니다. "3개 더" 원칙은 확실히 잘못된 것입니다. 상상해 보십시오. 시스템의 동일한 기능이 다루어지면 100개 개체(*** 1000개 속성)의 E-R 다이어그램이 200개 개체(*** 2000개 속성)의 E-R 다이어그램보다 확실히 더 좋을 것입니다. 훨씬 나아졌습니다.
'Three Less' 원칙을 옹호하는 것은 독자들에게 체계적인 데이터 통합을 위해 데이터베이스 설계 기술을 사용하도록 가르치는 것입니다. 데이터 통합 단계는 파일 시스템을 응용 데이터베이스로, 응용 데이터베이스를 주제 데이터베이스로, 주제 데이터베이스를 글로벌 종합 데이터베이스로 통합하는 것입니다.
통합 수준이 높을수록 데이터 프라이버시가 강화되고 정보 고립이 줄어들어 전체 기업 정보 시스템의 글로벌 E?R 다이어그램에서 엔터티 수, 기본 키 수 및 속성 수가 감소합니다. 덜.
'Three Less' 원칙을 옹호하는 목적은 독자들이 패치 기술을 사용하여 지속적으로 데이터베이스를 추가, 삭제, 수정하여 기업 데이터베이스를 무작위로 설계된 데이터베이스로 '쓰레기 더미'로 만드는 것을 방지하는 것입니다. 테이블 또는 데이터베이스 테이블의 '대형 안뜰'로 인해 결국 데이터베이스에 수많은 기본 테이블, 코드 테이블, 중간 테이블, 임시 테이블이 생겨 기업과 기관의 정보 시스템을 유지 관리할 수 없게 되고 마비되게 되었습니다.
'패치 방식'을 이용한 데이터베이스 설계의 황당한 이론인 '3개 더' 원칙은 누구나 할 수 있다. "3개 적게(Three Less)" 원칙은 더 적지만 더 좋다는 원칙입니다. 이를 위해서는 높은 데이터베이스 설계 기술과 기술이 필요하며 이는 누구도 달성할 수 없습니다. 왜냐하면 이 원칙은 데이터베이스 설계에 "패칭 방법"을 사용하지 않기 위한 이론적 기반이기 때문입니다.
14. 데이터베이스 운영 효율성을 향상시키는 방법
주어진 시스템 하드웨어 및 시스템 소프트웨어 조건에서 데이터베이스 시스템의 운영 효율성을 향상시키는 방법은 다음과 같습니다.
p>
(1) 데이터베이스의 물리적 설계에서는 패러다임을 낮추고, 중복성을 높이고, 트리거를 덜 사용하고, 저장 프로시저를 더 많이 사용합니다.
(2) 계산이 매우 복잡하고 레코드 수가 매우 많은 경우(예: 1천만 개) 파일 시스템에서 C 언어를 사용하여 데이터베이스 외부에서 복잡한 계산을 완료해야 합니다. , 데이터베이스에 추가되고 테이블에 추가됩니다. 통신과금시스템 설계 경험입니다.
(3) 특정 테이블에 너무 많은 레코드(예: 1,000만 개 이상)가 있는 것으로 확인되면 테이블을 수평으로 분할해야 합니다. 수평 분할 방식은 테이블의 기본 키 PK의 특정 값을 경계로 하여 테이블의 레코드를 수평으로 두 개의 테이블로 분할하는 방법이다. 테이블에 너무 많은 필드가 있는 것으로 확인되면(예: 80개 이상) 테이블이 수직으로 분할되고 원본 테이블은 두 개의 테이블로 나뉩니다.
(4) 데이터베이스 관리 시스템 DBMS의 시스템 최적화, 즉 버퍼 수와 같은 다양한 시스템 매개변수를 최적화합니다.
(5) 프로그래밍에 데이터 지향 SQL 언어를 사용할 때 최적화 알고리즘을 채택해 보십시오.
간단히 말하면, 데이터베이스의 운영 효율성을 높이기 위해서는 데이터베이스 시스템 수준 최적화, 데이터베이스 설계 수준 최적화, 프로그램 구현 수준 최적화의 세 가지 수준의 노력이 동시에 이루어져야 한다. .