【发布时间】:2013-02-12 15:04:19
【问题描述】:
我们想扩展我们的数据库以创建多语言支持,但我们不确定如何做到这一点。 我们的数据库如下所示:
ID - 名称 - 描述 - (很多不相关的列)
选项1是在表中添加一个xml列,在这个列中我们可以像这样存储我们需要的信息:
<translation>
<language value=’en’>
<Name value=’’>
<Description value=’’>
</language>
<language value=’fr’>
<Name value=’’>
<Description value=’’>
</language>
</translation>
诀窍和好处是,当我删除行时,我也删除了翻译。
方案2是增加一个额外的表,创建一个表来存储信息很容易,但是在获取信息时需要内部连接,并且在删除原始行时更努力地删除行。
在这种情况下,首选的选项是什么?或者有其他好的解决方案吗?
【问题讨论】:
-
如果你有另一个表,删除行并不费力,如果你使用外键和引用动作触发器
ON DELETE CASCADE,当你从主表中删除行时,它会删除附加表中的行。这可能是一个过于主观的问题,但我会说使用附加表,这是关系数据库的全部要点,您可以在附加表上使用索引、约束等,而不能在 XML 列上使用。如果您需要 XML 格式的数据,将其转换为 XML 并不难。 -
您也可以使用
NVARCHAR2数据类型将多语言数据存储在单列中
标签: sql database-design