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

时间:2011-02-17 20:10:32

标签: mysql database-design

我们的数据库要求拥有模板,例如,具有参加会议的特定人群的会议模板以及基本会议名称。然后可以“实例化”会议,以便您可以复制该会议并修改属性。我能想到的最佳方法是:

  1. 将“实例”存储在同一个表中,并以类似方式存储相关信息。
  2. 使用相同的属性创建不同的表,并将模板存储在一个表中,将“实例”存储在另一个表中。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

如何使用一个表,但添加一个标记字段,如" isTemplate"到表中,用于将记录标识为默认记录或模板'记录。

您创建一个具有默认参数的新记录,并将isTemplate设置为" 1"或者是或是或等等。

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

INSERT INTO meetings(place,people,time)
(SELECT place,people,time FROM meetings WHERE isTemplate = '1')

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

SELECT * FROM meetings WHERE isTemplate = '1'

然后通过主键实例化其中一个模板而不是' isTemplate':

INSERT INTO meetings(place,people,time)
(SELECT place,people,time FROM meetings WHERE ID = 'xxxx')