什么是信息完整性?

什么是信息完整性? 说白了,信息完整性就是保证数据在传输或存储过程中不被篡改、丢失或损坏,保证接收方收到的原始信息没有发生变化。

展开: 首先,我们来说说最重要的事情。
去年我们跑的电商项目中,用户抱怨订单量随机增加。
后来调查发现,中间人在支付接口的传输过程中操纵了几个字节——这是典型的完整性违规行为。
还有一点是,在迁移3 000条左右的数据时,没有验证机制。
结果,数百条记录丢失了关联的 ID,导致下游系统瘫痪。
还有另一个关键细节。
例如,如果银行转账中仅更改了最后一位数字(例如,1 000 更改为 1 001 ),则整个交易将无效。
为此,需要从底层协议(如TLS)到应用层(如MD5 验证)逐层加固。

思想痕迹: 一开始我以为诚信是为了防止黑客入侵,后来发现不对劲。
像数据库SQL注入、恶意修改文件等都属于完整性违规,但场景完全不同。
等等,还有别的事。
很多团队都犯了错误。
他们使用CRC3 2 进行检查,发现两个不同的文件可能具有相同的哈希值。
为此,银行级验证采用SHA-2 5 6 这种防冲突算法。

结束: 建议您不要只关注加密算法。
数据传输和存储的路径保护同样重要。
例如,为关键文件添加数字签名,并记得定期进行数据备份和审计。

主键和外键关系是必须的吗?

记得有一次,我在一个项目中负责设计数据库。
当时,该项目的工期很紧。
团队程序员小张建议,我们可以直接用代码来控制数据的唯一性和完整性,而不需要使用主外键。
当时我正在喝咖啡,听到他说的话,我差点就泼了水。

我们的项目专为在线学习而设计,配有学生表、课程表和订单表。
这些表之间的关系复杂,数据量大。
小张说,我们可以编写应用级代码来验证数据,消除表之间的关系,提高搜索效率。
我接着反驳:你确定你的代码能比数据库约束机制更可靠吗?
我给他举了一个例子。
例如,学生表的主键是学号。
每个学生都有一个唯一的学生ID,这在数据库层面得到保证。
如果我们不使用主键,我们将不得不在代码中编写大量逻辑来确保学号是唯一的。
如果代码中出现错误,后果将是灾难性的。

后来我们坚持使用主键和外键。
项目上线后,数据一致性和查询效率得到保证。
虽然小张一开始不太理解,但后来他承认数据库级别的限制确实比代码控制更可靠。

等等,我突然想到,如果我们当时没有坚持使用主外键,现在这个数据库会是什么样子?

powerdesigner免费吗

这个软件可以免费破解,功能非常强大。
简单来说,PowerDesign是Sybase的数据库设计工具。
该数据库的设计分为两个阶段:概念模型和物理模型。
下发表配置脚本;选择数据库;点击生成数据库;填写表名。
如果要导出模型文档,则使用报表;选择模板并创建 RTF 或 HTM 文档。
导入现有的数据库表;选择文件,逆向工程。
概念模型CDM描述逻辑结构,物理模型PDM描述物理实现。
面向对象模型 OOM 是软件系统的静态模型。
业务编程模型 BPM 描述了业务流程。
正向工程可以生成数据库或脚本;逆向工程可以将现有数据库导入到 PDM 中。
不一定用于小型项目或表较少的项目,但建议用于大型项目。
设计时注重范式。
设计完CDM后,切换到PDM时要注意限制。
PD可以创建视图;更新表结构;生成并存储测试数据可以写程序。
逆向工程支持数据库脚本或 ODBC 数据源。
自己看看这些功能还是蛮有用的。