Идеи о нормализации данных - PullRequest
0 голосов
/ 05 июля 2010

Я разрабатываю приложение для управления работой.Работу можно разбить на (технически) бесконечные уровни с помощью WBS (Структура разбивки работ).

При определении номеров заданий / заданий для каждого уровня, каков наилучший способ нормализации задания / заданияданные (т. е. номер задания)?

Например, у меня есть 5 справочных полей для определения задач / заданий.Первые три поля идентифицируют задание на уровне 1. В четвертом поле добавляется идентификатор для задания на уровне 2. Очевидно, что число полей ссылки скоро закончится, или мне придется добавить безумно большое количество ссылок.поля для обработки различных уровней WBS.

Любые предложения?

Кстати, я использую MS-SQL Server, но концепция должна быть применима к любому БД.

Спасибо, Джон


подробнее

Я использую родительского ребенка для уровня WBS;однако каждый уровень имеет отдельный номер задания, который состоит из номера задания с предыдущего уровня + идентификатор задания на этом уровне.

Пример:

Level 1 XXXX-99-1234

Level 2 XXXX-99-1234-A

Где каждая часть вНомер задания - это конкретный столбец из таблицы WBS.

Table:

(

     WBSID INT,
     WBSParentID INT,
     WBSLevelID INT, 
     WBSReference1 VARCHAR (XXXX from above)
     WBSReference2 VARCHAR (99 from above)
     WBSReference3 VARCHAR (1234 from above)
     WBSReference4 VARCHAR (A from above)
....

)

Очевидно, я не хочу продолжать добавлять дополнительные поля WBSReferenceX для обработки всех возможных WBSLevels.

Конкатенация значенийв одно поле это не вариант, так как мы должны поддерживать различные идентификаторы для каждого уровня.

1 Ответ

0 голосов
/ 05 июля 2010

Я не уверен, что понимаю ваш вопрос, но похоже, что вы хотите сохранить древовидную структуру в реляционной базе данных .Это можно сделать с помощью столбца parent (или child ), который указывает положение текущей записи в дереве.

...