2008-11-27 4 views
7

SQL에서 다양한 종류의 그래프 (DAG)를 모델화하는 방법에 대한 예제를 온라인으로 제공하는 기사가 몇 개 있었지만 모델링 대상의 상대적 단순성을 감안할 때 모두 매우 복잡해 보였습니다.베이지안 네트워크 또는 더 일반적으로 지시 가중 그래프를 SQL로 모델링하는 방법은 무엇입니까?

최고/표준 방법이 있습니까? 현재의 생각은 다음과 같습니다.

create table node (
    id int not null auto_increment, 
    name TEXT 
) 

create table edge (
    from_node int not null, 
    to_node int not null, 
    weight float 
) 

잘못된 점이 있습니까? 누구든지 더 나은 (더 견고한, 아마) 방법을 알고 있습니까?

답변

8

이것은 상당히 합리적인 접근 방법입니다. Oracle이나 SQL Server와 같은 일부 시스템에는 재귀 쿼리 기능이 있지만 SQL은 실제로 재귀 구조를 제대로 수행하지 않습니다.

특정 검색 유형에 대해 더 잘 작동하는 구조를 발견 할 수도 있지만 일반적인 경우에는 훨씬 나은 구조를 찾을 수있을 것 같지 않습니다. 이러한 방식으로 응용 프로그램의 요구 사항이 제한되면 이러한 최적화로 인해 이익을 얻을 수 있습니다.

베이지안 네트워크가 Directed Acyclic Graph (DAG)이므로 순전히 재귀적인 부모 - 자식 관계만으로는 네트워크를 모델링하기에 충분하지 않습니다 (즉 노드가 둘 이상의 부모를 가질 수 있음). 따라서 M : M 관계 유형 당신이 설명 했어야 할 것이 필요할 것입니다.

'SQL for Smarties'서적 Joe Celko은 SQL에서 계층 구조 및 그래프 구조를 구현하고 쿼리하는 기술에 대한 개요를 제공합니다. 이것들은 제가 아는 주제에 관한 최고의 자료입니다. 적극 권장합니다.

관련 문제