认识吉米。他制定了新的人生目标,以证明巧克力是有史以来最好的冰淇淋口味。为此,他构建了一个带有单选按钮和名称文本字段的简单表单,以便可以将链接发送给他的 friend 。
他使用一个非常普通的设置MySQL和PHP将表单提交保存在一个表中,如下所示:selection
是 flavor 的ID。 flavor 存储在PHP数组中,因为他计划在以后的页面中使用偏好列表:
$flavors = array(
1=>"Chocolate",
2=>"Cherry",
....
);
该表格很成功,他的 friend 们开始要求Jimmy添加新的选项,因此Jimmy决定将其提升到一个新的水平,并在表格中添加国家/地区,年龄,电子邮件和其他内容,但是这次他很怀疑无论是将 flavor 名称,国家/地区,年龄和其他静态数据放入数组中还是将它们分别保存在数据库表中都是一个更好的主意,他都知道如何在查询中进行联接。
第一种方法意味着拥有一个包含许多数组的PHP文件,并在Jimmy每次需要以下 flavor 名称时都可以对其进行访问:
$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处理与数据库中的ID相关联的静态数据(如 flavor 名称,国家/地区,年龄组等)的最佳方法是什么?
给定环境细节:
在此先感谢您的帮助。
最佳答案
我认为Jimmy应该在考虑如何布置数据。为什么要限制他对调味品的追求。
如果吉米(Jimmy)希望存储大量的少量数据,那么数据库便是解决之道。如果Jimmy要存储项目的图像,则应将其存储在文件中,并且他应将其相对位置存储到数据库中的某个根目录中
也许一个表可以包含:
VOTE_ITEMS
ID - PRIMARY KEY
NAME
IMAGE
TAGS - (Maybe an imploded ID array with the IDs pointing to a TAG table)
...
另一个表可以包含:
USERS
ID - PRIMARY KEY
...
(As much information as your want to collect from your users)
...
继续投票:
POLLS
ID
VOTE_ITEM_IDS
...
USER_VOTES
POLLS_ID
VOTE_ITEM
USER_ID
由于Jimmy似乎对数据库了解很多,因此只要他想添加一些内容,就可以根据自己的需要添加另一列(或表)。另外,如果我们包装了一个不错的用户系统,他将来可以在其他项目中重用它!