如何将该字段与我的主表中名为“username”的所有用户链接或添加到另一个表中,以便我可以运行检查并比较值而无需向主表添加大量行?这将是一个更清洁,更有条理的设置。
表名为login_users。这是我存储基本信息的主表
username email password
Anthony user@email.com
Josh user@email.com
Tsuyoshi user@email.com
表2称为badge_status。此表将保留其是否已在我的网站上解锁成就的状态。我想引入用户名。
username badge1 badge2
Anthony locked unlocked
Josh unlocked locked
Tsuyoshi unlocked locked
此外,表2可以在新用户注册时自动更新,因为所有新注册都会导入到第一个表中。作为旁注,我使用的是phpmyadmin。
感谢您对此设置的任何帮助。非常感谢。
答案 0 :(得分:9)
我认为您应该normalize your data使用以下架构代替:
login_users
表上的用户名列的外键约束)badges
表上BadgeId列的外键约束)这将允许您根据需要添加任意数量的徽章,而无需更改数据库架构或脚本。
答案 1 :(得分:2)
我真的不明白为什么要把这些表分开。从理论上讲,两者之间存在一对一的关系。您的查询"表2可以在新用户注册时自动更新,因为所有新注册都会导入到第一个表中。进一步支持为什么拆分这些表只会产生不必要的开销的论点。
其他开销来源包括过于复杂的JOIN以获取数据以及需要在badge_status.username
以及外键上添加额外的唯一约束。
如果您真的希望将这些表分开,我建议使用以下设置,以便查询特定徽章并添加新徽章非常简单:
login_users: username, email, password, ... badges: id, name, description, ... users_badges: username, badge_id, status, unlocked_date, ...