通过表名显示表层次结构

时间:2012-10-04 14:12:30

标签: sql naming-conventions tablename

我正在为名为Project Billing的产品重新设计数据库。我在提供表名时遇到了麻烦。在旧的数据库中,名称是超级模糊的(PRB_PROJ_LVL),所以旧的没有帮助。数据库很小 - 大约10个表 - 但会随着时间的推移而增长。

这是问题 - Projects是一个实体(和表),但这个词也被用作一个adjetive。实施例

  • Project - 包含项目的表格。
  • ProjectTask - 包含项目任务的表格;这是Projects的孩子。
  • ProjectTemplate - 项目模板的表格,Projects的子项。项目模板只是用作创建一堆ProjectTasks
  • 的模型

那么,我如何证明ProjectTaskProject的孩子而ProjectTemplate不是?一如既往地谢谢。

1 个答案:

答案 0 :(得分:2)

架构的内部文档及其预期用途是执行此操作的更好方法之一。仅依靠命名约定将始终保留解释的可能性 - 明确的定义不会这样做。也就是说,我们已经定义了一些旨在用作模型的对象(在您的情况下为模板)。这些模型对象不会被生产应用程序使用或直接操作,并且随着时间的推移,新对象基于修改的模型是可变的。我们尝试应用自描述性的一种方法是引入模式。由于我们有不同的部门可以使用相同的模型对象,我们有一些类似的东西(调整为适用于你的问题而不假设太多):

[dept_X]。[项目]

[dept_X]。[project_tasks]

对于模板,应用程序或用户从不直接使用(按照说法):

[模型]。[项目]

[模型]。[project_tasks]

作为我们开发人员的编程参考,模式定义脚本包含描述对象关系的文档(对象通过外键在内部执行等)。作为一项附加措施,将为按项目排序的所有新对象生成Wiki文章。在这个新系统(我的入职)之前存在的对象在被修改时或在时间允许的情况下得到记录。