Какая схема базы данных лучше всего подходит для моей навигации? - PullRequest
3 голосов
/ 11 сентября 2008

Я создаю веб-сайт, где все страницы свисают с управляемой базой данных иерархии деревьев.

Все, кроме одного узла, имеют родительский узел. Узлы могут иметь разрешения на чтение на основе ролей. Некоторые узлы могут иметь специальные правила (такие как: не отображать в меню навигации).

Узлы могут представлять ссылки на другие узлы (например, ярлык в Windows). Узлы обычно представляют страницы.

На страницах представлено либо содержимое HTML, либо выполнение программирования . Некоторые страницы могут быть корнями поддеревьев (альтернативные мастер-страницы и таблицы стилей).

Пожалуйста, помогите мне настроить базу данных узлов в Microsoft SQL Server для использования с Linq to SQL.

У меня есть три идеи:

  1. Множество легких столов с почти ноль нулевых полей.

    #1 Many lightweight tables with almost zero nullalbe fields

  2. Таблица тяжеловесных узлов с множеством нулевые поля.

    #2 Heavyweight Node table with lots of nullalbe fields

  3. Лучший (или худший) из обоих: много nullalbe внешние ключи для многих легкие столы.

    #3 Lots of nullalbe foreign keys to many lightweight tables

Что, по вашему мнению, лучше всего представляет данные? Что будет проще всего использовать с Linq to SQL?

Как мне сохранить правила целостности данных в базе данных? Как мне лучше всего применять их в моем программировании?

  • Узлы должны быть либо (но не оба) ссылки или страницы.

  • Страницы должны быть html или кодом (но не оба).

  • Ссылки не могут быть ни корнями, ни HTML, ни кодом.

Могу ли я сделать ASP.NET Site Map Provider с такой структурой? Должен ли я?


Обновление: я задал более общий вопрос:

Как лучше всего обрабатывать отношения один-к-одному в SQL?


Похожие вопросы:
Как применить правила целостности данных в моей базе данных?

Ответы [ 3 ]

3 голосов
/ 11 сентября 2008

Мое первоначальное впечатление после прочтения вашего поста состоит в том, что я бы очень не хотел, чтобы любая одна технология (в данном случае linq) сильно повлияла на дизайн схемы базы данных в той степени, в которой вы, похоже, предлагаете.

Я думаю, что ваша схема должна быть практически одинаковой, независимо от того, какую технологию вы выбрали для построения бизнес-уровней / уровней представления.

Надеюсь, я вас не понял.

2 голосов
/ 11 сентября 2008

Я согласен, что проектирование с учетом Linq - это бас-акваксы. В книге Джо Селко "Деревья и иерархии в SQL для умников" есть много хороших идей для схем, чтобы представить то, что вы пытаетесь сделать. Linq должен быть в состоянии справиться с этим очень хорошо.

0 голосов
/ 27 сентября 2008

Оформить эту статью . В нем рассказывается о хранении древовидных структур в базе данных и дается хороший пример кода для начала работы.

Эта статья не имеет ничего общего с LINQ, просто дает вам отличный способ сохранить древовидную структуру в базе данных.

Надеюсь, это поможет.

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