Представление деревьев в SQL Server? - PullRequest
1 голос
/ 29 февраля 2012

Я хочу создать систему категорий и подкатегорий для моего сайта. Взяв в качестве примера систему тегов StackOverflow, я хочу представить иерархию, например:

ProgrammingConcepts
    Functions
    FlowControl
        Branching
        Looping
    Datastructures
        List
        Tree

Пользователи должны иметь возможность искать это дерево, чтобы пользователь мог искать FlowControl и получать любые статьи, помеченные как FlowControl, Branching или Looping.

Как мне представить это в моей базе данных? Очевидное решение - иметь такую ​​таблицу:

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

Я чувствую, что это может быть трудно для запроса, хотя. Я только начинаю изучать asp.net mvc - в частности, система Entity Framework, кажется, работает намного лучше, чем я работал с базой данных. Это хорошо играет с древовидной структурой?

1 Ответ

2 голосов
/ 29 февраля 2012

С точки зрения дизайна БД, этот вид дизайна наиболее совместим с базами данных - просто вставьте ограничение FK в столбце ParentId для ссылки на CategoryId.

В мире только для SQL Server, начиная с SQL Server 2008, существует тип данных ierarchyid , специально предназначенный для облегчения хранения иерархических данных.

Я не уверен, еслиэто все еще так, но я считаю, что иерархия не поддерживается Entity Framework, хотя, возможно, потребуется обходной путь для перехода по этому пути.например, HierarchyID в Entity Framework не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...