`

ORACLE外键约束

 
阅读更多

-- 创建测试主表. ID 是主键.

CREATE TABLE test_main (

 id      INT,

 value   VARCHAR(10),

 PRIMARY KEY(id)  

);

 

 

-- 创建测试子表. 

CREATE TABLE test_sub (

  id      INT,

 main_id INT,

 value   VARCHAR(10),

 PRIMARY KEY(id)  

);

 

 

-- 插入测试主表数据.

INSERT INTO test_main(id, value) VALUES (1,'ONE');

INSERT INTO test_main(id, value) VALUES (2,'TWO');

 

-- 插入测试子表数据.

INSERT INTO test_sub(id, main_id, value)VALUES (1, 1, 'ONEONE');

INSERT INTO test_sub(id, main_id, value)VALUES (2, 2, 'TWOTWO');

 

 

 

默认外键约束方式

 

SQL> -- 创建外键(默认选项)

SQL> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons  FOREIGN KEY (main_id)  REFERENCES test_main;

 

Table altered.

 

SQL>

SQL> -- 测试删除主表数据. 将出错 ORA-02292:违反完整约束条件

SQL> DELETE

 2    test_main

 3  WHERE

 4    ID = 1;

DELETE

*

ERROR at line 1:

ORA-02292: integrity constraint(HR.MAIN_ID_CONS) violated - child record found

 

 

测试完毕后,删除外键约束

ALTER TABLE test_subDROP CONSTRAINT main_id_cons;

 

 

 


 

 

DELETE CASCADE 方式

 

SQL> -- 创建外键(使用 ON DELETECASCADE 选项,删除主表的时候,同时删除子表)

SQL> ALTER TABLE test_sub

  2    ADDCONSTRAINT main_id_cons

  3     FOREIGN KEY (main_id) REFERENCES  test_main  ON DELETE  CASCADE;

 

Table altered.

 

SQL>

SQL> -- 测试删除主表数据. 将成功地执行.

SQL> DELETE

 2    TEST_MAIN

 3  WHERE

 4    ID = 1;

 

1 row deleted.

 

SQL>

SQL> -- 测试检索子表,应该只有一条 main_id = 2 的数据.

SQL> SELECT

 2    *

 3  FROM

 4    test_sub;

 

       ID    MAIN_ID VALUE

---------- ---------- --------------------

         2          2 TWOTWO

 

 

测试完毕后,删除外键约束 

ALTER TABLE test_sub DROP CONSTRAINT main_id_cons;

 

 

 

SET NULL方式

 

SQL> -- 创建外键(使用 ON DELETESET NULL 选项,删除主表的时候,同时将子表的 main

_id 设置为 NULL)

SQL> ALTER TABLE test_sub

  2   ADD CONSTRAINT main_id_cons

  3     FOREIGN KEY (main_id) REFERENCES  test_main  ON DELETE SET NULL;

 

Table altered.

 

SQL>

SQL>

SQL> -- 测试删除主表数据. 将成功地执行.

SQL> DELETE

 2    TEST_MAIN

 3  WHERE

 4    ID = 2;

 

1 row deleted.

 

SQL>

SQL> -- 测试检索子表,应该有一条的 main_id = null

SQL> SELECT

 2    *

 3  FROM

 4    test_sub;

 

       ID    MAIN_ID VALUE

---------- ---------- --------------------

         2            TWOTWO

 

测试完毕后,删除外键约束 

ALTER TABLE test_sub DROP CONSTRAINT main_id_cons;

 

 

 

 

 

 

启用/禁用

 

当遇到批量数据导入的时候,如果外键处于有效的状态。
那么要求 数据导入的程序, 必须先导入主表的数据,然后再导入子表的数据。
如果表多,且关系复杂的话,会增加很大的工作量。

可以在数据导入以前, 先暂时禁用外键约束。
子表、主表数据都导入完毕后, 再启用外键约束。

 

以下测试环境为 初始的创建表、初始数据的情况。

 


SQL> -- 创建外键(默认选项)
SQL> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons  FOREIGN KEY (main_id)  REFERENCES  test_main;

表已更改。

SQL> -- 测试插入子表数据. 将出错 ORA-02291: 违反完整约束条件
SQL> INSERT INTO test_sub (ID, MAIN_ID, VALUE) VALUES (3, 3, 'THREETHREE');
INSERT INTO test_sub (ID, MAIN_ID, VALUE) VALUES (3, 3, 'THREETHREE')
*
ERROR 位于第 1 行:
ORA-02291: 违反完整约束条件 (TEST.MAIN_ID_CONS) - 未找到父项关键字

 

 

-- 尝试禁用外键约束.
SQL> ALTER TABLE test_sub  MODIFY   CONSTRAINT main_id_cons DISABLE;
表已更改。


SQL> INSERT INTO test_sub (ID, MAIN_ID, VALUE) VALUES (3, 3, 'THREETHREE');
已创建 1 行。

SQL> INSERT INTO test_main(id, value) VALUES (3, 'THREE');
已创建 1 行。

SQL> commit;
提交完成。

 

 

-- 恢复启用外键约束.
SQL> ALTER TABLE test_sub  MODIFY   CONSTRAINT main_id_cons  ENABLE;
表已更改。


SQL> DELETE test_main  WHERE ID = 1;
DELETE test_main  WHERE ID = 1
*
ERROR 位于第 1 行:
ORA-02292: 违反完整约束条件 (TEST.MAIN_ID_CONS) - 已找到子记录

 

 

测试完毕后,删除外键约束 

ALTER TABLE test_sub DROP CONSTRAINT main_id_cons;

 

 

 

 

延迟约束

 


在编程开发环境中,可能会遇到,要先插入子表, 然后插入主表。
或者先更新主表的 主键, 然后更新子表的外键的情况。


由于是开发环境下,因此不适合使用 先 DISABLE 再 ENABLE 的处理机制。
原因是程序中可能会存在并发处理

也就是

用户A   DISABLE -- 更新处理  -- ENABLE
用户B              DISABLE -- 更新处理  -- ENABLE


这种情况下,需要启用 延迟约束
也就是 INSERT / UPDATE 语句执行的时候, 暂时不检查数据的完整性,等到 Commit 的时候,统一做检查。

 

 

 


SQL> -- 创建外键(默认选项)
SQL> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons 
  2    FOREIGN KEY (main_id)  REFERENCES  test_main 
  3    DEFERRABLE   INITIALLY DEFERRED;
表已更改。


SQL> INSERT INTO test_sub (ID, MAIN_ID, VALUE) VALUES (4, 4, 'FOURFOUR');

已创建 1 行。

SQL> commit;
commit
*
ERROR 位于第 1 行:
ORA-02091: 事务处理已回退
ORA-02291: 违反完整约束条件 (TEST.MAIN_ID_CONS) - 未找到父项关键字

 


SQL> INSERT INTO test_sub (ID, MAIN_ID, VALUE) VALUES (4, 4, 'FOURFOUR');
已创建 1 行。

SQL> INSERT INTO test_main(id, value) VALUES (4, 'FOUR');
已创建 1 行。

SQL> commit;
提交完成。

 

外键索引

啥时不需要外键索引?
Expert one-on-one Oracle中提到:

  • You do not delete from the parent table.
  • You do not update the parent tables unique/primary key value, either purposely or by accident (via a tool).

这两种情况下,没有外键索引,Oracle会锁子表,当使用ON DELETE CASCADE时,会进行全表扫描。

  • You do not join from the parent table to the child table, of more generally ‐ the foreign key columns do not support an important access path to the child table.

利用join查询时,没有外键索引,Oracle就会进行全表扫描。

当确认这些情况不会出现时,便可以不添加外键索引,但是,如何监测子表是否被锁呢?
Oracle有一个机制:
ALTER TABLE <child table name> DISABLE TABLE LOCK;
这时,UPDATE和DELETE获取锁是都会失败。

 

不从父表删除记录很难避免,因此,如果没有外键索引,将很容易导致死锁,缺外键索引是死锁的主要原因,另外,位图索引的并发更新也是可能导致死锁。

 

以下是ORACLE Database Concept上的描述,记录一下:

Indexes and Foreign Keys

As a rule, foreign keys should be indexed. The only exception is when the matching unique or primary key is never updated or deleted. Indexing the foreign keys in child

tables provides the following benefits:

■ Prevents a full table lock on the child table. Instead, the database acquires a row

lock on the index.

■ Removes the need for a full table scan of the child table. As an illustration,

assume that a user removes the record for department 10 from the departments

table. If employees.department_id is not indexed, then the database must scan

employees to see if any employees exist in department 10.

 

分享到:
评论

相关推荐

    基于java的校园美食交流系统设计与实现.docx

    基于java的校园美食交流系统设计与实现.docx

    #_ssm_126_mysql_实习支教中小学学校信息管理系统_.zip

    均包含代码,文章,部分项目包含ppt

    基于python的酒店评论中文情感分析系统源码+设计文档+数据集.zip

    基于python的酒店评论中文情感分析系统源码+设计文档+数据集.zip基于python的酒店评论中文情感分析系统源码+设计文档+数据集.zip基于python的酒店评论中文情感分析系统源码+设计文档+数据集.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。

    ASP.NET公交车管理系统的实现与设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    ASP基于WEB楼宇专业网站毕业设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    django基于协同过滤算法的小说推荐系统 -论文.zip

    基于Django框架开发的协同过滤算法小说推荐系统是一种利用用户行为数据来提供个性化小说推荐的应用。该系统通过分析用户的历史阅读记录、评分和反馈,发现用户之间的相似性或小说之间的相似性,进而为用户推荐可能感兴趣的小说。以下是该系统可能包含的关键特性: 1. **用户账户管理**:允许用户创建账户、登录和编辑个人信息,同时跟踪用户的阅读历史和评分。 2. **小说数据库**:构建一个包含大量小说信息的数据库,每本小说都有详细的元数据,如作者、出版年份、流派、标签等。 3. **协同过滤引擎**:实现协同过滤算法,包括用户-用户协同过滤和项目-项目协同过滤,以发现相似用户或相似小说。 4. **推荐生成**:根据协同过滤引擎的结果,生成个性化的小说推荐列表,并提供给用户。 5. **评分系统**:允许用户对小说进行评分,这些评分数据将用于训练推荐算法,提高推荐的准确性。 6. **用户界面**:设计直观、易用的用户界面,使用户能够轻松浏览推荐的小说、查看详情和进行评分。 7. **搜索和筛选功能**:提供强大的搜索功能,允许用户根据标题、作者或流派等关键词搜索小说,并提供筛选

    ASP.NET基于web的订餐系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    2020数字孪生技术应用与发展概述

    内容概要:本文是关于2020年度数字孪生技术的最新进展和发展趋势的研究报告。文中对数字孪生技术及其应用场景作出了详细的阐述,特别强调了数字孪生在智能制造、智慧城市、产品开发等多个领域内的实际应用成果,并讨论了数字孪生带来的信息安全方面的挑战和解决方案。 适用人群:面向希望深入了解和应用数字孪生技术的企业管理人员、研发工程师和学者。 使用场景及目标:适用于企业或机构寻求改进产品设计、生产制造、城市管理等领域效能的情况,助力相关人员理解和实现更加精细的管理决策和模拟预测,进而优化资源配置与提升工作效率。 其它说明:介绍了多项核心技术,包括但不限于数据收集、建模仿真、模型管理系统等,并分享了多个数字孪生的真实应用案例以展示其实效。

    基于java的的德云社票务系统的设计与实现.docx

    基于java的的德云社票务系统的设计与实现.docx

    基于java的宜佰丰超市进销存管理系统设计与实现.docx

    基于java的宜佰丰超市进销存管理系统设计与实现.docx

    基于java的削面快餐店点餐服务系统的设计与实现.docx

    基于java的削面快餐店点餐服务系统的设计与实现.docx

    用户体验分享和讨论.ppt

    用户体验分享和讨论.ppt

    #_ssm_137_mysql_数据结构课堂学生考勤管理系统_.zip

    均包含代码,文章,部分项目包含ppt

    ASP.NET基于WEB的工作计划流程管理系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、3本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、本项3目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdmE.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    #_ssm_153_mysql_健身房众筹系统_.zip

    均包含代码,文章,部分项目包含ppt

    一款基于UNITY的MMORPG游戏.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    java-ssm+vue志愿者招募网站实现源码(项目源码-说明文档)

    志愿者招募网站,在网站首页可以查看首页,组织信息,志愿活动,新闻资讯,个人中心,后台管理等内容,并进行详细操作 用户注册,在用户注册页面通过填写账号,密码,确认密码,姓名,手机,所在学校,邮箱,验证码等信息进行注册操作 组织信息,在组织信息页面可以查看组织名称,组织编号,组织宣言,负责人,联系电话等内容,并进行评论和收藏操作 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog

    Java设计基础-图书馆管理系统

    全代码在里面,学完Java实训写出来的Java图书馆代码

    采用Spring+Struts2+Hibernate框架,实现一个仿天猫购物网站的web工程(毕设&课设&实训&大作业&竞赛&项

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    基于Asp.Net的电商后台管理系统.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

Global site tag (gtag.js) - Google Analytics