php - mysql 数据库规范化

标签 php mysql phpmyadmin database-normalization

我是 mysql 新手!拥有绝对的基础知识,例如仅创建表格。 我正在创建一个包含在线考试和结果的网站。我的字段包括

t_id, t_name(subject),ru_id, ru_name, ru_skl, hs_user, hsu_skl

图例:t 是测试。 ru 是注册用户。 skl是学校。 hs得分很高。 hsu 是高分用户。

我不知道如何排列表中的字段并建立关系以满足以下条件:
(1) 每个测试可以有多个用户注册,且使用同一个test_id。
(2) 应获取得分最高的用户并将其输入表中,用于相应的 test_id。
(3) 得分最高的用户所在学校也应录入表中,对应相应的test_id。
(4) 条件2 n 3应该是可检索的,以便使用php处理每月toppers列表等。

请您帮忙! :)

最佳答案

表:UserToTest 栏目:

test_id | user_id | score

这实际上就是您所需要的。只需插入 user_idtest_id 即可建立关系。添加分数作为附加信息。

您想要拥有的所有其他数据,用户的最高分数和学校的最高分数都是您在查询时可以轻松计算的值。因此,没有真正需要将其写入表中,这只会让数据处理变得更加复杂,因为您必须在应用程序中添加触发器、约束或更多逻辑才能使这些值保持最新。

关于php - mysql 数据库规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38683606/

相关文章:

php - Wamp 服务器无法正确处理数据库的 PHP

mysql - phpmyadmin 需要一个符号名称! (位置 312 处 ")"附近)

php - Webmatrix - PHP - Wordpress(不工作)

php - Android - 将 JSONArray 发送到 php

php - Doctrine 查询语言获取每组最大/最新行

mysql - 使用 NodeJS 和 MySql 的 jQuery 数据表

php - 我是否需要在 WordPress 语句(查询)中使用数组 ('%s' 、 '%s' ),或者该数组已过时?

php - 准备好的选择语句无法获取计数

mysql - mysql数据库中的阿拉伯字母

仅在某些服务器上的 Mysql 查询错误