知识卡片

原理优于产品:关系模型知识的可迁移性

普通读书笔记卡

内容

学习具体产品的知识和学习底层原理的知识,回报周期完全不同——原理具有普适性和稳定性, 产品和技术(包括SQL语言本身)却在持续变化。如果一个人只懂某个具体数据库产品(比如 只懂Oracle的用法),这份知识未必能迁移到DB2或SQL Server环境,甚至可能因为形成了 产品特定的思维定式而阻碍在新环境里的进步;但如果懂得底层的关系模型原理,这份知识 可以应用到任何具体环境,不会因为换了产品或版本就过时。这不意味着现实中永远不能为 性能等实用原因偏离理论上最优的写法——完全可以妥协,但妥协应该遵循三条纪律:一是 在决定妥协时清楚自己在做什么;二是知道理论上正确的做法是什么,偏离它需要有足够 有力的理由;三是把这些理由记录下来,以便将来这些理由不再成立时(比如换了新版本 产品、缺陷被修复了)能够撤销这次妥协。这条原则的价值在于把”图省事的偏离”和”知情 的权衡”区分开来——前者是纯粹的技术债,后者是可追溯、可撤销的工程决策。书中引用 达芬奇”热衷于实践而不要理论的人好像一个水手登上了一只没有舵和罗盘的船……实践应以 好的理论为基础”来概括这层关系。

参考来源

- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第1章"做好准备"1.3节"原理 而非产品"(源文件:OEBPS/text00009.html) - 结论依据:原文明确"关于原理的关键在于:原理具有普适性、稳定性。相反,产品和技术 (以及SQL语言)总是在改变——而原理不变……如果你仅仅懂得Oracle,那么你的知识就 不一定是可移植的……但是如果你懂得底层原理……那么你就掌握了可移植的知识和技巧: 这些知识和技巧可以应用于任何环境,永不过时",并给出三条妥协纪律。 - 原始内容:关于原理的关键在于:原理具有普适性、稳定性。相反,产品和技术(以及 SQL语言)总是在改变——而原理不变……在你决定进行权衡的时候,你应该理解你想要 做什么。你应该知道理论上正确的情形,若要违反它你应该有十分有力的理由。你还应该 把这些理由记录下来,以便……可以撤销先前的权衡措施。