0

我在设计数据库时遇到问题。

我有一个表,其中包含具有以下表结构的文档:

[Documents]
Id [int] 
FileName [varchar]
FileFormat [varchar]
FileContent [image]

在我的程序中:每个文档都可以是独立的(与实体没有任何关系)或与客户或员工类型的对象有关系(可能即将推出更多)

每个实体在数据库中都有一个 ID。例如,Employee-Table 看起来像:

[Employee]
Id [int]
Fk_NameId [int]
Fk_AddressId [int]
Fk_ContactId [int]

我的想法是为实体和文档的连接创建一个表。我想到了类似的东西:

[DocumentConnection]
DocumentId [int]
EntityId [int]
Entity [varchar]

DocumentConnection-Table 中的实体列包含关系的表名。

在 Employee 类型的实体示例中,该列将包含“Employee”。然后在我的应用程序中,我通过从数据库中读取实体字符串来为文档构建选择语句。

我不确定这是否是一个好方法。

4

1 回答 1

2

我认为拥有 EmployeeDocument 表、CustomerDocument 表等会是一个更好的设计。

这将允许您使用实体表的外键,这在您提议的设计中是不可能的。在您的设计中,您可以在 entity 和 entityId 列中放置任何内容,并且无法通过与现有实体实际相关的外键关系强制执行。

我可以看到使用您的 DocumentConnection 表的唯一原因是您的应用程序是否需要动态创建新类型的关系。我认为情况并非如此,因为您说过每种类型的实体都有自己的表。

于 2013-04-25T15:59:17.527 回答