0

我的问题是以下数据库/应用程序设计的最佳实践是什么?

我使用 Code First Entity Framework 和 .Net MVC 5。我想在不同的实体上实现一些通用功能。例如,考虑以下简化示例:

class Person{
 int PersonId;
 string name;
}

class Member{
 int PersonId;
 int GroupId;
}

class Group{
 int GroupId;
 string name;
}

class Label{
 string name;
}

因此,具有多对多关系的 2 个实体人和组。现在我想为每个添加标签以根据业务逻辑过滤数据。有几种方法可以解决它:

  1. 对具有类型列的任何表具有“假”FK 引用的单独“ObjectLabel”表。这可能是不好的做法,但可以简化代码实现并提供更大的灵活性。
  2. 每个实体上的字符串列以保存例如逗号分隔的标签列表。简单数据库的好处,但当数据扩展时会变慢。
  3. 单独的表,即“PersonLabel”、“GroupLabel”等,以保持参考完整性以便快速查找,但似乎是多余的,需要更多的工作。

现在我想要一些关于哪种方法最好的建议,为什么?

4

1 回答 1

1

根据标签是什么以及它们需要多么动态,您可以考虑使用 Enum 标志。这仍然只需要每个表一列,并且肯定会比在列中使用逗号分隔列表更好地扩展。

您可以在此处此处查看如何执行此操作的示例。

于 2015-10-22T15:30:09.177 回答