【发布时间】:2010-10-19 18:11:22
【问题描述】:
我正在为 iphone 创建一个虚拟邮票卡程序,但在实现我的数据库时遇到了问题。该程序本质上有一个积分系统,可以通过所有商家使用(有点像航空里程),但我也想跟踪您去过每个商家的次数
到目前为止,我已经为用户、商家和交易创建了 3 个主表。
1) 用户表包含基本信息,如 user_id 和收集的总积分。
2) Merchants 表包含诸如 Merchants_id、位置、总积分等信息。
3) 每次有人签到每个商家时,交易表都会创建一个新行,并记录日期戳、用户名、商家名称和奖励积分。
因此,了解您去过每个商家多少次的最基本方法是查询用户和商家的整个交易表,这将为我提供您多少次的交易历史记录'去过那个特定的商家(这是完美的),但从长远来看,我觉得这对性能来说是可怕的。
实现这一点的另一种简单但“愚蠢”的方法是在用户表中为每个商家创建一个列,并将运行总数保留在那里。这似乎不合适,因为我会定期添加新商家,并且每次发生这种情况时都需要为每个用户添加新列。
我已经研究了 mySQL 数据库的一对多和多对多关系,但似乎无法提出一些非常具体的东西,因为我对 web/PHP/mySQL 开发非常陌生但我猜这就是我要找的……
我还考虑为每个用户创建一个特殊的交易表,其中有一列用于商家,另一列用于访问次数。同样,不确定这是否是最有效的实现方式。
有人能指出正确的方向吗?
【问题讨论】:
-
Foursquare 和 Gowalla 是我正在寻找的实现类型的好例子。关于他们如何跟踪您在每个商家的使用情况的任何想法?
标签: iphone mysql database-design