【问题标题】:Object table schema in social network社交网络中的对象表模式
【发布时间】:2011-05-13 08:25:58
【问题描述】:

我很难在我正在开发的社交网络中映射对象。我映射了对象列表,我有 122 个主要对象。还有一个单独的系统对象列表,我暂时保留它。所以一个对象是:照片、视频、照片标签、视频标签、邮件附件、邮件等……

每个对象都有元数据,包括创建日期、所有者 ID、隐私级别、搜索级别等详细信息,对于文本项目,有一个字数、它所属的类别、其他人对 cme​​ts 的引用等。

现在,据我了解,人们为每个对象分配了自己的表格。所以照片有它自己的表格,视频有它自己的表格,等等。但这意味着我将有 122 个不同的表格来存放我的对象。如果我将它们全部组合到一张表中,那么表扫描将是一个问题,正如您所知,在社交网络中人们总是与对象进行交互,并且表会变得超长。

我已将对象详细信息分为 2 类:对象特定字段(如照片)将包含描述、大小、路径等列。然后是上面提到的所有对象都具有的公共字段列表(盗版级别、搜索级别等)。其中一些列是面向用户的,例如用户需要的隐私。有些纯粹用于系统后端报告目的,例如星期几、月份中的某一天、一年中的某一天等。

因此,最好的方法是对此进行建模。总结起来就是三层:

系统报告/分析的对象详细信息
所有对象都拥有对象详细信息,例如创建日期、隐私等
对象类型独有的对象详细信息。

当然,如果我需要跨对象提取报告,我拥有的表越多,查询就越复杂。在顶部,我有一个对象查找表,其中包含对象的父子列表,因此所有其他对象表都将从那里流出。原因是我还需要为新闻提要、通知等维护一个默认文本列表,所以我计划在对象查找表本身中映射所有这些文本。

【问题讨论】:

  • “如果我将它们全部合并到一张表中......” - 不要那样做!
  • 那么我需要 122 个表来存储用户对象?

标签: database-design social-networking


【解决方案1】:

Daniel,祝这个项目好运,听起来很有挑战性。

对于数据库部分,我认为您不需要 122 个表,也不需要一个表来完成整个项目。您的对象都可以存储在一张表中。该表将包括一个使每一行唯一的标识值、Hibernate 喜欢的版本号、最后更新的值、用作标志的八位列(例如:非活动、仅限管理员等)、对象类型号等等您可以轻松地获得单一类型的对象和一列 XML 数据。 XML 将保存您的对象的定义。 SQL Server 与 SQL2008 中的 XML 配合得很好,并且还可以利用 XML 列上的索引。 您仍然需要许多其他表格来支持用户、会员、订单、计费(您计划为此获得报酬)和报告。

【讨论】:

    猜你喜欢
    • 2010-11-29
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2010-12-15
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多