Изменения

Перейти к: навигация, поиск

BugzillaORM

233 байта добавлено, 22:42, 5 марта 2012
м
Нет описания правки
</graph>
Причём, понятное дело, если баг принадлежит к некоторому продукту (через компонент), то и его версия, milestone, agreement должны принадлежать к тому же продукту. Сейчас в Bugzilla это реализуется так - так — для каждой сущности, связанной с багом, в баге есть "поле"«поле», а для ограничения значений полей поля делаются "зависимыми" «зависимыми» от других полей. Из-за этого там куча костылей и, по сути, повесить зависимость на отличное от поля "продукт" «продукт» поле невозможно.
<div style="border: 3px solid red; padding: 8px">А подумав и посмотрев на красивую картинку выше, мы приходим к другой идее - идее — '''есть сущности, связи между ними и идея непротиворечивого состояния'''.< Правда, на это ещё навёрнуты права (в Bugzilla рулятся на уровне продукта) и скрытие/div>показ полей бага в зависимости друг от друга.
У сущностей есть:
* ID — первичный ключ
* атрибуты
* <s>ссылка на контролирующее поле и значения <br /> значения — то есть если другая сущность ссылается на эту, другим полем она должна ссылаться и на контролирующую</s>
* способ преобразования в строку
* ''Возможно, права доступа к сущности — привязка действий над сущностью (просмотр, правка, возможно, другие) к группам пользователей. Возможно, не нужно это сюда пихать.''
* Копируется ли значение атрибута при клонировании сущности
* Показывается ли атрибут в форме создания сущности
* <s>Ссылка на контролирующий атрибут той же сущности, что и этот, и на его значения</s>*: <s>Если выбрано, означает, что атрибут показывается, только если другой атрибут той же сущности, которой принадлежит этот, имеет одно из заданных значений</s>
Важно, что В данный момент зависимые сущности в Bugzilla хранятся в денормализованном виде, то есть если мы хотим видеть поля «продукт» и «компонент» у бага, а выбранный «компонент» однозначно определяет «продукт», то всё равно хранятся и являются атрибутами бага они оба.
Типы атрибутов:

Навигация