2012-11-07 125 views
1

我有那个数据库图(MySQL)。每个Book已分配BookLanguage。每个BookLanguage有两个不同的LanguageNames(全球化的目的)。此外,每个Book可以有一个额外的BookLanguage(但它不是必需的)SQL查询和字符串搜索

这就是问题所在 - 我在构建SQL查询时搜索Books,在BookLanguageNames中有一些字符串。加入BookLanguageBookLanguageNames以构建查询很简单,但如何应对AdditionalBookLanguages

enter image description here

+0

你想要返回什么数据?如果我们不知道你在找什么,我们就无能为力。 – sybkar

+0

我想获得这些书籍,它们在BookLanguageNames的Name列中有一些字符串,并且在AdditionalBookLanguages – Tony

+1

中也有(如果存在)什么是“BookLanguage”表中的“代码”列?有必要吗?为什么不在'BookLanguageNames'或'AdditionalBookLanguages'中? – GregD

回答

1

如何简化了数据库设计?有三个表BookBookLanguageName(两者相似的结构,以你的)和,而不是AdditionalBookLanguageBookLanguage有一个“查找表” - BookLanguage

  1. Book - 在这里你将所有有关书籍的信息。
  2. BookLanguage - 只有三列:BookID,BookLanguageID(或Code)和一个布尔is_additional。 BookID和BookLanguageID将是一个复合主键。
  3. Language - 在这里,您保留与特定语言相关的所有信息。

在这种情况下,写入查询会更容易。

+0

听起来很有趣,我会考虑这个选项。感谢您的想法! – Tony

+0

不客气,托尼!请稍后告诉我们您的最终解决方案。 – GregD