小编Foo*_*Foo的帖子

mySQL效率问题 - 如何找到正常化的正确平衡......?

我很擅长使用关系数据库,但已阅读了一些书籍并了解了良好设计的基础知识.

我正面临一个设计决定,我不知道如何继续.这是我正在构建的一个非常简化的版本:人们可以对照片进行评分1-5,我需要在跟踪个人投票的同时显示图片上的平均投票.例如,12人投票1人,7人投票2人等.等等.

我的规范化怪胎最初设计了这样的表结构:

Table pictures
id* | picture | userID | 

Table ratings
id* | pictureID | userID | rating
Run Code Online (Sandbox Code Playgroud)

随着所有外键约束和所有设置,因为他们应该是.每当有人对图片进行评分时,我只需在评分中添加一条新记录即可.

要查找图片的平均评分,我只需运行以下内容:

SELECT AVG(rating) FROM ratings WHERE pictureID = '5' GROUP by pictureID 
Run Code Online (Sandbox Code Playgroud)

以这种方式设置它让我运行我的花哨的统计数据.我很容易找到谁将某张照片评为3,哪些不是.

现在我在想是否有一堆评级(这在我真正的设计中是非常可能的),找到平均值将变得非常昂贵和痛苦.

使用非规范化版本似乎更有效.例如:

Table picture
id | picture | userID | ratingOne | ratingTwo | ratingThree | ratingFour | ratingFive
Run Code Online (Sandbox Code Playgroud)

要计算平均值,我只需要选择一行.它似乎更有效率,但更加丑陋.

有人能指出我做正确的方向吗?我最初的研究表明,我必须"找到合适的平衡点",但我该如何找到平衡点呢?任何文章或其他阅读信息也将受到赞赏.

谢谢.

mysql performance normalization

6
推荐指数
1
解决办法
257
查看次数

基于PHP的会话变量不保留值.适用于localhost,但不适用于服务器

我一直试图调试这个问题好几个小时,但无济于事.我已经使用PHP很多年了,经过长时间的中断后又回到了它,所以我仍然有点生疏.

无论如何,我的$ _SESSION变量并没有因为某些我无法弄清楚的原因而保留它们的价值.该网站完全适用于localhost,但将其上传到服务器似乎打破了它.

我检查的第一件事是PHP.ini服务器设置.一切似乎都很好.事实上,我的登录系统是基于会话的,它完美地运行.所以现在我知道$ _SESSIONS正常工作并保留了我的登录价值,我假设服务器已经设置好,问题出现在我的脚本中.

这是导致问题的代码的剥离版本.通过GET变量设置后,$ type,$ order和$ style不会被保留.用户单击链接,该链接通过GET设置变量,并且该变量将在其剩余的会话中保留.

我的逻辑是否存在一些我没有看到的问题?

<?php
require_once('includes/top.php'); //first line includes a call to session_start();
require_once('includes/db.php');

$type = filter_input(INPUT_GET, 't', FILTER_VALIDATE_INT);
$order = filter_input(INPUT_GET, 'o', FILTER_VALIDATE_INT);
$style = filter_input(INPUT_GET, 's', FILTER_VALIDATE_INT);

/*
According to documentation, filter_input returns a NULL when variables
are undefined. So, if t, o, or s are not set via URL, $type, $order and $style
will be NULL. 
*/    

print_r($_SESSION);
/* 
All other sessions, such as the login session, etc. are displayed here. …
Run Code Online (Sandbox Code Playgroud)

php

5
推荐指数
1
解决办法
3757
查看次数

标签 统计

mysql ×1

normalization ×1

performance ×1

php ×1