【发布时间】:2011-05-13 08:25:58
【问题描述】:
我很难在我正在开发的社交网络中映射对象。我映射了对象列表,我有 122 个主要对象。还有一个单独的系统对象列表,我暂时保留它。所以一个对象是:照片、视频、照片标签、视频标签、邮件附件、邮件等……
每个对象都有元数据,包括创建日期、所有者 ID、隐私级别、搜索级别等详细信息,对于文本项目,有一个字数、它所属的类别、其他人对 cmets 的引用等。
现在,据我了解,人们为每个对象分配了自己的表格。所以照片有它自己的表格,视频有它自己的表格,等等。但这意味着我将有 122 个不同的表格来存放我的对象。如果我将它们全部组合到一张表中,那么表扫描将是一个问题,正如您所知,在社交网络中人们总是与对象进行交互,并且表会变得超长。
我已将对象详细信息分为 2 类:对象特定字段(如照片)将包含描述、大小、路径等列。然后是上面提到的所有对象都具有的公共字段列表(盗版级别、搜索级别等)。其中一些列是面向用户的,例如用户需要的隐私。有些纯粹用于系统后端报告目的,例如星期几、月份中的某一天、一年中的某一天等。
因此,最好的方法是对此进行建模。总结起来就是三层:
系统报告/分析的对象详细信息
所有对象都拥有对象详细信息,例如创建日期、隐私等
对象类型独有的对象详细信息。
当然,如果我需要跨对象提取报告,我拥有的表越多,查询就越复杂。在顶部,我有一个对象查找表,其中包含对象的父子列表,因此所有其他对象表都将从那里流出。原因是我还需要为新闻提要、通知等维护一个默认文本列表,所以我计划在对象查找表本身中映射所有这些文本。
【问题讨论】:
-
“如果我将它们全部合并到一张表中......” - 不要那样做!
-
那么我需要 122 个表来存储用户对象?
标签: database-design social-networking