2013-12-15 46 views
0

我正在使用MYSQL存储有关用户订单的数据。使用PayPal,某些订单只有一个交易ID,而其他订单只有一个配置文件ID。对于txn_id和profile_id有单独的字段,根据顺序,其中一个或另一个是否为NULL,是否可怜的数据库设计?字段相关的数据库结构

回答

1

不,这并不是糟糕的设计。

根据具体情况,您有两种情况,一种是NULL。当您尝试强制执行时,出现问题的确切原因是NULL或至少一个不是NULL。为了有效地做到这一点,您需要使用触发器来检查值。

0

如果总是只有一个ID或另一个,可以考虑有两个字段,一个是id_type,另一个是id_value(如果它们具有相同的数据类型)。

这可能会使查询更简单。

0

您有两种基本选择:

  1. 两个领域,一个是交易,一个用于个人资料都交易和档案,并有另一场,以确定是否
  2. 的字段是一个Transction ID或个人资料ID

我更喜欢1号(与您的基本相同),因为您保留了字段的正确命名而不是通用命名。除此之外,如果其中一个是NULL,您总是可以使用COALESCE()或那种功能来检索不是NULL

在这方面,这也意味着,你应该有一个人工主键将不能依赖Transction IDProfile ID