Должен ли я разделить таблицу в таблице с самообращающимися ссылками с иерархическими данными, если группы полей являются пустыми на разных уровнях иерархии? - PullRequest
1 голос
/ 17 марта 2012

Работа с SQL Server 2008 R2.

У меня есть таблица иерархических данных с самообращающимися идентификаторами и идентификаторами родителей.В таблице около 50 полей и 50 000 записей.Иерархия опускается примерно до 10 уровней данных.Общими на каждом уровне иерархии являются ID, ParentID, Title (и около 20 других полей).Вот что важно: только на двух уровнях иерархии требуются дополнительные поля.На одном уровне есть около 10 полей nvarchar (4000), уникальных для этого уровня.На другом листе имеется около 15 полей nvarchar (255).

Должна ли я иметь одну таблицу для всех общих полей, например, ID, ParentID, Title и т. Д., А затем вторичные 1-to-1 таблицы для полей, которые относятся только к определенным уровням иерархии?

Ведение легче, если все в одной таблице.Но я не хочу заходить слишком далеко с моей разработкой, если я создаю основную структуру базы данных foobar.

Кевин

1 Ответ

1 голос
/ 17 марта 2012

Это выглядит как Наследование одной таблицы . Это мой личный фаворит для отображения иерархий объектов в модели базы данных, и из того, что вы описываете, должно быть совершенно нормально для вас. Просто убедитесь, что у вас есть столбец дискриминатора, чтобы знать, на каком уровне иерархии вы находитесь (эквивалентно «фактическому типу объекта» для отображения объектов в STI).

...