2011-12-22 134 views
-5

我正在寻找代码[like |不喜欢]以最好和最有效的方式利用PHP/SQL的特性。喜欢/不喜欢的功能的PHP/SQL逻辑

我目前有两个表:users & content

  • 我应该如何存储用户的好恶?
  • 我应该如何存储特定内容项目所喜欢的数量?

我正在寻找最好的逻辑,所以我没有使用低效查询来重载我的网站。

+0

请再具体些。通常使用单个表来存储答案将是最好的,但这取决于具体情况。 – 2011-12-22 02:39:15

+0

每个选项都有不同的优点和缺点(尽管喜欢和不喜欢桌子应该只是一张桌子,我会认为)。如果将它放在表格中,则COUNT子句变得不必要,这意味着选择更快。但是,如果您有10个人一次尝试喜欢某个东西,则更新将开始导致锁定问题。如果你有一个单独的表,COUNT查询会比读一个列要慢一些,但是当添加新条目时(注意我在这里做一些假设),锁定不会成为*糟糕的。你总是可以做一个混合版本。 – Corbin 2011-12-22 02:39:22

+0

这真的很含糊。这是进入一个更大的计划/项目还是你只是想收集喜欢和不喜欢? – Robert 2011-12-22 02:42:16

回答

1

样品台

posts 
---- 
id 
content 
user 


users 
---- 
id 
username 

user_likes 
---- 
id 
user 
post_id 
0

您可以创建一个新表user_likes,也许可以通过外键连接在一起,以保持用户表likes_details“喜欢”,以及关于这个的人(如日期,IP,或其他任何东西),看看分贝normalization

0

你应该保持你的数据库结构正常化。这意味着你

  • 尽可能砍的属性。例如:不要创建一个字段 “地址”,而是创建三个字段“街道”“邮编”“家庭号码”。
  • 仅将相干属性放在一起放入表格中。例如:“人物”表格可能包含“person_id”,“height”,“weight”或“eye_color”等字段,但不包含“地址”等字段。创建另一个名为“person_addresses”的表,其中包含“person_id”,“street”,“postcode”,“housenumber”等字段。

因此,您的案例的有效方法是创建两个表。第一个“用户”字段为“user_id”,第二个为“likes_dislikes”,字段为“user_id”,“likes”和“dislikes”。

看看这个维基条目,了解更多关于数据库标准化: http://en.wikipedia.org/wiki/Database_normalization