我正在使用MYSQL存储有关用户订单的数据。使用PayPal,某些订单只有一个交易ID,而其他订单只有一个配置文件ID。数据库设计是否很差,为txn_id和profile_id提供单独的字段,其中一个或另一个是NULL,具体取决于顺序?
答案 0 :(得分:1)
不,这根本不是糟糕的设计。
根据具体情况,您的情况中有一个是NULL
。当您尝试强制执行一个NULL
或至少一个不是NULL
时,就会出现问题。要有效地执行此操作,您需要使用触发器来检查值。
答案 1 :(得分:0)
如果始终只有一个id或另一个,您可以考虑使用两个字段,一个是id_type
,另一个是id_value
(如果它们具有相同的数据类型)。
这可能会使查询更简单。
答案 2 :(得分:0)
您基本上有两种选择:
我更喜欢1号(基本上与你的相同),因为你保持了字段的正确命名而不是通用的命名。此外,如果COALESCE()
为NULL
,您可以始终使用NULL
或那种函数来检索非Transction ID
。
在这方面,这也意味着您应该拥有一个不依赖于Profile ID
或{{1}}的人工主键。