2012-02-29 2 views
1

내 웹 사이트의 카테고리 및 하위 카테고리 시스템을 만들고 싶습니다. 예제로 StackOverflow의 태그 시스템을 가지고 가서, 내가 좋아하는 계층 구조를 표현하려는 :SQL Server에서 트리를 나타 냅니까?

ProgrammingConcepts 
    Functions 
    FlowControl 
     Branching 
     Looping 
    Datastructures 
     List 
     Tree 

사용자는이 트리를 검색 할 수 있도록 사용자가 FlowControl를 검색 할 수 및 기사로 태그받을 수 있어야한다 FlowControl, Branching 또는 Looping.

데이터베이스에서 어떻게 표시해야합니까? 확실한 해결책은 다음과 같은 표를 사용하는 것입니다.

Categories 
    CategoryId int <PK> 
    ParentId int <Nullable> 
    CategoryName 

나는 이것이 쿼리하는 것이 어려울 수도 있다고 생각합니다. 난 그냥 asp.net mvc 배우기 시작했습니다 - 특히 엔티티 프레임 워크 시스템이 이전에 데이터베이스로 작업 한 것보다 훨씬 잘 작동하는 것 같습니다. 나무 구조와 잘 어울리는가?

+0

그렇게 할 것입니다. Common Table Expressions를 사용하면 재귀 쿼리를 수행하여 트리를 탐색 할 수 있습니다. – HABO

답변

2

db 디자인 관점에서 볼 때, 이러한 종류의 디자인은 데이터베이스 간 호환성이 가장 뛰어납니다. CategoryId를 참조하기 위해 ParentId 열에 FK 제약 조건을 적용하면됩니다.

SQL Server 전용 세계에서는 SQL Server 2008에서 계층 적 데이터의 저장을 용이하게하기 위해 hierarchyid 데이터 형식이 있습니다.

그래도 여전히 확실하지 않지만 hierarchyid가 Entity Framework에서 지원되지 않는다고 생각합니다. 그래도 해당 경로를 따라 잡으려면 해결 방법이 필요할 수 있습니다. 예 : HierarchyID in Entity Framework not working

+2

HierarcyID는 EF 5 및 .net 프레임 워크 4.5까지 공식적으로 지원되지 않습니다. 하지만, EF 4에서 heierarcyID를 사용했습니다. http://stackoverflow.com/questions/3347860/is-there-a-practical-way-to-use-the-hierarchyid-datatype-in-entity-framework-4 – EBarr

+0

을 참조하십시오. @ 에바 - 정보 주셔서 감사합니다! – AdaTheDev

관련 문제