Хранение иерархических данных в базе данных

Мне нужно сохранить иерархические данные, полученные из файла XML, в реляционную базу данных (SQL Server). Данные имеют следующую структуру в XML:

Пункт

  • ItemId (уникальный идентификатор)

  • Название предмета

  • Другие поля, описывающие элемент

Отношения с товаром

  • ParentItemId

  • ChildItemId

  • RelationshipType (информация о домене, которая описывает отношения)

  • Другие поля, специфичные для домена, которые описывают взаимосвязь

Я хочу сохранить эти данные в БД, чтобы он был быстрым и простым в запросе. Поскольку обновления отношений не будут происходить часто, я не слишком обеспокоен обновлением/вставкой/удалением производительности.

Я рассмотрел иерархический подход. Однако есть дополнительные поля, связанные с отношениями, помимо родительского и дочернего id (т.е. RelatiopnshipType и некоторых других), поэтому это не представляется возможным.

Как насчет наличия двух таблиц с именами Items и ItemRelationships?

  • Таблица Items содержит столбцы ItemId (первичный ключ) и ItemName.

  • Элементы ItemRelationships имеют столбцы ParentItemId, ChildItemId, RelationshipType.

ParentItemId и ChildItemId являются внешними ключами столбца Items.ItemId. Является ли это эффективной структурой для запросов? Не забывайте, что ParentItemId может иметь несколько дочерних элементов. Глубина иерархии может быть более 10 уровней. Я также смущен относительно того, называется ли этот подход списком смежности или таблицей моста или другим термином?

0
01 марта '15 в 12:53
источник поделиться

На данный вопрос пока никто не ответил

Посмотрите другие вопросы по меткам или Задайте вопрос