数据库设计问题,求教.

ChrisAK 2011-06-03 10:55:59
关于状态字段的设计.

一个流程的记录.整个流程分为A 和B 两个阶段.
所以我在记录中添加了一个名为state的int字段.
以及两个状态A和B

现在由于客户中可能会有vip,所以我想添加一个vipa和vipb状态
以示流程的处理区别.

也有另一个解决方法是添加一个vip字段来表明流程中涉及的客户
是否是vip(客户信息表不在我这儿所以不可能由客户信息记录去区分)


就我个人来说...
比较倾向于第一种.虽然有违反1NF之嫌,但适应性较广.
因为流程的变动很多.以后即使有其它新状态要添加也不需修改数据库
结构

第二种亦有其合理性,但一旦以后有新流程需要新标识我又要修改数据
库建模和数据库结构?然后rebuild之前的流程?(处理流程需要有可替换
性,有新流程不代表旧流程不用.)

当然扩展表亦是一个办法.但这样的话除非rebuild否则新流程规则没法
用老的orm模型访问新表.

大家平常处理类似问题都是怎么解决的呢?
...全文
114 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
drysea 2011-06-03
  • 打赏
  • 举报
回复
我感觉第二种比较好,不过可以稍微改一下
把vip字段变成用户类型标注字段,比如:普通为0,vip为1等等,这样相应的状态位也被标注出来了
这样以后还有别的类型的用户,也可以区分,也不用改表结构
ChrisAK 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 flyerwing 的回复:]

引用 8 楼 chrisak 的回复:
引用 4 楼 flyerwing 的回复:

搞个新表对应客户的VIP身份TB_VIP;
要不整个VIPstate表示是否是VIP
都成,实际应用别NF式了
客户信息我没法对应建立VIP,因为客户信息不存储在我的
数据库里.我是做成库给第三方调用的.第三方的客户信息库不对我公
开.只是会在调用传入客户信息的时候加上一个标记表明这是vip
……
[/Quote]客户的唯一标示虽然有但不能用.
因为客户是否走vip流程是一个综合对方多个条件的判断过程.
也就是说今天走了vip流程可能明天就不走了.
我这里只做流程的记录.所以即使是建立TB_VIP.
也只能关联到流程记录.
Vreey 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 flyerwing 的回复:]
引用 8 楼 chrisak 的回复:
引用 4 楼 flyerwing 的回复:

搞个新表对应客户的VIP身份TB_VIP;
要不整个VIPstate表示是否是VIP
都成,实际应用别NF式了
客户信息我没法对应建立VIP,因为客户信息不存储在我的
数据库里.我是做成库给第三方调用的.第三方的客户信息库不对我公
开.只是会在调用传入客户信息的时候加上一个标记表明这是vip

……
[/Quote]

+++
flyerwing 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chrisak 的回复:]
引用 4 楼 flyerwing 的回复:

搞个新表对应客户的VIP身份TB_VIP;
要不整个VIPstate表示是否是VIP
都成,实际应用别NF式了
客户信息我没法对应建立VIP,因为客户信息不存储在我的
数据库里.我是做成库给第三方调用的.第三方的客户信息库不对我公
开.只是会在调用传入客户信息的时候加上一个标记表明这是vip
[/Quote]
如果可以获取客户的唯一表示就可以如果不行,
那还是第二种吧,
ChrisAK 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gjw_8888 的回复:]

加状态值对以前的流程没影响吗?
感觉新增一列比较好控制
[/Quote]状态对应的数值有文档.
新流程添加状态值要查看文档避免冲突.
而且旧有流程可以保证不会用到新状态.
所以只要流程编写人员注意不会有影响.
ChrisAK 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 flyerwing 的回复:]

搞个新表对应客户的VIP身份TB_VIP;
要不整个VIPstate表示是否是VIP
都成,实际应用别NF式了
[/Quote]客户信息我没法对应建立VIP,因为客户信息不存储在我的
数据库里.我是做成库给第三方调用的.第三方的客户信息库不对我公
开.只是会在调用传入客户信息的时候加上一个标记表明这是vip
gjw_8888 2011-06-03
  • 打赏
  • 举报
回复
加状态值对以前的流程没影响吗?
感觉新增一列比较好控制
种草德鲁伊 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 flyerwing 的回复:]

太长了看不懂.
[/Quote]

+1
cjh200102 2011-06-03
  • 打赏
  • 举报
回复
同意楼上观点,用这种比较直观

[Quote=引用 4 楼 flyerwing 的回复:]

搞个新表对应客户的VIP身份TB_VIP;
要不整个VIPstate表示是否是VIP
都成,实际应用别NF式了
[/Quote]
flyerwing 2011-06-03
  • 打赏
  • 举报
回复
搞个新表对应客户的VIP身份TB_VIP;
要不整个VIPstate表示是否是VIP
都成,实际应用别NF式了
ChrisAK 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 flyerwing 的回复:]

太长了看不懂.
[/Quote]不是吧
porschev 2011-06-03
  • 打赏
  • 举报
回复

现在由于客户中可能会有vip,所以我想添加一个vipa和vipb状态
以示流程的处理区别.

------>

比较倾向于这一种。。。。再加一个vipState区分。。。。

我比较喜欢用这种状态定义。。。。如果再有第三种、第N种。。。也好扩展
flyerwing 2011-06-03
  • 打赏
  • 举报
回复
太长了看不懂.

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧