数据库设计 - 存储模板和实例的最佳方式

Ano*_*us1 3 mysql database-design

我们的数据库需要有模板,例如,有一个会议模板,其中包含参加会议的特定人群以及基本会议名称。然后可以“实例化”会议,以便您可以制作该会议的副本并修改属性。我能想到的最好的方法是:

  1. 将“实例”存储在同一张表中,并类似地存储相关信息。
  2. 制作具有相同属性的不同表,并将模板存储在一个表中,将“实例”存储在另一个表中。

And*_*ite 5

我会将模板存储在一个单独的表中,该表反映了实例表中的必要列。这样,在查找特定类型的数据时,您无需在任何地方放置特殊逻辑来过滤掉一种或另一种类型(模板或实例)。如果将来需要,将模板放在另一个表中将允许您向模板添加更多元数据。


Nik*_*mov 1

如何使用一个表,但向表中添加一个诸如“isTemplate”之类的标志字段,该字段将用于将记录标识为默认记录或“模板”记录。

您创建一个具有默认参数的新记录,并将 isTemplate 设置为“1”或 TRUE 或 YES 或其他。

创建新会议时,只需创建模板的副本,如下所示:

INSERT INTO meetings(place,people,time)
(SELECT place,people,time FROM meetings WHERE isTemplate = '1')
Run Code Online (Sandbox Code Playgroud)

如果您有多个模板,那么您将获得可用模板的列表,如下所示:

SELECT * FROM meetings WHERE isTemplate = '1'
Run Code Online (Sandbox Code Playgroud)

然后通过主键而不是“isTemplate”实例化这些模板之一:

INSERT INTO meetings(place,people,time)
(SELECT place,people,time FROM meetings WHERE ID = 'xxxx')
Run Code Online (Sandbox Code Playgroud)