Рекомендации по использованию (или не использованию) XML в иерархической объектной модели - PullRequest
0 голосов
/ 07 июля 2010

Я разрабатываю иерархическую объектную модель, которая ссылается на себя как отношение 0/1 -> *. Объект без parentID является корневым элементом. ParentID также является внешним ключом при самостоятельном присоединении. Насколько я понимаю, использование parentID в качестве внешнего ключа будет указывать только на столбец, в котором могут быть найдены дочерние элементы -> вызывает ли это итерацию по всему набору данных для этого столбца? Это сценарий, где кластерный индекс должен быть сформирован? .... было бы правильно использовать тип данных XML для хранения всех дочерних идентификаторов в одном поле, а затем загрузить и ссылаться на этот документ для каждого объекта? Похоже, что это позволило бы мне, по крайней мере, упростить слой персистентности объектов и дать мне больше контроля над записями транзакций.

Любой совет?

1 Ответ

1 голос
/ 07 июля 2010

Я бы настоятельно рекомендовал не использовать XML для хранения дочерних идентификаторов.Это приведет к бесчисленным головным болям, пытающимся поддерживать его в будущем, не говоря уже о попытке использовать его вне вашего приложения (например, из решения для создания отчетов или для ETL).тип?Это в SQL 2008 и может быть полезно для вас здесь.Я не знаю, какую поддержку поддерживают различные языки программирования / ODBC / OLE DB, но вы можете преобразовать ее в строку с помощью .ToString (), и этим можно довольно легко манипулировать.Затем он также позволяет вам использовать другие методы HIERARCHYID в T-SQL, такие как .GetAncestor () и т. Д.

...