我正在为名为Project Billing的产品重新设计数据库。我在提供表名时遇到了麻烦。在旧的数据库中,名称是超级模糊的(PRB_PROJ_LVL
),所以旧的没有帮助。数据库很小 - 大约10个表 - 但会随着时间的推移而增长。
这是问题 - Projects
是一个实体(和表),但这个词也被用作一个adjetive。实施例
Project
- 包含项目的表格。ProjectTask
- 包含项目任务的表格;这是Projects
的孩子。ProjectTemplate
- 项目模板的表格,不是Projects
的子项。项目模板只是用作创建一堆ProjectTasks
。那么,我如何证明ProjectTask
是Project
的孩子而ProjectTemplate
不是?一如既往地谢谢。
答案 0 :(得分:2)
架构的内部文档及其预期用途是执行此操作的更好方法之一。仅依靠命名约定将始终保留解释的可能性 - 明确的定义不会这样做。也就是说,我们已经定义了一些旨在用作模型的对象(在您的情况下为模板)。这些模型对象不会被生产应用程序使用或直接操作,并且随着时间的推移,新对象基于修改的模型是可变的。我们尝试应用自描述性的一种方法是引入模式。由于我们有不同的部门可以使用相同的模型对象,我们有一些类似的东西(调整为适用于你的问题而不假设太多):
[dept_X]。[项目]
[dept_X]。[project_tasks]
对于模板,应用程序或用户从不直接使用(按照说法):
[模型]。[项目]
[模型]。[project_tasks]
作为我们开发人员的编程参考,模式定义脚本包含描述对象关系的文档(对象通过外键在内部执行等)。作为一项附加措施,将为按项目排序的所有新对象生成Wiki文章。在这个新系统(我的入职)之前存在的对象在被修改时或在时间允许的情况下得到记录。