【问题标题】:Should I store user id's and profile data (10-15 columns) separately?我应该分别存储用户 ID 和个人资料数据(10-15 列)吗?
【发布时间】:2011-09-24 03:10:29
【问题描述】:

我正在使用 PHP 和 MyISAM,目前我有一个供用户使用的个人资料页面,但不确定我应该如何准确地布置表格。

我有一个用户表(以及他们个人资料的每一点,包括一对用于他们的长描述或自定义样式表的 MEDIUMTEXT 字段)一个朋友表(userid+friendid),当然还有一个可能已经存在的 cmets 表放在他们的页面上。

将个人资料/额外用户数据从用户表中分离出来并纯粹用于检查其他表是否明智?

如果我只是检查他们的朋友是否要显示或其他页面上的内容,我不确定每行中的许多/或一些长字段是否不合适。

【问题讨论】:

标签: php mysql performance schema


【解决方案1】:

简短的回答是也许。分隔表格将节省空间,因为如果该字段未使用,则不会分配空间。空间可能不会成为问题(取决于服务器和用户群),但加入表可能会降低性能,但这又取决于用户群和服务器。我认为主键索引存储在内存中,因此查找不应该受到列数/行大小的影响。

速度/性能...非规范化

空间归一化

【讨论】:

  • 这对我来说更有意义(而且用户 ID 确实是主键) - 我应该更有信心,因为我应该是一个简单而小型的应用程序。
【解决方案2】:

基本上你的问题无法真正回答,因为它非常主观,所以这或多或少是一些意见:

将个人资料/额外用户数据与用户列分开并纯粹用于检查其他表是否明智?

看起来是这样,因为您称其为额外用户数据。所以它不属于用户,应该与它分开。

如果我只是检查他们的朋友是否要在其他页面上显示或其他内容,我不确定每行中的许多/或一些长字段是否不合适。

您提供的信息也很难回答。但是,如果您只进行SELECT * FROM TABLE; 查询,那肯定是不合适的。

【讨论】:

  • 我很抱歉,我只是想知道如果我只需要表中的用户 ID,我是否会有大量的列,是否适合将所有数据放在那里。
  • 你想实现真正的标准化吗?你的目标是什么?
  • 规范化对我来说很重要,但似乎我真的需要阅读更多关于如何在我的应用程序中定义关系的信息,然后再在这里进行一种或另一种方式(即使它是正确的, ) 我想我问了一个不可能的问题,我很抱歉。
【解决方案3】:

我认为为个人资料/额外用户数据创建一个单独的表是件好事。在 user 表中保留常用列,并在新的 user_profile 表中移动其他列。目前您有 10 - 15 列,但将来可能会增长到 50+ 列。所以最好现在分开。

HTH,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2021-09-06
    • 2021-04-17
    • 1970-01-01
    相关资源
    最近更新 更多