Sql 数据库中的预定义模板

Sql 数据库中的预定义模板,sql,tsql,Sql,Tsql,在数据库中,我有以下表: USERS Id Name PLAN_TYPES Id Name PLANS Id PlanTypeId UserId Name ACTIONS Id PlanId TakeActionTime Description 为用户创建计划后,应用程序会定期将操作添加到该计划中 在同样的情况下,不需要实时创建计划,而是会有一个计划模板,其类型和操作都是预定义的 将模板包括在数据库方案中的最佳方法是什么?您只需在计划表中添加一个位列,指示它是一个模板计划,当用户想要激活

在数据库中,我有以下表:

USERS
Id
Name

PLAN_TYPES
Id
Name

PLANS
Id
PlanTypeId
UserId
Name

ACTIONS
Id
PlanId
TakeActionTime
Description
为用户创建计划后,应用程序会定期将操作添加到该计划中

在同样的情况下,不需要实时创建计划,而是会有一个计划模板,其类型和操作都是预定义的


将模板包括在数据库方案中的最佳方法是什么?

您只需在
计划表中添加一个
列,指示它是一个模板计划,当用户想要激活它时,使用存储过程将其复制到新记录中。
这样,每个用户都可以定义自己的模板,并在需要时将其作为真实计划“激活”。您还可以使用“系统定义”模板,其中bit列将显示它是一个模板,但
userId
列将为空,因此每个用户都可以从中创建活动计划

因此,您的
计划
表最终如下所示:

PLANS
Id
PlanTypeId
UserId (nullable)
Name
IsTemplate (bit, you might want to set default to 1 or 0 here)

可能触发器是你最好的选择。也许我没有正确地解释自己。计划可以由应用程序实时生成,也可以使用用户创建的模板。那么,您计划如何区分模板计划和实际计划?显示示例记录和数据,以免我们误解您的意思。首次为用户创建计划时,它是空的。然后有两个选项:1-应用程序使用业务规则每天添加计划操作。2-创建计划时,会定义一些用户为其客户创建的预定义操作(模板)的来源。这些预先确定的行动每天都在计划中。你的建议似乎是一个可行的选择。。。我还添加了AuthorId,它在用户创建模板时不为null,在系统创建模板时为null。我只是再检查几件事。