我在设计数据库时遇到问题。
我有一个表格,其中包含具有以下表格结构的文档:
[Documents]
Id [int]
FileName [varchar]
FileFormat [varchar]
FileContent [image]
在我的程序中:每个文档可以是独立的(与实体没有任何关系),也可以是与Customer或Employee类型的对象的关系(可能很快就会出现)
每个实体在数据库中都有一个Id。例如,Employee-Table看起来像:
[Employee]
Id [int]
Fk_NameId [int]
Fk_AddressId [int]
Fk_ContactId [int]
我的想法是为实体和文档的连接创建一个表。我想到了类似的东西:
[DocumentConnection]
DocumentId [int]
EntityId [int]
Entity [varchar]
DocumentConnection-Table中的entity-column包含关系的表名。
在Employee类型的实体示例中,此列将包含“Employee”。 在我的应用程序中,然后通过从数据库中读取实体字符串来为文档构建select语句。
我不确定这是否是一种很好的方法。
答案 0 :(得分:2)
我认为拥有一个EmployeeDocument表,CustomerDocument表等是一个更好的设计。
这将允许您使用外键到实体表,这在您提出的设计中是不可能的。在您的设计中,您可以在entity和entityId列中放置任何内容,并且它不能通过外键关系强制执行,它实际上与现有实体相关。
我可以看到使用DocumentConnection表的唯一原因是您的应用程序需要动态创建新类型的关系。我认为情况并非如此,因为你说每种类型的实体都有自己的表。