我必须设计一个用于存储化学反应数据的数据库。我有3个实体:化学,反应和条件。
我也设计了ER图。但它似乎并不完美。请说明以下ER图的缺陷并提出改进建议。
答案 0 :(得分:3)
反应和条件之间应该存在关联,因为在特定条件下会发生反应,而且你必须指定关系的类型。
答案 1 :(得分:1)
在我看来,化学品,反应和条件之间的关系应该是三元的,反应和化学品之间的另一个关系应该代表生产的化学品。以下是声明:“化学品在某些条件下会发生反应。反应产生化学物质。”
以下是表示它的方法:
但是,正如本网站http://www.databasedesign.co.uk/bookdatabasesafirstcourse/chap3/chap3.htm中的图3.8所描述的,这种关系可以进一步细分为二元关系的集合。这是最终的ER:
你的表应该是这样的:
CHEMICALS(chemicalId, ...)
REACTIONS(reactionId, conditionId,...) [conditionId here represents the 1-M "UNDER"]
CONDITIONS(confitionId, ...)
CHEMICALS_REACT(reactionId, chemicalId) [This table represents the M-M "REACT"]
REACTION_PROD_CHEM(reactionId, chemicalId) [This table represents the M-M "PRODUCE"]