【发布时间】:2017-01-15 08:18:55
【问题描述】:
我有一个模型,它有一个名为 type 的属性,它是 user 的 bag 的一种类型(用实体代替机密性) )。
-
Users可以有多个Bags(一对多) -
Bags只有一个Type -
Type具有字段name和description -
Bag的Type可以是:- 从一组预先确定的值中选择;要么
- 我会将这些预加载到数据库中
- 由用户指定
- 如果
User申请获得批准,则其自定义Type将添加到预定集合中。
- 如果
- 从一组预先确定的值中选择;要么
基本上,新的Type 的存在取决于User 的批准状态。
我想问什么是表示这三个对象关系的理想方式。
这是我的策略:
-
Bag具有id的User -
Bag具有Type的id - 用预先确定的值填充
Type表,然后返回查看User以供选择
如果Types 已预先确定,则上述规则集已准备就绪。
挑战在于何时有需要批准值。
要处理新的Types,
- 所有自定义
Types 仍将添加到Type表中 -
Type表将有approved和date_approved字段- 如果预先确定,那么它们的值将分别为
1和当前数据库上传/默认时间。 - 如果是新的,那么它们的值一开始将为空,但一旦指定它们的
User被批准,它们就会更新。- 我将从
Bag和join与User中select获取这些值
- 我将从
- 如果预先确定,那么它们的值将分别为
这是我的示例表:
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
}
我提出的解决方案可以吗,或者您能建议一种更好的方法来处理这种业务逻辑吗?
【问题讨论】:
标签: php database database-design normalization database-normalization