설명하는 패턴을 종종 " 부품 폭발 "또는 " BOM " 이라고합니다 . 그것은의 일부 그래프 및 트리 데이터 구조의 연구 부. 솔루션의 본질은 주어진 "제품"이 다른 "제품"으로 구성 될 수 있다는 것을 인식하는 것입니다. 디자인은 다음이 네트워크 구조 Product
각 제품에 대한 행이 테이블 -이 다른 제품들로 구성 여부, 그리고 여부를 한 후 Product Component
다른 제품으로 구성되는 각 제품에 대한 행이 테이블 해당 제품의 구성 요소 인 각 해당 제품. 귀하의 경우, 각 제품에는 가격이 있습니다. 그래서 당신은 이와 같은 것을 가질 것입니다
Product
-----------------------------------
|Name |Price |
-----------------------------------
|Orange |1 |
|Apple |1.20 |
|Fruit Package |3.80 |
-----------------------------------
Product Component
----------------------------------------------------------
|Product |Contains |Quantity|
----------------------------------------------------------
|Fruit Package |Orange |2 |
|Fruit Package |Apple |2 |
----------------------------------------------------------
이 디자인은 재귀 적 연관성이있는 단일 테이블보다 선호됩니다. 실제로 노드와 링크라는 두 가지 엔티티 유형을 명확하게 구분합니다. 이 경우 제품은 노드이고 제품 구성 요소는 링크입니다.
네트워크 설계는 일반적인 구조이지만 완전히 채워 졌을 때 다양한 깊이의 재귀 구조 인 것처럼 쿼리하면 문제가됩니다. Oracle 및 SQL Server와 같은 산업 수준의 DBMS에는 쿼리를 선언하는 데 도움이되는 특수 언어 요소 (Oracle의 CONNECT BY 및 SQL Server의 재귀 CTE)가 있습니다. 내가 거의 알지 못하는 File Maker Pro를 사용한다고 가정하면 그러한 언어 구조가 없을 수도 있고 네트워크를 통과하기 위해 프로 시저 코드를 작성해야 할 수도 있습니다. 그러나 네트워크의 깊이가 고정되어있는 경우이 문제를 완화 할 수 있습니다. 즉, 모든 제품에 구성 요소가 없거나 한 수준의 구성 요소가있는 것처럼 말입니다. 다음은 데이터베이스 디자인의 네트워크 구조와 관련된 참조입니다.
- 데이터베이스 관리에 실질적인 문제 - 파비안 파스칼 . 7 장은 내가 찾은 최고의 가장 이해하기 쉬운 설명을 제공합니다.
- Joe Celko의 SQL for Smarties, 2 판의 트리 및 계층 구조 . 이것은 SQL 표준과 관련된 주제에 대한 전체 책입니다.
- 기업 모델 패턴 - 데이비드 헤이 . 모든 조직에 공통적 인 패턴에 대한 책 (불행히도 ER 다이어그램은 UML로 제공되지만 극복 할 수 있음)에는 네트워크 구조에 대한 몇 가지 예가 있습니다.