0

我有一个带有实体“语言”的基于文档的核心数据应用程序。这个实体有两个永久属性“key”和“comments”。是否可以在运行时以编程方式添加和删除其他属性(“language_1”、“language_2”等)?

我的目标是避免在用户只需要很少的情况下创建带有 50 个属性的表(我不知道需要多少属性)。

或者也许我应该选择其他解决方案?:)

编辑

案例说明:当用户创建新文档时,表“语言”只有“键”和“评论”两个属性。在使用文档期间,用户可以随时添加或删除语言 - 我的意思是属性(列)而不是表中的行。

我的目标是拥有像下面这样的动态实体。

数据库解释

数据结构

4

1 回答 1

0

是的,这是可能的。但这可能不是你想要的。无论何时打开文档,您都必须在运行时为每个文档重新创建修改后的托管对象模型。

看到你的草图后,我建议一个稍微不同的模型。顺便说一句,最好的风格是对实体使用单数名词(“Section”,而不是“Sections”),对多关系使用复数名词(“sections”,而不是“relSection”),并在其属性中省略实体名称( “评论”,而不是“部分评论”)。

使用一个实体作为您的永久属性。称之为“字”。Word 具有属性“comments”和“key”,以及对多关系“translations”和“sections”。在“翻译”关系的另一端是一个翻译实体,它具有属性“文本”,也可能是语言的名称(作为字符串或作为另一个关系)。

像这样的东西:

数据模型

对于您的第一个示例,您将有一个 Word 实例、3 个 Translation 实例(.text = Home、Zuhause 和 Casa)和 3 个 Language 实例(.name = 英语、德语、西班牙语)。添加第二行时,您将获得 1 个 Word 实例、3 个 Translation 实例,但又获得 0 个 Languages。而是将新的翻译实例添加到现有语言的“翻译”关系中。

于 2017-02-12T21:50:53.027 回答