0

背景:用于个人学习目的的简单 webapp 游戏,使用 postgres。我可以随心所欲地设计它。

2 个表 1 个视图(还有其他不重要的表视图参考​​)

Table: Research
col: research_id (foreign key to an outside table)
col: category (integer foreign key to category table)
col: percent (integer)
constraint (unique combination of the three columns)

Table: Category
col: category_id (primary key auto inc)
col: name(varchar(255))

注意:此表的存在是为了捕获我想要在业务逻辑中进行的 4 类研究,我认为这不是硬编码为数据库中的列的最佳实践

View: Research_view
col: research_id (from research table)
col: foo1 (one of the categories from category table)
col: foo2 (etc...)
col: other cols from other joins

注释:具有适当使用上述表格的插入/更新/删除语句

我担心的研究表本身可以称为“瘦表”(直到我在 Ibatis 人员手册中看到它才听说过这个词)。例如,其中的测试数据如下所示:
| research_id | percent | category |
| 1 | 25 | 1 |
| 1 | 25 | 2 |
| 1 | 25 | 3 |
| 1 | 25 | 4 |
| 2 | 20 | 1 |
| 2 | 30 | 2 |
| 2 | 25 | 3 |
| 2 | 25 | 4 |

1)让表中的所有列共同定义唯一条目是否有意义?
2)这对你来说有“味道”吗?

4

1 回答 1

1

几个注意事项开始:

约束(三列的唯一组合)

拥有包含单列主键的唯一约束是没有意义的。包括该列将导致每一行都是唯一的。

notes: this table exists to capture the 4 categories of research I want in business logic and which I assume is not best practice to hardcode as columns in the db

如果要求研究项目/实体定义所有四个类别以使其有效,则它们绝对应该是研究表中的列。我无法从您的陈述中明确判断是否是这种情况,但如果单独来看,您的假设是错误的。让您的模型尽可能地反映现实。

另一个因素是是否需要在部署后将其他类别添加到系统中。类别是否旨在灵活与固定应该绝对影响设计。

1)让表中的所有列共同定义唯一条目是否有意义?

我会说这并不常见,但可以想象在某些情况下它可能是合适的。

2)这对你来说有“味道”吗?

没有更多细节很难说。

综上所述,如果目的是查看和添加所有四个类别的研究项目,我会说(再次)您应该考虑这四个类别是否是研究实体的语义属性。

作为一个随机的例子,身高和体重之类的东西可能会被视为一个人的类别,但它们可能会平放在 person 表上,而不是单独的表中。

于 2013-11-09T21:43:49.697 回答