문제

설계 패턴은 일반적으로 객체 지향 디자인과 관련이 있습니다.
거기 있어요 디자인 패턴 생성 및 프로그래밍을 위해 관계형 데이터베이스?
반드시 많은 문제에는 재사용 가능한 솔루션이 있어야합니다.

예제에는 테이블 디자인 패턴, 저장 절차, 트리거 등이 포함됩니다.

이러한 패턴의 온라인 저장소가 있습니까? martinfowler.com?


패턴이 해결할 수있는 문제의 예 :

  • 계층 적 데이터 저장 (예 : 1 : 1 키 및 차이가있는 유형 대 다중 테이블이있는 단일 테이블 ...)
  • 가변 구조가있는 데이터 저장 (예 : 일반 열 대 XML 대 구시 된 열 ...)
  • 데이터를 탈피율화합니다 (최소한의 영향으로 수행하는 방법 등)
도움이 되었습니까?

해결책

Martin Fowler의 시그니처 시리즈에 불리는 책이 있습니다. 리팩토링 데이터베이스. 이는 리팩토링 데이터베이스를위한 기술 목록을 제공합니다. 데이터베이스 패턴 목록을 너무 많이 들었다고 말할 수 없습니다.

나는 또한 David C. Hay 's를 강력히 추천 할 것입니다 데이터 모델 패턴 그리고 후속 조치 메타 데이터 맵 첫 번째를 기반으로하고 훨씬 더 야심 차고 흥미 롭습니다. 서문만이 깨달았습니다.

또한 사전 처리 된 데이터베이스 모델을 찾을 수있는 좋은 장소는 Len Silverston의 데이터 모델 리소스 북 시리즈입니다. 1 권 보편적으로 적용 가능한 데이터 모델 (직원, 계정, 배송, 구매 등), 2 권 업계 별 데이터 모델 (회계, 건강 관리 등), 3 권 데이터 모델 패턴을 제공합니다.

마지막 으로이 책은 표면적으로 UML과 객체 모델링에 관한 것이지만 Peter Coad는 UML로 색상 모델링 객체/데이터 모델의 4 가지 핵심 원형이 있다는 전제에서 시작하여 시작된 엔티티 모델링의 "아키 타입"기반 프로세스를 제공합니다.

다른 팁

다음은 수백 개의 무료 데이터베이스 스키마를 개발 한 신사에 대한 링크입니다.

http://www.databaseanswers.org/data_models/

아마도 DB를 빨리 구축해야한다면 주어진 스키마의 테이블과 관계 측면에서 시작점을 제공합니다. 이 시작점을 수정해야 할 것입니다. 나는 그것이 매우 유용하다는 것을 알았습니다.

둘째, SQL Server Magazine에는 가끔 "데이터 모델러"라는 열이 있으며, 이는 매우 교육적이며 종종 주어진 시스템에 대한 완전한 스키마를 포함합니다.

디자인 패턴은 사소하게 재사용 가능한 솔루션이 아닙니다.

설계 패턴은 정의상 재사용 가능합니다. 그들은 패턴입니다 다른 좋은 솔루션에서 감지하십시오.

패턴은 사소하게 재사용 할 수 없습니다. 그러나 패턴에 따라 다운 디자인을 구현할 수 있습니다.

관계형 디자인 패턴에는 다음과 같은 것들이 포함됩니다.

  1. 외국 열쇠를 사용한 일대일 관계 (마스터 하류, 부모-자식) 관계.

  2. 브리지 테이블과의 다수의 관계.

  3. FK 열에서 NULLS와 관리하는 일대일 관계 선택.

  4. 스타-스키마 : 차원과 사실, OLAP 디자인.

  5. 완전히 정규화 된 OLTP 설계.

  6. 차원의 여러 인덱스 검색 열.

  7. 하나 이상의 응용 프로그램에서 사용하는 PK, 설명 및 코드 값이 포함 된 "조회 테이블". 코드가있는 이유는 무엇입니까? 나는 모르겠지만, 그들이 사용해야 할 때, 이것은 코드를 관리하는 방법입니다.

  8. 단일 테이블. [어떤 사람들은 이것을 반 패턴이라고 부릅니다. 그것은 패턴이고 때로는 나쁘고 때로는 좋다.] 이것은 두 번째와 세 번째 정상 형태를 위반하는 미리 조정 된 물건이 많은 테이블입니다.

  9. 배열 테이블. 이 테이블은 열에 배열 또는 값 순서를 통해 첫 번째 정규 양식을 위반하는 테이블입니다.

  10. 혼합 사용 데이터베이스. 이것은 거래 처리를 위해 정규화 된 데이터베이스이지만보고 및 분석을위한 많은 추가 색인이 있습니다. 그것은 반란제입니다-이것을하지 마십시오. 사람들은 어쨌든 그렇게하므로 여전히 패턴입니다.

데이터베이스를 디자인하는 대부분의 사람들은 6 명의 "그 중 하나입니다"를 쉽게 덜 낼 수 있습니다. 이들은 정기적으로 사용하는 설계 패턴입니다.

그리고 여기에는 관리 및 운영 패턴이 포함되지 않습니다.

이 블로그를 확인하십시오 - 데이터베이스 프로그래머.

그는 일부를 설명합니다 데이터베이스 패턴.

Joe Celko의 책은 이런 종류의 물건, 특히 "Sml for Smarties"에 탁월합니다. 그는 일반적인 문제에 대한 몇 가지 혁신적인 솔루션을 가지고 있으며, 대부분은 재사용 가능한 설계 패턴입니다.

http://www.celko.com/books.htm

Asktom 아마도 Oracle DBS의 모범 사례에서 가장 유용한 단일 리소스 일 것입니다. (나는 보통 특정 주제에 대한 Google 쿼리의 첫 번째 단어로 "asktom"을 입력합니다)

관계형 데이터베이스가있는 디자인 패턴에 대해 말하는 것이 실제로 적절하다고 생각하지 않습니다. 관계형 데이터베이스는 이미 "디자인 패턴"을 문제에 적용한 것입니다 (문제는 "무결성을 유지하면서 데이터를 표현, 저장 및 작업하는 방법"및 디자인은 관계형 모델입니다). 다른 접근법 (일반적으로 쓸모없는 것으로 간주)은 항해 및 계층 적 모델입니다 (그리고 나는 많은 다른 사람들이 존재합니다).

그러나 "데이터웨어 하우징"을 다소 분리 된 "패턴"으로 간주하거나 데이터베이스 설계에서 접근 할 수 있습니다. 특히, 당신은 스타 스키마.

수년간의 데이터베이스 개발 후에는 아무도없고 시작하기 전에 대답해야 할 질문이 없다고 말할 수 있습니다.

질문:

  • 미래에 또 다른 DBM을 사용하고 싶습니까? 그렇다면 현재 DBMS의 특수 SQL에 사용하지 않습니다. 응용 프로그램에서 논리를 제거하십시오.

사용하지 않습니다 :

  • 테이블 이름과 열 이름의 흰색 공간
  • 테이블 및 열 이름의 비 ASCII 문자
  • 특정 소문자 또는 대문자에 바인딩. 소문자 및 대문자 와만 다른 2 개의 테이블이나 열을 사용하지 마십시오.
  • "From", "Ttery", "Delete"등과 같은 테이블 또는 열 이름에 SQL 키워드를 사용하지 않습니다.

추천 :

  • 유니 코드 지원을 위해 NVarchar 또는 등가물을 사용하면 코드 페지에 아무런 문제가 없습니다.
  • 모든 열에 고유 한 이름을주십시오. 이로 인해 열을 선택하려면 조인이 쉬워집니다. 모든 테이블에 열 "ID"또는 "이름"또는 "설명"이 있으면 매우 어렵습니다. xyzid와 abcid를 사용하십시오.
  • 복잡한 SQL 표현식에 자원 번들 또는 동등한 것을 사용하십시오. 다른 DBM으로 전환하는 것이 쉽습니다.
  • 데이터 유형에서는 단단하지 않습니다. 다른 DBMS에는이 데이터 유형이 없을 수 있습니다. 예를 들어 Oracle Daes에는 숫자 만 없습니다.

나는 이것이 좋은 출발점이되기를 바랍니다.

당신의 질문은 약간 모호하지만 UPSERT 디자인 패턴으로 간주 될 수 있습니다. 구현하지 않는 언어의 경우 MERGE, 문제를 해결하기위한 여러 가지 대안 (적절한 행이 존재하는 경우 UPDATE; 또 다른 INSERT) 존재하다.

패턴이 의미하는 바에 따라 다릅니다. 사람/회사/트랜잭션/제품 등을 생각하고 있다면 예, 이미 사용할 수있는 일반적인 데이터베이스 스키마가 많이 있습니다.

공장을 생각하고 있다면 싱글 톤 ... 아니요 - DB 프로그래밍에 비해 너무 낮기 때문에이 중 어느 것도 필요하지 않습니다.

데이터베이스 객체 이름 이름 지정을 생각하고 있다면 설계 자체가 아닌 규칙 범주 아래에 있습니다.

BTW, S.Lott, 일대일 및 다수의 관계는 "패턴"이 아닙니다. 그들은 관계형 모델의 기본 빌딩 블록입니다.

이 책은 흥미로워 보입니다

Title: Data Patterns
By: Microsoft Corporation
Publisher: Microsoft Press
Pub. Date: December 21, 2004
Print ISBN-13: 978-0-7356-2200-5
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top