У меня есть модель, в которой он имеет атрибут, называемый типа, который является типом пользователя «ы мешка (замещающих объекты для сохранения конфиденциальности).Как представлять «быть утверждены» элементы в базе
Users
может иметь несколькоBag
с (один ко многим)Bags
только одинType
Type
имеет поляname
иdescription
Bag
«sType
может быть либо:- , выбранный из заданного набора значений; или
- Я поджать их в базе данных
- указанный пользователем
- если
User
заявка будет одобрена, то их обычайType
добавляется к заданному набору.
- если
- , выбранный из заданного набора значений; или
В основном новый Type
'существование ы зависит от User
' статуса утверждения s.
Я хочу спросить, что является идеальным способом представления отношения этих трех объектов.
Вот моя стратегия:
Bag
имеетid
изUser
Bag
имеетid
изType
- заполнить
Type
таблицу с заданными значениями, и вернуться, чтобы посмотреть наUser
к от
приведенный выше набор правил готов к работе, если заданы Type
s.
Задача заключается в том, когда есть , подлежащие утверждению. значения.
Чтобы справиться с новыми Type
с,
- все пользовательские
Type
s все еще будут добавлены кType
таблице Type
таблица будет иметьapproved
иdate_approved
поле- если предопределено, то их значения будут
1
и текущее время загрузки базы данных/по умолчанию соответственно. - если новый, то их значения сначала будут нулевыми, но будут обновляться после того, как
User
, который их указал, одобрен.- Я
select
их отBag
иjoin
сUser
, чтобы получить эти значения
- Я
- если предопределено, то их значения будут
Вот мой пример таблицы:
TABLE user {
id PK,
approved TINYINT,
date_approved DATETIME
}
TABLE bag {
id PK,
id_user FK REFERENCES user(id) NOT NULL,
id_type FK REFERENCES type(id) NOT NULL
}
TABLE type {
id PK,
name NOT NULL,
description NOT NULL,
approved TINYINT NOT NULL,
date_approved DATETIME NOT NULL
}
Является ли мое предлагаемое решение в порядке или вы можете предложить лучший способ справиться с такой бизнес-логикой?