Php mysql数据库结构与关系
我需要有关如何在mysql数据库中设置表的帮助 我有一个用户。一个用户可以获得10个令牌以供其使用。令牌只能用于一件事。他们可以使用它创建卡通页面、游戏页面、生物页面、问题页面等。令牌也可以重新分配到其他页面 我想看看构建数据库的最佳方式是什么,以及它们之间的关系Php mysql数据库结构与关系,php,mysql,relationship,Php,Mysql,Relationship,我需要有关如何在mysql数据库中设置表的帮助 我有一个用户。一个用户可以获得10个令牌以供其使用。令牌只能用于一件事。他们可以使用它创建卡通页面、游戏页面、生物页面、问题页面等。令牌也可以重新分配到其他页面 我想看看构建数据库的最佳方式是什么,以及它们之间的关系 我想有一个用户表、令牌表、卡通表、游戏表、生物表和问题表。但是我如何与他们所有人联系呢 关系数据库表设计不是一门硬科学。它是一个高度灵活的范例,可以而且将根据应用程序的性质而改变。也就是说,有一些特定的设计原则,您通常应该遵守。见例
我想有一个用户表、令牌表、卡通表、游戏表、生物表和问题表。但是我如何与他们所有人联系呢 关系数据库表设计不是一门硬科学。它是一个高度灵活的范例,可以而且将根据应用程序的性质而改变。也就是说,有一些特定的设计原则,您通常应该遵守。见例 话虽如此,我将从一种似乎高度动态的方法来尝试这一点,因为我不确定应用程序的细节。首先,您肯定需要一个
users
表,该表可能如下所示:
用户:
- 名字
- 姓
- 用户id
- n_代币
- 我把它放在这里,以防用户的令牌数量是动态的
- 令牌id
- 这用于指定此(或这些)令牌的用途
- 用户id
- 这应该对users.user\u id具有重复的外键约束
- n_代币
- 这与users.n_令牌不同。你的问题并不清楚 是否每个功能始终有1个令牌。此值是一个 对未来可能的增强采用前瞻性方法
- 页面类型\u id
- 这是为了指定令牌用于的页面类型的类型。会有 pagetypes.pagetype_id上的外键约束(请参见下文)
- 页面类型\u id
- 用于定义此类型页面的唯一标识符
- 页面类型名称
- 用于标记页面类型的字符串字段,例如“卡通”、“生物”等
- 页面类型\u id
- 此id在pagetypes.pagetype\u id上具有重复的外键约束。 此表的值将始终保持不变。这不是最重要的 规范化设计,因为您可能希望有一个更通用的“页面”表, 但是,一些复杂的连接可能会让一些开发人员甚至其他人感到困惑 更糟糕的是,查询速度慢
- 令牌id
- 令牌上的外键约束。令牌\u id
- 其他
- 其余字段是用户定义的,如您希望指定的 属于个人主页
用户
表与令牌
表从不同的页面
表中分离出来。为了使设计更直观,我将进行一些示例查询,这可能有助于您理解布局
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
希望这一切都是有道理的,而且是直观的。如果有什么不清楚的地方,请告诉我。当你说“与所有这些内容相关”时,这可以很容易地以非常有效的方式完成。。你在寻找什么样的关联?非常感谢…我将尝试实现这个结构…并让你知道它是如何进行的。