0

提前感谢您对以下系统的数据库设计的任何想法。

我需要根据一些消息模板和参数列表自动生成一些消息,例如你好{0},你有没有以下{3}中的{1}、{2}?

{0}、{1}、{2}、{3} 都属于不同的数据类型,分别位于不同的表中。{0} 可能是来自用户表的名称,{1} {2} 可能来自项目表,而 {3} 可能来自其他表。

我需要存储所有的消息格式和带有填充参数的完整消息,这似乎并不容易。我正在考虑以下表格。有没有更好的想法?谢谢!

Message_Format
===================================================================================
msgFormatID   int
bodyFormat    varchar  e.g. "Do you have any of the following, {0}, {1}, {2} in {3}?"


Message_Details
======================
msgFormatID        int  
dataIndex          int
specificTableName  varchar => the table name of specific table corresponds to {0},{1}... e.g. User_Table
specificTypeName   varchar => the column name of specific field, e.g. firstName in User_Table
specificTypeID     int     => the id used to query the table, e.g. userID
4

1 回答 1

0

总体而言,它看起来是一个合理的设计,但我认为您还需要从源数据表中识别列和行。您通过 Message_Details 进行的映射将需要一个 specificColumnName。然后你可以select specificColumnName from specificTableName,但你仍然需要一种方法来选择你需要的行,但这可能需要来自你使用模板时的“环境”?在您的示例中,您将使用模板来确定 {0} 来自 specificColumnName "userName" 和 specificTableName "users" 并知道这是 specificTypeID 1=string(假设这是什么类型),但是哪个用户?

于 2013-07-07T18:12:05.727 回答