oracle clob截取_Oracle数据库设计规范建议

Oracle-数据库设计规范建议

来源于项目资料

目的

本规范的主要目的是希望规范数据库设计,尽量提前避免由于数据库设计不当而产生的麻烦;同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好的保证。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。

数据对象的命名规范

通用规范

使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。主要目的很明确,让人容易明白这个对象是做什么用的; 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写;

数据库对象命名规范

表的命名

表名的前缀:前缀表名T。为表的名称增加一个或者多个前缀,前缀名不要太长,可以用缩写,最好用下划线与后面的单词分开;其目的有这样几个:

  1. 为了不与其他项目或者其他系统、子系统的表重名;

  2. 表示某种从属关系,比如表明是属于某个子系统、某个模块或者某个项目等等。表示这种从属关系的一个主要目的是,从表名能够大概知道如何去找相关的人员。比如以子系统为前缀的,当看到这个表的时候,就知道有问题可以去找该子系统的开发和使用人员;

视图命名:相关表名_V(或者根据需要另取名字);

程序包命名:程序包名_PKG(用英文表达程序包意义);

存储过程命名:存储过程名_PRO(用英文表达存储过程意义);

函数命名:函数名称_FUN(用英文表达函数作用);

触发器命名:触发器名称_TRI(用英文表达触发器作用);

索引命名:表名字段名IDX(如果存在多字段索引,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail 上建立联合索引,命名为 表名cus_cut_cur_IDX,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如在 custid, custom,custname上建立联合索引,就命名为表tid_tom_tna_IDX;

唯一索引命名:表名字段名UNI(如果存在多字段唯一索引,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail上建立唯一索引,命名为 表名_ cus_cut_cur_UNI,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:在 custid, custom,custname上建立唯一索引,命名:表_tid_tom_tna_UNI;

主键命名:表名字段名PK(如果存在多字段主键,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail上建立主键,命名为 表名cus_cut_cur_PK,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如在 custid, custom,custname上建立主键,命名:表tid_tom_tna_PK;

外键命名:表名主表名字段名_FK;

Sequence 命名:表名列名SEQ(或者根据需要另取名字);

Synonym 命名:与对应的数据库对象同名;

JAVA 命名:遵守公司相应的JAVA命名规范;

数据库对象设计原则

表的设计

主、外键

  1. 每个表,都必须要有主键。主键是每行数据的唯一标识,保证主键不可随意更新修改,在不知道是否需要主键的时候,请加上主键,它会为你的程序以及将来查找数据中的错误等等,提供一定的帮助;

  2. 一个表的某列与另一表有关联关系的时候,如果加得上的话,请加上外键约束。外键是很重要的,所以要特别强调:

  3. 适量建外键。为了保证外键的一致性,数据库会增加一些开销,如果有确凿的并且是对性能影响到无法满足用户需求的证据,可以考虑不建外键。否则,还是应该建外键;

  4. 不要以数据操作不方便为理由而不建外键。是的,加上外键以后,一些数据操作变得有些麻烦,但是这正是对数据一致性的保护。正是因为这种保护很有效,所以最好不要拒绝它;

  5. 以缺省的方式建立外键(即用delete restrict方式),以达到保护数据一致性的目的;外键在保护数据一致方面非常有效。如果不建外键,数据库中容易出现垃圾数据,并且无人知晓。当数据量很大的时候,查找这些垃圾数据也是相当困难的。而应用程序在设计时,往往没有考虑或者也无法照顾到垃圾数据。因此垃圾数据很可能造成应用程序工作不正常,并且表现出来的现象会很奇怪,让人摸不着头脑。

列的设计

  1. 字段的宽度要在一定时间内足够用,但也不要过宽,占用过多的存储空间,对于长度不确定的列,采用可变长度的数据类型如 varchar类型;

  2. 字段的类型及宽度在设计以及后面进行开发时,往往要与应用的设计、开发人员商讨,以得到双方认可的类型及宽度;

  3. 除非必要,否则尽量不加冗余列。所谓冗余列,是指能通过其他列计算出来的列,或者是与某列表达同一含义的列,或者是从其他表复制过来的列等等。冗余列需要应用程序来维护一致性,相关列的值改变的时候,冗余列也需要随之修改,而这一规则未必所有人都知道,就有可能因此发生不一致的情况。如果是应用的特殊需要,或者是为了优化某些逻辑很复杂的查询等操作,可以加冗余列;

  1. 除非必要,否则尽量不使用LONG, TEXT, BLOB, CLOB, NCLOB, LONG, LONG RAW这一类的数据类型,而是使用其他可以替代的数据类型;优先使用varchar2类型替代CHAR类型,除非列宽有严格的要求而且得到应用严格支持;

记录数

  1. 单表的记录数一般控制在两千万条 (参考值,各应用可以根据实际情况进行适量调整) 以内;

  2. 记录数在两千万和两亿条之间的表一定要采用分区技术,并根据应用的使用情况创建合适的分区标准,单个分区内的记录数一般控制在两千万条(参考值,各应用可以根据实际情况进行适量调整)以内,同时表的索引使用对应的分区索引;

  3. 记录数超过两亿条的表一定要考虑信息生命周期,必须考虑历史数据的剥离,并在应用设计中完成对历史数据的相应处理功能(历史数据的剥离规则须经业务使用部门的确认);

索引的设计

索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。但大量的DML操作会增加系统对索引的维护成本,对性能会有一定影响,对于插入相当频繁的表要慎重建索引,索引也会占相当的存储空间,所以要根据硬件环境和应用需求在空间和时间上达到最好的平衡点,主要原则:

  1. 适当利用索引提高查询速度:当数据量比较大,了解应用程序的会有哪些查询,依据这些查询需求建相应的索引;最好亲自试验一下,模拟一下生产环境的数据量,在此数据量下,比较一下建索引前后的查询速度;索引对性能会有一定影响,对于DML频繁列的索引要定期维护(重建)。但是,索引的结构对于索引的更新(比如在插入数据的时候)是有一定优化的,所以不要在没有试验以前过分夸大它对性能的影响。最终还是以试验为准;

  2. 不要建实际用不上的索引,与上条相关,如果建的索引并不提高任何一应用中的查询速度,则要把它删除;有些数据库有相关工具可以发现实际未被使用的索引,可以利用一下;

  3. 索引类型的选择:要根据数据分布及应用来决定如何建立索引,一般的高基数数据列(高基数数据列是指该列有很多不同的值)时 ,建立BTree索引(一般数据库索引的缺省类型);当低基数数据列(该列有大量相同的值)时,可以考虑建立位图索引(如果所选数据库支持的话),但位图索引是压缩类型索引,所以DML(增、删、改)的代价更高,要综合考虑;

  4. 索引列的选择:如果检索条件有可能包含多列,创建联合主键或者联合索引,把最常用于检索条件的列放在最前端,其他的列排在后面;不要索引使用频繁的小型表,假如这些小表有频繁的DML就更不要建立索引,维护索引的代价远远高于扫描表的代价;

  5. 主键索引在建立的时候一定要明确的指定名称,不能让系统默认建立主键索引(可能有些数据库无法指定主键名,则例外);

  6. 外键必须需建索引。当有一定数据量,并且经常以外键所在列为关联,进行关联查询时,需要建索引(可能有些数据库自动为外键建索引,则例外);

  7. 当有联合主键或者联合索引时,注意不要建重复的索引。举例说明:

  • 更复杂的情况,比如表EMPLOYEES,有一个索引建立在列CORPID, DEPARTID, EMPLOYEEID三列上,在创建语句中也依据上述顺序,就没有必要再为CORPID建立索引;也没有必要再建立以CORPID在前,DEPARTID在后的联合索引;如果EMPLOYEEID需要索引,那么为EMPLOYEEID建立一个索引是不与上面的索引重复的;DEPARTID列也类似;

  • 表EMPLOYEES,它的主键是建立在列DEPARTID和EMPLOYEEID上的联合主键,并且创建主键的语句中DEPARTID在前,EMPLOYEEID在后。在这样一 个表里,通常就没有必要再为DEPARTID建一个索引了;联合索引的情况也一样;

控制一个表的索引数量,尽量使得一个表的索引数量小于五个;

视图的设计

  1. 在不太清楚视图用法的情况下,尽量不建。因为一旦建了,就有被滥用的危险;

  2. 如果需要建视图,只要是打算长期使用的,请写入数据库设计中。明确它的用途、目的;

  3. 建立视图时要明确写出所有要选择出的列名而不要以SELECT *来代替,可以使结构清晰可读性增强,也不会增加它对表的所有字段的依赖,而表是很可能修改的,特别是增加字段。就很有可能导致使用该视图的应用程序出错;

存储过程、函数、触发器的设计

  1. 触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采用触发器,一定要经过测试再应用在生产系统中,而且必须集中对它文档化。

  2. 请把程序包、存储过程、函数、触发器,与应用程序一同加入CVS中,进行版本控制。因为此四者包含了代码,应用程序对他们的依赖程度比对表、视图的依赖程度更高;

  3. 适量但尽量少使用存储过程、函数、触发器。使用存储过程、函数、触发器的影响:

    (1) 可以减少数据库与客户端的交互,提高性能;(2) 有的数据库还对他们进行了某种程度的编译,在执行的时候,不用再对其中的SQL等语句进行解析,从而提高速度;(3) 如果有多个应用,使用了不同的开发语言,当有某些关键的或者复杂逻辑希望共享,则可以考虑使用存储过程或者函数。因为存储过程等在数据库一级是共享的;(4) 增强了应用对数据库的依赖,如果打算将来移植数据库的话,使用得越多,则移植的困难越大;数据库中的业务逻辑越多(存储过程等),应用以及存储过程等的维护难度也会增大;(5) 通常存储过程等没有面向对象的特性,不容易设计出易于扩展的结构。当存储过程比较复杂时,或者它们相互间的调用关系比较复杂时,可能难于维护;

SQL的设计和使用

Sql 书写规范
  1. 尽量不要写复杂的SQL:过于复杂的SQL可以用存储过程或函数来代替,效率更高;甚至如果能保证不造成瓶颈的话,把条SQL拆成多条也是可以的。这与一般的编码规范很相似的,首先是要易懂。易懂也就意味着容易维护,对较为复杂的sql语句加上注释,说明算法、功能注释风格:注释单独成行、放在语句前面。

  2. 应对不易理解的分支条件表达式加注释;

  3. 对重要的计算应说明其功能;

  4. 过长的函数实现,应将其语句按实现的功能分段加以概括性说明;

  5. 每条复杂SQL语句均应有注释说明(表名、字段名 主要是说明此句SQL执行 的作用及所取得结果集的意义);

  6. 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选__) ;

  7. 可采用单行/多行注释。(-- 或 /* */ 方式,不同数据库可能语法不同);

  8. 连接符or、in、and、以及=、<=、>=等前后加上一个空格;

  9. 不要用SELECT *:SELECT语句中写出必要的要选择的全部列名,增强语句可读性,避免不必要的选择;SELECT * 增加了对所有字段的依赖,当表增加了字段后,有可能发生错误;此外还可能增加了数据的流量,查询了一些实际不需要的字段;

  10. 避免长事务(Transaction):长事务容易造成死锁,应该避免,单个事务使用的数据库和系统资源不宜超过总资源1-2%(参考值,各应用可以根据实际情况进行适量调整,这种情况不适用于数据仓库);

  11. 行最长不能超过80字符,同一语句不同字句之间逗号以后空格,其他分割符前空格 where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐;

  12. 多表连接时,使用表的别名来引用列;

  13. SQL中对视图的引用:在不太清楚视图用法的情况下,尽量不用。只是因为视图中有自己想要的字段就拿来用,是相当普遍和错误的用法。原因如下:

  • 增加了应用程序对视图的依赖,不必要的依赖是越少越好的。当有应用程序依赖了某个视图,不久可能其他人因为某种原因会修改此视图,原来的应用有可能会受到不同程度的影响;

  • 增加了不必要的数据流量,对你的实际需求,那很可能是一个非常复杂的视图,有大量你不需要的字段,并且关联了很多你实际不需要的表,对数据库资源 会有过多的消耗;

不要在SQL语句中使用基于rule规则的hint,因为在Oracle 10g及以后版本不再支持;

SQL 性能优化建议
  1. 系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表,即将结果集返回数据量小的表放在FROM后边最后一个表;

  2. 大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作;

  3. 如必须使用排序操作,排序尽量建立在有索引的列上;

索引的使用
  1. 尽量避免对索引列进行计算。如对索引列计算较多,请提请数据库管理员建立函数索引;

  2. 尽量注意比较值与索引列数据类型的一致性(number与number比较、char与char比较),避免使用数据库的类型自动转换功能;如:SELECT * FROM categoryWHERE id = ‘123’; -- id’s type is number

  3. 对于复合索引,SQL语句必须使用主索引列;

  4. 索引字段中,尽量避免使用NULL值;

  5. 对于索引的比较,尽量避免使用NOT=(!=)

  6. 查询列和排序列与索引列次序保持一致 ;

  7. 尽量避免相同语句由于书写格式的不同,而导致多次语法分析(减少数据库的硬分析),如可使用TOAD的格式化工具对SQL语句进行格式化处理;

  8. 查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面;

  9. 在WHERE中,数据库函数、计算表达式等等,要尽可能将放在等号右边。否则会使所比较的字段上的索引失效;如:

    = TO_DATE(‘2001-9-01’,’yyyy-mm-dd’)AND gmt_modified< TO_DATE(‘2001-9-02’,’yyyy-mm-dd’);

    1. SELECT * FROM service_promotionWHERE TO_CHAR(gmt_modified,’yyyy-mm-dd’)= ‘20001-09-01’; 而应使用:SELECT *FROM service_promotionWHERE gmt_modified

  10. in、or子句常会使索引失效,尽可能不使用in、or;

  11. 尽量避免在循环中使用SQL语句;

  12. 在循环中尽量使用动态SQL语句提高执行性能;

其他与性能有关的设计原则

前面与提高数据库访问的性能相关的内容,这里就不再重复了,下面提出一些与数据库性能极为相关,但上文又未涉及的条目:

大数据量的开发环境

开发过程中,开发人员往往使用一个非常简单的、只有很少数据的数据库环境,便于程序的调试。但是,最好还提供一个数据量与真实环境相当的环境,数据量和应用的设计目标差不多,供开发人员使用。这样开发人员能立刻发现那些非常慢的数据库操作,比如写了一个非常不合理的SQL,因而能够在此时就排除,而不必等到测试或者甚至上线时才发觉。因为很多开发人员,由于对数据库的认识不够,通常只以完成功能为首要目的,容易写出效率非常低的SQL;

限制使用

这里说的限制使用是指如果能有其他的技术途径,就不要使用如下的Oracle技术,包括:DBLink, Trigger,用Java编写的存储过程等内容;

模拟测试

这里说的测试主要是指模拟实际应用对数据库的操作,进行测试,并发及访问量要模拟应用的设计需求。主要目的是了解在系统上线后,数据库的大概状况,避免一上线就崩溃或者慢得不能忍受的情况。提前发现瓶颈,做相应的优化;

应用测试

每个应用的测试阶段,特别是性能方面的测试,也要关注数据库的表现。如果出现瓶颈,则根据具体情况,根据需要必须修改部分数据库设计并修改相应程序;

数据库相关工具

为需要写SQL的开发人员提供方便的、图形化的客户端软件,可以用来执行SQL,看到表结构、索引等等,如TOAD, PL/SQL Develop软件。

d7c8d472c2d17b7ac53fb3c554886a2f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘美国空军如何用AI技术提升“战斗力”

以AI技术为基础&#xff0c;美国空军正努力将自身转化为更强调协作性的组织。来源丨Forbes作者丨Kathleen Walch编译丨科技行者通过增加数据规模与相关素养提升&#xff0c;美国空军各部门及人员&#xff0c;将建立起更强的决策、战略、任务执行以及网络安全保障效率与能力。以…

数字孪生:如何撑起一个万亿市场的产业变革?

来源&#xff1a; 脑极体 今天我们介绍一个在产业界如火如荼&#xff0c;但大众还非常陌生的概念&#xff1a;数字孪生&#xff08;Digital Twin&#xff09;。在解释这一晦涩难懂的概念前&#xff0c;我首先想到了一个人&#xff0c;前苏联著名的昆虫学家、数学家和哲学家——…

二、python框架相关知识体系

Django框架 1、django框架、flask框架和Tornado框架的区别&#xff1f; django框架&#xff0c;内置组件多&#xff0c;自身功能强大&#xff0c;是一个大而全的框架&#xff0c;ORM、Admin、中间件、Form、ModelFrom、信号、缓存、csrf等flask框架&#xff0c;内置组件少&…

Android跟web哪个好,比系统自带的WebView更好用 | AgentWeb

名称AgentWeb语言Android平台GitHub作者Justson在混合化开发大行其道的今天&#xff0c;安卓开发经常会用到WebView&#xff0c;用于加载网页。系统自带的WebView性能和流畅度都一般&#xff0c;今天给大家推荐一款第三方WebView&#xff0c;性能比系统自带的要好&#xff0c;功…

神经科学如何影响人工智能?看DeepMind在NeurIPS2020最新《神经科学人工智能》报告,126页ppt...

来源&#xff1a;专知Jane Wang是DeepMind神经科学团队的一名研究科学家&#xff0c;研究元强化学习和受神经科学启发的人工智能代理。她的背景是物理、复杂系统、计算和认知神经科学。Kevin Miller是DeepMind神经科学团队的研究科学家&#xff0c;也是伦敦大学学院的博士后。他…

科普长文揭秘生命为何会具有主观能动性

来源&#xff1a;混沌巡洋舰动物的免疫系统依赖于被称为巨噬细胞的白细胞吞噬并吞噬入侵者。这些细胞有着坚定的决心和热情: 在显微镜下&#xff0c;你可以看到一个像球状的巨噬细胞在玻璃片上追逐一个细菌&#xff0c;它的猎物试图通过红细胞的障碍物逃跑时&#xff0c;而在它…

Linux——Centos7网络配置1ens33文件

解决的是 Name or service not known 的问题 [rootwww ~]# ping www.baidu.comping: www.baidu.com: Name or service not known [rootwww ~]# 1、网络配置查看 记住NAT设置中的子网IP、子网掩码、网关IP三项&#xff0c;接下来配置文件主要是这三项。网关一般就是.2,ip设置为…

科技垄断正在朝着纵向发展

来源&#xff1a;CSDN译者&#xff1a;弯月以下为译文&#xff1a;科技垄断有关的话题&#xff0c;相信大家都不陌生&#xff0c;而纵向垄断指的是通过技术栈深入到硬件的纵向集成。在本文中&#xff0c;我们来讨论一下为什么当下科技垄断开始朝着纵向发展&#xff0c;这种垄断…

android10全局黑暗,传Android 11或加入自动切换全局黑暗模式功能

日前有外媒援引消息人士爆料称&#xff0c;谷歌曾在Android 10系统中带来了全局黑暗模式功能&#xff0c;但自动切换黑暗模式的功能却在Android 10系统的早期测试阶段意外遭砍&#xff01;而据最新消息显示&#xff0c;Android 11系统有望上线自动切换全局黑暗模式功能。按照An…

物理学走向尽头了?

制图&#xff1a;James OBrien作者&#xff1a;罗伯特戴克赫拉夫&#xff08;Robbert Dijkgraaf&#xff09;文章来源&#xff1a;环球科学物理学是否已经穷尽了人类探索的极限&#xff1f;亦或是才刚刚开始&#xff1f;普林斯顿高等研究所主任戴克赫拉夫给出了他的看法。物理学…

逆向工程-真码保存在系统文件破解QQ游戏对对碰助手

1&#xff09;注册栏中输入任意值测试 1.2&#xff09;记录弹出的关键字对话框 2.1&#xff09;发送至PEID进行查壳 2.2&#xff09;发现无壳 2.3)将软件载入OllyDBG程序 2.4&#xff09;在反汇编栏下右键选择中文搜索引擎-》智能搜索 2.5&#xff09;找到弹窗信息双击进入 3.0…

欢迎参加《城市大脑全球标准研究报告》发布会

《2020城市大脑全球标准研究报告》将与2020年12月23日在北京正式发布。这份报告是科学院研究团队基于城市大脑基础理论研究并与产业实践结合&#xff0c;形成的世界第一份城市大脑全球标准研究报告。欢迎新闻媒体、科研机构、科技企业、政府部门的记者&#xff0c;专家和领导参…

动态规划--Leetcode62--不同路径

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为“Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为“Finish”&#xff09;。 问总共有多少条不同的路径&#xff1f; 例如&…

html5+实现图片自动切换,js图片自动切换效果处理代码

var curIndex0;//时间间隔 单位毫秒var timeInterval1000;var arrnew Array();arr[0]"1.jpg";arr[1]"2.jpg";arr[2]"3.jpg";arr[3]"4.jpg";arr[4]"5.jpg";arr[5]"6.jpg";arr[6]"7.jpg";setInterval(cha…

深度学习已经彻底改变了制造业的质量控制,但还不够深入

Photo-illustration: Neurala来源&#xff1a;IEEE电气电子工程师这是一篇客座文章。这里所表达的观点只是作者的观点&#xff0c;并不代表IEEE Spectrum或IEEE的立场。在2020年&#xff0c;我们看到了深度学习的加速利用&#xff0c;这是所谓的工业4.0革命的一部分&#xff0c…

Pycharm简单配置及详细快捷键介绍

Pycharm的配置 修改主题&#xff1a; File-》Setting&#xff1a; Appearance&Behavior->UI Options->Theme: 显示行号&#xff1a; Editor-General-Appearance 选择show line numbers显示行号&#xff1a; 修改字体大小&#xff1a; Editor-Colors&Font-Font&am…

“重”磅!人造物质量首超全球生物量

图片来源&#xff1a;HUSEYINTUNCER/ ISTOCK来源&#xff1a;科学技术哲学作者&#xff1a;辛雨12月10日&#xff0c;《自然》发表的最新研究显示&#xff0c;建筑、道路、汽车等人造物体的质量现已超过地球上的生物总量&#xff0c;而每周的新增物量相当于地球上近80亿人口的总…

html固定表的属性是什么,css如何固定表头

css如何固定表头实现头部导航栏固定用到的属性是&#xff1a;position:sticky 。粘性定位元素(stickily positioned element)是计算后位置属性为 sticky 的元素。盒位置根据正常流计算(这称为正常流动中的位置)&#xff0c;然后相对于该元素在流中的 flow root(BFC)和 containi…

HTML--注册页面案例

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> </head> <body> <!--表里标签&#xff1a;action:提交的地址 method&#xff1a; get…

科技界内卷化如何破

本文转载自李侠科学网博客撰文 | 李侠&#xff08;上海交通大学科学史与科学文化研究院教授&#xff09;众所周知&#xff0c;2020年内卷化成为一个年度热词&#xff0c;它本是美国文化人类学家吉尔茨&#xff08;Clifford Geertz&#xff0c;1926-2006&#xff09;提出的一个概…