【问题标题】:what is the best approach to store keywords inside database, language agnostic将关键字存储在数据库中的最佳方法是什么,与语言无关
【发布时间】:2013-09-22 03:03:22
【问题描述】:

我的问题标题不言自明。

我知道这个主题没有确切的答案,因为它取决于许多主题,但是如果您有时间分享想法和想法,您将如何收集关键字,请将它们存储到数据库中。伪代码就可以了,或者简单的英文。

这就是我的想法

从用户那里收集关键字

用户使用某种形式(网络或桌面)输入并将它们发送到数据库。

txtKeyword1 = "one"; txtKeyword2 = "two"; txtKeyword3= "three";

关键字在数据库中的表示方式

TEXT 字段包含"one two three"

问题 通过使用这种方法,当我想显示彼此分开的关键字时,我遇到了问题。我想用','(逗号)分隔每个单词,但是如果关键字有多个单词怎么办?

我应该在 viewmodel 中再使用一个属性来将分隔的关键字表示为List<string>Keywords 属性(一旦我提供了如何分隔它们的解决方案),还是应该将此属性直接存储在域对象中。

请分享你的想法。

谢谢

如果您需要更多信息,请询问。

【问题讨论】:

  • 你有什么问题?
  • 如何在数据库中存储关键字
  • 带有varchar 列的表?我不知道你在说什么。
  • 即使遵循逻辑设计的规范化和物理设计的非规范化过程 - 也应避免数据库字段中的多个值:en.wikipedia.org/wiki/First_normal_form
  • 自我解释?为什么不告诉我们所有必需的信息?例如,每个条目将有多少个关键字真的很重要。会一直是三个吗?会达到三个吗?会是一百,一千 - 没有限制?

标签: c# java .net database-design language-agnostic


【解决方案1】:

听起来您希望记录和关键字之间存在一对多的关系。最好使用三个表来实现:

第一个表应该有记录,并且没有引用关键字。

第二个表应该只是单个关键字。

最终表是一个查找表。对于记录所具有的每个关键字,该表都有一个关键字索引条目和一个关键字索引。

【讨论】:

  • 这是最好的解决方案,尤其是在交叉引用很重要的情况下。
  • 所以当从 ddd 的角度来看这个关键字将是一个组件,因为我不需要通过它的身份来跟踪关键字,对吧?
  • ddd 透视关键字?你想说什么?
  • 如果我在 DDD 中正确理解了建议的解决方案,请说:记录和关键字表将是实体,而查找表将是聚合表。
猜你喜欢
  • 2016-08-09
  • 2012-05-11
  • 1970-01-01
  • 2020-02-03
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 2010-11-12
相关资源
最近更新 更多