小编R K*_*lev的帖子

外键取决于列内容 - 如何确保完整性?

简短介绍 - 数据背后的逻辑

我正在研究一个存储实验数据(拉曼光谱)及其元数据的PostgreSQL数据库.除了我们的样品的"正常"光谱之外,还必须获取并保存用于仪器校准目的的特殊光谱.

每次我进行实验时,我都会在表中创建一条新记录measurements,在此我指定measurement type相应的元数据(其他表的外键).

问题是,元数据类型的不同取决于measurement type:

  1. 样品测量 - 我们必须sample_id从表中存储samples
  2. 标准物质 - 在这种情况下,我们指定表中的物质 substances
  3. source_id必须提供特殊标准化光源
  4. 暗帧 - 简单,不需要来自其他表的数据

样品,物质光源具有完全不同的属性,因此我们必须将它们保存在单独的表中,measurements通过外键链接到表中.我认为我的数据在这里有多态关系(如果我错了,请纠正我).

问题

在当前设计中,存储在列measurementtype_id(突出显示为红色)中的值定义必须NULL编辑哪些外键(突出显示为黄色)以及哪些必须包含值.

表关系

在此输入图像描述

我很确定这个设计违反了第三种常规形式.我们可以有一个场景,当错误类型的元数据与测量相关联时.如何确保数据完整性?不幸的是,到目前为止我找不到合理的解决方案......

database-design entity-relationship foreign-keys relationship database-normalization

5
推荐指数
1
解决办法
89
查看次数

句点后Python的烦人的Sublime Text自动补全功能(`self`关键字)

我正在使用sublime text 3进行python开发。输入时,我已启用自动补全功能。我希望,当我键入一个对象名称后跟一个句点时,将弹出一个对象的方法/属性列表。不会发生,所以我按Tab

import time
time.[TAB]
Run Code Online (Sandbox Code Playgroud)

现在发生了什么,简直是不可思议!.被替换self.,所以我最终得到

import time
timeself.
Run Code Online (Sandbox Code Playgroud)

我一直在寻找在所有的设置文件,我想包python completionscode intelcode complice,但他们没有禁止这种“特性”,这让我发疯!

最后,我找到了Jedi软件包,它为文本编辑器解决了此问题。但是我仍然在解释器窗口(package SublimeREPL)中遇到问题。顺便说一句,如果我同时安装Jedicode complice,则REPL中的自动补全似乎效果更好,但是它提供了一些无关紧要的废话,例如%%!%%HTML。是的,如果我按两次[TAB],我仍然会得到timeself.而不是time.

有人知道发生了什么吗?.-> self.行为来自何处?如何禁用%%!东西?

python autocomplete sublimerepl sublimetext3

4
推荐指数
1
解决办法
1408
查看次数

带有倒数计时器的 PyQt4 QMessageBox

我编写了一个用于实验室测量的 Python 应用程序,它通过不稳定的网络连接将数据保存到远程数据库中。当连接中断时,会弹出一个问题(我使用QMessageBox.question),询问用户是重复上次交易还是取消交易。

最近修改了应用程序以在夜间自主进行自动测量。不再有操作员点击默认选项“重试”!它应该在一段时间超时后自动选择,仍然让用户有机会做出其他选择。

在此处输入图片说明

这意味着,如果用户没有做出任何其他选择,我需要一个 QMessageBox 版本,它在超时过后单击默认按钮。

类似的问题,但它是C++特定的。

python user-interface pyqt4

1
推荐指数
1
解决办法
1012
查看次数