对于具有两列主键(其中任一列是可选的)的数据库表,最佳实践是什么?

拉里·弗里曼(Larry Freeman)

在工作中,正在查看一个由三列组成的表:

  1. 行ID(非空,整数)
  2. 上下文ID(非空,整数)
  3. 值(非空,可变字符)

行的总数很小(少于100)。如果没有上下文ID,则当前将上下文ID设置为0。上下文ID是可选的。

主键是(行ID,上下文ID)

在这种情况下,提出了两种选择:

  1. 保持原样

  2. 将表分为两个表。当上下文ID为0(行ID,值)时,一张表;当上下文ID为值(行ID,上下文ID,值)时,一张表。

如果有很多行,那么我同意拆分表的决定。如果行数很少,则将表划分似乎有点过头了。

我会很感兴趣在这种情况下人们会推荐什么?总是将单个表分成两个表更好吗?

谢谢,

-拉里

WW。

首先,如果这是实体属性值反模式,请避免这种情况。该答案的其余部分假定不是。

在确定是否要对通用对象(单个表)或特定对象(两个表)进行建模时,需要考虑代码是否能够通用处理或需要特殊情况。

是否需要特殊情况?

您的代码将对ContextId给予特殊对待吗0?例如,您可以运行一个selectWHERE ContextId=0然后继续以通用方式查看不同的上下文吗?您是否只有特殊的逻辑ContextId=0您是否需要在代码中使用一个特殊的常量来表示此contextId?这个常数会出现在某些if语句中吗?

如果对这些问题的回答通常为是,则创建单独的表。如果将它们放在不同的表中,则不会从中得到好处。

我猜这是基于您的问题的情况。

还是全部通用?

如果将ContextId零与整个代码中的所有其他上下文ID一样对待,则必须将其与其他代码放在同一张表中。

权衡

如果事情不是那么明确,则您需要做出权衡的决定。您将需要根据此信息的使用量是通用的还是特定的来进行此操作。我会偏向于创建两个表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我想在具有单个主键的一列中插入数据库中的多个数据

来自分类Dev

从具有链接表的ms-access数据库中选择一列

来自分类Dev

删除熊猫数据框中所有元素的最佳方法是什么?其中一列中的值在另一列中存在多次。

来自分类Dev

绘制两列数据,其中一列在 ggplot 中具有反向 y 比例

来自分类Dev

postgresql是将特定表从数据库中的特定列导出到另一个数据库的最佳方法是什么

来自分类Dev

连接/断开数据库的最佳实践是什么?

来自分类Dev

生产数据库架构更新的最佳实践是什么?

来自分类Dev

连接到SQL数据库的最佳实践是什么?

来自分类Dev

Laravel数据库日志-最佳实践是什么

来自分类Dev

连接到SQL数据库的最佳实践是什么?

来自分类Dev

具有多个相似实体的数据库最佳实践

来自分类Dev

具有数据库的离线工具的最佳实践

来自分类Dev

在云中为asp.net MVC应用程序使用枚举或数据库查找表或同时使用两者的最佳实践/设计决定是什么?

来自分类Dev

表的一列(主键)的两行是否可能具有相同的字符/值和相同的外键(另一列)

来自分类Dev

具有两列的表,其中一列顺序增加,而另一列显示相同的数字,直到达到限制

来自分类Dev

为表设计数据库,该表可以具有多个可选列和依赖项

来自分类Dev

SQLite:如何向数据库中的所有表添加一列?

来自分类Dev

在Oracle数据库中从联接查询结果为每一行更新一列的最有效方法是什么?

来自分类Dev

创建一个别名虚拟列,其中包含两列中任一列的值

来自分类Dev

从两个单独的数据库表中选择值的最佳查询是什么?

来自分类Dev

对于具有简单数据库的Debian系统,适当的备份策略是什么?

来自分类Dev

什么是数据库连接的最佳实践

来自分类Dev

如何为一列设计具有一对一或一对多关系的数据库?

来自分类Dev

如何为一列设计具有一对一或一对多关系的数据库?

来自分类Dev

使HTML具有相等高度的两列,其中一列可滚动

来自分类Dev

当其中一列为NULL /空白时,SQL Join具有两列

来自分类Dev

从具有一对多关系的两个表中获取数据的最佳方法是什么?

来自分类Dev

什么是在MySQL中管理具有大量列的数据库表的机制?

来自分类Dev

创建具有一列的数据透视表?

Related 相关文章

  1. 1

    我想在具有单个主键的一列中插入数据库中的多个数据

  2. 2

    从具有链接表的ms-access数据库中选择一列

  3. 3

    删除熊猫数据框中所有元素的最佳方法是什么?其中一列中的值在另一列中存在多次。

  4. 4

    绘制两列数据,其中一列在 ggplot 中具有反向 y 比例

  5. 5

    postgresql是将特定表从数据库中的特定列导出到另一个数据库的最佳方法是什么

  6. 6

    连接/断开数据库的最佳实践是什么?

  7. 7

    生产数据库架构更新的最佳实践是什么?

  8. 8

    连接到SQL数据库的最佳实践是什么?

  9. 9

    Laravel数据库日志-最佳实践是什么

  10. 10

    连接到SQL数据库的最佳实践是什么?

  11. 11

    具有多个相似实体的数据库最佳实践

  12. 12

    具有数据库的离线工具的最佳实践

  13. 13

    在云中为asp.net MVC应用程序使用枚举或数据库查找表或同时使用两者的最佳实践/设计决定是什么?

  14. 14

    表的一列(主键)的两行是否可能具有相同的字符/值和相同的外键(另一列)

  15. 15

    具有两列的表,其中一列顺序增加,而另一列显示相同的数字,直到达到限制

  16. 16

    为表设计数据库,该表可以具有多个可选列和依赖项

  17. 17

    SQLite:如何向数据库中的所有表添加一列?

  18. 18

    在Oracle数据库中从联接查询结果为每一行更新一列的最有效方法是什么?

  19. 19

    创建一个别名虚拟列,其中包含两列中任一列的值

  20. 20

    从两个单独的数据库表中选择值的最佳查询是什么?

  21. 21

    对于具有简单数据库的Debian系统,适当的备份策略是什么?

  22. 22

    什么是数据库连接的最佳实践

  23. 23

    如何为一列设计具有一对一或一对多关系的数据库?

  24. 24

    如何为一列设计具有一对一或一对多关系的数据库?

  25. 25

    使HTML具有相等高度的两列,其中一列可滚动

  26. 26

    当其中一列为NULL /空白时,SQL Join具有两列

  27. 27

    从具有一对多关系的两个表中获取数据的最佳方法是什么?

  28. 28

    什么是在MySQL中管理具有大量列的数据库表的机制?

  29. 29

    创建具有一列的数据透视表?

热门标签

归档