用于向列添加注释的数据库设计模式

时间:2010-07-22 10:51:37

标签: database-design design-patterns hsqldb

我正在设计一个新的DataBase,目前有50个表。对于许多表,我必须最终为每个元组的每一列存储“注释”。 目前我只找到了两个解决方案:

  1. 对于需要注释的每一列表,添加“列注释”,例如:

    create table tab (id integer, A varchar(100), B varchar(200))
    

    将成为:

    create table tab (id integer, A varchar(100), A_note varchar(300), B varchar(200), B_note varchar(300))
    
  2. 添加表注意存储注释......就像那样:

    create table notes (id integer, table_name varchar(100), reference_id integer, reference_column varchar(100), note varchar(300)
    
  3. 你可以建议我其他方法吗? 如果您感兴趣我正在使用HsqlDB。

4 个答案:

答案 0 :(得分:2)

这很大程度上取决于你的笔记是多么稀疏,如果它们偶尔散布在所有表格中,那么一个好的解决方案是让一个表格包含通过表格和字段名称的组合对它们进行索引的笔记。

这会将对架构的注释添加到仅需要维护的一个表中而无需触摸原件。您可以对table和fieldname列使用约束来限制哪些可以有注释。

我已经非常成功地实现了一种变体,可以将类型化的标签添加到大型会计系统中。

如果单个表格令人反感,请考虑将该模式应用于表格集群。

单个Notes表的一大优势是,您可以使用一个表来搜索人们是否按注释内容查找。当人们将注释放在错误的位置时,这非常有用。

<强>扩展

我认为要求是每列一个注意。

如果要为列中的奇数个别行值偶尔存储可选的注释(或标记)(即:附加注释的Excel模型),那么通过为您添加常规整数键来扩展我的模型行。这实际上是我第一次使用的模型。我简化了答案,但随后意识到这些要求可能会产生误导。

答案 1 :(得分:1)

是的,单独的表是要走的路。

我会为每个实际表做一个像cmnt_table或notes_table这样的注释表。拥有与主表相同的id,并且可以很容易地在查询中进行连接。

答案 2 :(得分:1)

您应该将额外数据存储在同一个表中。这是一对一的关系,你不会从分裂它们中获益,只有复杂性。

答案 3 :(得分:1)