首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这张桌子设计合理吗?

这张桌子设计合理吗?
EN

Database Administration用户
提问于 2013-10-30 19:57:48
回答 1查看 66关注 0票数 1

我试图模拟这样的过程:一名同事提交一份关于他们拟议工作程序的声明,另一名同事评论和批准该声明。目前,我有一张这样的桌子:

代码语言:javascript
复制
METHODOLOGY
  methodology_id
  entered_by
  statement
  entered_date
  status_code
  reviewed_by
  reviewer_comments
  reviewed_date

身份代码如下:

代码语言:javascript
复制
1 = in progress by originator
2 = finished and locked by originator
3 = in progress by checker
4 = finished, locked and rejected by checker
5 = finished, locked and approved by checker
6 = approved method was unlocked due to revision to methodology
7 = the originator was changed with a new originator after method was approved
8 = the checker was changed with a new checker 

如果是这样的话:

代码语言:javascript
复制
METHODOLOGY_STATEMENT
  methodology_id
  entered_by
  statement
  entered_date
  status_code

METHODOLOGY_REVIEW
  methodology_review_id
  methodology_id
  status_code
  reviewed_by
  reviewer_comments
  reviewed_date

现在,每个方法语句只需要一个Review。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2013-10-30 20:06:55

这两种方法都可能是正确的。

如果您想要更改可能的评论数量,请选择一个表。想让事情变得困难可能是违反直觉的,但如果让它变成1:n实际上是个坏主意,那么构建一些痛苦来使改变有一些逻辑。

但是,为了长期的灵活性,您几乎可以肯定地想要使用两个表。如果是我的话,我会在那里设置一个触发器,以强制执行“每个方法一次审查声明”规则。如果这种情况有所改变,只需修改或删除触发器。

但是,要记住的一个问题是:如果您进行了多次评审,您将如何解决与此冲突的状态代码?例如,如果同一个方法论语句有一个代码4和一个代码5,那么怎么办?

更新:

...or可以做更好的事情,并使用@Max建议的唯一约束。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/52532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档