我需要有关如何在我的 mysql 数据库中设置表的帮助。
我有一个用户。用户可以根据需要获得 10 个令牌。令牌只能用于一件事。他们可以使用它来创建卡通页面、游戏页面、生物页面、问题页面等。令牌也可以重新分配到另一个页面。
我想看看构建我的数据库的最佳方式是什么以及关系。
我正在考虑有一个用户表、令牌表、卡通表、游戏表、生物表和问题表。但我如何与所有这些联系起来。
我需要有关如何在我的 mysql 数据库中设置表的帮助。
我有一个用户。用户可以根据需要获得 10 个令牌。令牌只能用于一件事。他们可以使用它来创建卡通页面、游戏页面、生物页面、问题页面等。令牌也可以重新分配到另一个页面。
我想看看构建我的数据库的最佳方式是什么以及关系。
我正在考虑有一个用户表、令牌表、卡通表、游戏表、生物表和问题表。但我如何与所有这些联系起来。
关系数据库表设计不是一门硬科学。它是一种高度灵活的范例,可以并且将会根据您的应用程序的性质而改变。话虽如此,您通常应该遵守某些设计原则。参见例如http://en.wikipedia.org/wiki/Database_design。
话虽如此,我将通过一种似乎高度动态的方法来解决这个问题,因为我不确定应用程序的细节。首先,您肯定需要一个如下所示的users
表格:
用户:
现在您有了一种指定用户的方法,您将希望了解该用户如何使用他/她的令牌:
代币:
如上所述,您希望人们在此表定义的特定页面类型上使用令牌,例如卡通页面、简历页面等:
页面类型:
现在,您可能有多个表定义页面类型,因此我将只为其中一个指定布局:
生物页面:
概括
总结上述表格布局,您需要设计数据库,使自包含实体不跨越多个表格,多个实体不组合成一个表格。话虽如此,我将表格与不同表格users
的表格分开。为了使设计更直观,我将做一些示例查询,这可能有助于您理解布局。tokens
<pagetype>_pages
要获取用户创建的所有简历页面:
SELECT bio_pages.*
FROM bio_pages
INNER
JOIN tokens
ON bio_pages.token_id=tokens.token_id
INNER
JOIN users
ON tokens.user_id=users.user_id
WHERE users.first_name='john'
AND users.last_name='doe'
要获取用户使用的硬币总数,以及他们可以使用的最大硬币数量:
SELECT SUM(tokens.n_tokens) AS used_tokens,
users.n_tokens AS max_tokens
FROM tokens
INNER
JOIN users
ON tokens.user_id=users.user_id
WHERE users.first_name='john'
AND users.last_name='doe'
GROUP BY users.user_id
希望这一切都有意义且直观。如果有任何不清楚的地方,请告诉我。