【发布时间】:2011-07-28 01:27:41
【问题描述】:
认识吉米。他制定了新的人生目标,以证明巧克力是有史以来最好的冰淇淋口味。为此,他构建了一个带有单选按钮和名称文本字段的简单表单,以便他可以将链接发送给他的朋友。
他正在使用一种非常常见的设置,MySQL 和 PHP 将表单提交保存在如下所示的表中:
selection 是风味的 id。口味存储在 PHP 数组中,因为他计划在以后的页面中使用喜爱列表:
$flavors = array(
1=>"Chocolate",
2=>"Cherry",
....
);
表单很成功,他的朋友们开始要求 Jimmy 添加新选项,因此 Jimmy 决定更上一层楼,在表单中添加国家、年龄、电子邮件和其他内容,但这次他他怀疑将风味名称、国家、年龄和其他静态数据放在数组中还是将它们中的每一个保存在数据库表中是否更好,他知道如何在查询中进行连接。
第一种方法
意味着拥有一个包含许多数组的 PHP 文件,并且每次 Jimmy 需要类似以下的风味名称时都可以访问它:$query = mysql_query("SELECT name, flavor FROM votes")
while($row = mysql_fetch_assoc($query)){
echo $row["name"]." - ".$flavors[$row["flavor"]];
}
第二种方法
意味着在数据库中有很多表,并且每次他需要这样的名称时都必须进行连接:$query = mysql_query("SELECT name, flavor FROM votes LEFT JOIN flavors
WHERE votes.flavor = flavors.flavor");
while($row = mysql_fetch_assoc($query)){
echo $row["name"]." - ".$row["flavor"];
}
虽然看起来差别不大,但这对 Jimmy 来说是一个重要的决定,因为他想在未来构建更多更大的形式。
Jimmy 处理与数据库中的 ID 相关联的静态数据(例如风味名称、国家/地区、年龄组等)的最佳方式是什么?
鉴于环境细节:
- 数组是静态的,几乎永远不会改变
- 他将在几页上使用数据,所以硬编码不方便
- 添加新数组通常更快
提前感谢您帮助他。
【问题讨论】:
-
吉米统治世界计划+1
-
聪明,但看起来很像家庭作业。如果这不是家庭作业,我建议您明确说明,否则很快就会出现反对意见。
-
@Michael 谢谢,但实际上这是在工作中提出的,与同事进行了真正的讨论,但我想我会用一种不那么无聊的方式来写这个问题
-
以参照完整性将所有内容存储在数据库中。为什么?假设你想在某个时候去除一种味道......
-
这让我很开心。你把一个无聊的问题弄得很有趣,哈哈。好吧,选择数据库方法。从长远来看,这将更加高效且易于管理。