【问题标题】:How to create a foreign key to multiple tables? [duplicate]如何为多个表创建外键? [复制]
【发布时间】:2018-09-27 20:00:54
【问题描述】:

我想存储类似于 Google Drive 的文件结构。我可以创建多种类型的文件(文档、电子表格、..)。每个文件的详细信息都存储在它们的表中。

例如:

File [id, name, file_id]
Doc [file_id, title, a, b, c]
Spreadsheet [file_id, title, d, e]

怎么做才对?

【问题讨论】:

  • 根据您提供的结构,您可以使用2个表:FileType[Id, Name] File[Id, FileTypeId, Title, FileData]
  • 是的,但我需要为每个 FileType 提供不同的属性。
  • 那么这个结构有什么问题呢?
  • 从问题看来,您希望使用从文件到文档/电子表格的外键进行引用。如果是这种情况,解决方案是将 Doc 和 Spreadsheet 中的 file_id 声明为主键以及引用 File 表的外键。

标签: sql database graphql


【解决方案1】:

文件

[id, name, file_id]

Doc_type最终成为一个类别列表

[file_id、标题、扩展名、]

然后以Doc_type为例:

|file_id | title | extension|
|0001    | Word  | DOCX     |
|0002    | Excel | XLSX     |

【讨论】:

    【解决方案2】:

    外键不是这样工作的。您需要 File.id 作为主键,然后将 File.id 添加到其他每个表中,并让每个表都有 File.id 的外键。实际上,创建一个 File 实例,然后创建一个 Doc 或 Spreadsheet 并将其链接到 File 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2021-08-19
      • 2015-05-09
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多