2012-11-17 147 views
0

我正在构建这个游戏门户,我有一些数据库问题。目前我有大约10张桌子,但我认为他们会在完成编程后超过20桌。无论如何,我想创建不同表格之间的某种关系(有点像WordPress)。该表将持有任何关系,从表A中的一行有一行的表B.什么我想出了如下:数据库结构和关系

表关系

| rs_id | rs_type | rs_alpha | rs_beta | 

rs_id - >只是一个ID
rs_type - >的类型关系
rs_alpha - >相关表#1和行ID
rs_beta - >相关表#2和行ID

例子:

| 1 | cover | games:153 | images:318 | 
| 2 | tag | news:183 | tags:18 | 
| 3 | group_admin | users:918 | group:75 | 
... 

这可能只是做到这一点,但这里是我的担忧: 1.这张表的增长速度非常快,很快就会有超过100,000行,这会减慢加载时间。 2.要提取信息,我将不得不爆炸每个可能会减慢加载时间的调用。 3.我可能会从ID(rs_alpha,rs_beta)中划分表名,但这也可能会延长加载时间。

谢谢你,我接受任何其他的解决方案,可能会比这一个:)

更好,如果你有时间,你可以从这里下载我的数据库结构,看看是什么样子: demirevdesign。 COM /公/ pcanvil.sql.gz

(该addon_表将成为关系表)

回答

0

据我了解,关系类型本身定义涉及表,因此在存储表名没有必要。
此外,如果您重构您的模式并为可能涉及关系的所有实体添加通用父表,则根本不需要关心表名,您只需存储该新表的ID。

最后,关系总是有开始日期,并可能有结束日期,我建议将此属性添加到relationships表。

至于性能,如果没有看到如何查询表格,很难回答。我想在关系类型列的一般分区将是有益的

+0

我还没有想到rs_type可能会携带表信息。谢谢! 至于日期,我认为这并不重要。关系表只是为了显示一行是否连接到另一行。不过我不知道我在这里做什么是最好的解决方案。如果你有时间,请下载我的数据库(我在我的问题中添加了链接)并对其进行浏览,我非常感谢你的帮助。 –

+0

@СърГеоргиДемирев:我看着你的转储,但它有15个左右的表格,分析它们/给出有用的建议听起来像至少几个小时的工作,而不是几分钟内可以回答的问题......我建议阅读http://www.embarcadero.com/images/dm/technical-papers/data-model-resource-sample-collection.pdf,它有描述存储实体之间关系的模式的章节。 – a1ex07

+0

我会研究它,谢谢! –