2017-02-14 44 views
0

我需要一个表Attachments,对于其他一些表,如NotesProjects(+更多)的存储数据具有以下属性:Sqlite什么是正确的方式来创建一个表保存多个表的数据?

  • 任何其他表可以有许多附件
  • 我经常需要找到另一个表的特定条目所有附件(在该表的主键)

我已经看到了在其他的答案,以类似的问题,它是最好创建附件表,然后表像NotesAttachmentsProjectsAttachments等,附件,注释和项目ID作为外键。但那看起来像是对我的复杂的过度工程。

如何直接存储表名称本身作为Attachments中的TEXT列,并使用该名称在我需要它时查找一个表的附件?所以基本上计划是查询(TableName,ForeignID)以获得表TableName中的整数ID为ForeignID的所有附件。

这是有问题的,如果是这样,为什么?

回答

1

附件表现在有一个由两列组成的主键;这意味着所有查找都会搜索这两列,并且您需要一个两列索引才能使这些搜索更高效。 但多列键是SQL数据库中的一个常见功能,并且非常好。

您可以优化TableName列以存储短值,例如单个字符或数字。但是,除非您拥有非常大量的数据,否则差异可能不明显。

(如果您可以确保Notes/Projects/etc使用在所有这些表上唯一的主键,那么您可能可以避免存储表名。)

相关问题