我们有一个数据库表,我将其称为 TIMES。它传统上看起来像这样:
ID Blah1 Blah2 Blah3 Description
1 a b c Day
2 d e f Night
(我添加了 Blah 列主要是为了表明表中存在更多列,但与我们尝试进行的升级没有直接关系。)
我们想为从 db 获得的结果添加一些语言支持。所以我的建议是:
a) 走懒惰的路,只为语言添加一个新列,给我们
ID Blah1 Blah2 Blah3 Description Language
1 a b c Day English
2 d e f Night English
1 a b c Tag German
2 d e f Nacht German
或者,最好是 b) 进行一些规范化并创建一个仅包含相关值的新表:
ID Description Language
1 Day English
2 Night English
1 Tag German
2 Nacht German
我们的数据库人员说,好吧,我们可以只使用原始表并将所有内容都包含在 xml 中……这样我们就可以节省行数。
ID Blah1 Blah2 Blah3 Language
1 a b c <TimeDescriptions>
<TimeDescription language='English'>
Day
</TimeDesciption>
<TimeDescription language='German'>
Tag
</TimeDesciption>
</TimeDescriptions>
2 d e f <TimeDescriptions>
<TimeDescription language='English'>
Night
</TimeDesciption>
<TimeDescription language='German'>
Nacht
</TimeDesciption>
</TimeDescriptions>
“节省行数”?我不是一个真正的数据库人,但这对我来说听起来很奇怪。当然,它会节省一些行......但是当行本身更长时,这是一个整体的胜利吗?(很有可能)除此之外,它似乎打破了我习惯的规范化规则。我也知道可以在 SQL 中使用 XML 并对其进行搜索(尽管我没有这样做,并且对细节非常模糊),但我只是看不到这样做的胜利。
当我问起这件事时,他开始变得棘手,所以我退缩了,但我仍然想知道我是否遗漏了什么。显然很多细节都丢失了,但我不是在寻找详细的分析......我只是想知道这是否合理。
编辑:啊。你会认为我在这里待的时间足够长,已经学会了正确的格式,但我把最后一点搞砸了……我会尝试修复它,但欢迎进行其他编辑。