我的问题是以下数据库/应用程序设计的最佳实践是什么?
我使用 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 个实体人和组。现在我想为每个添加标签以根据业务逻辑过滤数据。有几种方法可以解决它:
- 对具有类型列的任何表具有“假”FK 引用的单独“ObjectLabel”表。这可能是不好的做法,但可以简化代码实现并提供更大的灵活性。
- 每个实体上的字符串列以保存例如逗号分隔的标签列表。简单数据库的好处,但当数据扩展时会变慢。
- 单独的表,即“PersonLabel”、“GroupLabel”等,以保持参考完整性以便快速查找,但似乎是多余的,需要更多的工作。
现在我想要一些关于哪种方法最好的建议,为什么?