mysql数据库规范化

时间:2016-07-31 11:41:39

标签: php mysql phpmyadmin database-normalization

我是mysql的新手!拥有像创建表格这样的绝对基本知识。 我正在创建一个包含在线考试和结果的网站。我的领域包括

def annotation_line( ax, xmin, xmax, y, text, ytext=0, linecolor='black', linewidth=1, fontsize=12 ):

    ax.annotate('', xy=(xmin, y), xytext=(xmax, y), xycoords='data', textcoords='data',
            arrowprops={'arrowstyle': '|-|', 'color':linecolor, 'linewidth':linewidth})
    ax.annotate('', xy=(xmin, y), xytext=(xmax, y), xycoords='data', textcoords='data',
            arrowprops={'arrowstyle': '<->', 'color':linecolor, 'linewidth':linewidth})

    xcenter = xmin + (xmax-xmin)/2
    if ytext==0:
        ytext = y + ( ax.get_ylim()[1] - ax.get_ylim()[0] ) / 20

    ax.annotate( text, xy=(xcenter,ytext), ha='center', va='center', fontsize=fontsize)

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

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

请你帮忙! :)

1 个答案:

答案 0 :(得分:0)

表:UserToTest 专栏:

test_id | user_id | score

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

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