`
izuoyan
  • 浏览: 9420047 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORACLE表间关系

阅读更多

簡介

<term key="constraint">限制</term>主要有以下3種功能:

  1. 為資料庫內的表格建立實在的關係,例如 DEPT 和 EMP 表格的父子關係。
  2. 避免一些您不想要的資料進入資料庫,例如您不想資料庫儲存一個沒有名字的僱員紀錄。
  3. 避免刪除一些有關連性的資料,例如 EMP 與 DEPT 是有關連的,那就要避免您刪除 DEPT 表格,否則 EMP 的 DEPTNO 欄就不能對應到 DEPT 了。

總括來說,限制能夠維繫您的資料庫,和避免錯誤的資料進入資料庫。

Oracle 有以下5種基本的限制:

  1. Not Null - 非空
  2. Unique - 唯一的
  3. Check - 檢查
  4. Primary Key - 主要鍵
    • 組合 Primary Key
  5. Foreigh Key - 外來鍵

Not Null

您可以指定某個欄不可儲存 NULL 值,當您嘗試把該欄設為 NULL 值時,Oracle 會顯示錯誤訊息。以下示範如何把 EMPLOYEE_ID 一欄定義 NOT NULL 限制,並嘗試把它設為 NULL,引致 ORA-01400 錯誤:

SQL> CREATE TABLE EMPLOYEES (
2 EMPLOYEE_ID NUMBER(5) NOT NULL
3 );

Table created.

SQL> INSERT INTO EMPLOYEES VALUES(NULL);
INSERT INTO EMPLOYEES VALUES(NULL)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SCOTT"."EMPLOYEES"."EMPLOYEE_ID")

Unique

如 果您想某欄的所有資料都必須是唯一的,即是不可出現重覆的值,那就可以把該欄定義 UNIQUE 限制,例如僱員識別碼一欄,因為它一般會用來識別不同的僱員,所以把它定義 UNIQUE 限制,Oracle 就會防止它含有重覆的值。不過,UNIQUE 限制只會檢查那些不是 NULL 的值是否重覆,而不會檢查 NULL 值。

SQL> CREATE TABLE EMPLOYEES (
2 EMPLOYEE_ID NUMBER(5) UNIQUE
3 );

Table created.

SQL> INSERT INTO EMPLOYEES VALUES(1);

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES(1);
INSERT INTO EMPLOYEES VALUES(1)
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.SYS_C001265) violated

留 意錯誤訊息出現的 SCOTT.SYS_C001265 ,其中的 SYS_C001265 是個限制名稱,其實您可以在定義一個限制時同時定義它的名稱,那麼當您違反了該限制時,Oracle 就會顯示該限制名稱,那就容易知道違反了什麼限制了。如果您沒有定義限制名稱,那麼 Oracle 會自動定義 SYS_Cxxxxxx 這樣子的名稱。

Check

Check 解作「檢查」,例如您可以檢查某個欄位的值是否符合某個條件,以下示範如何檢查 SALARY 一欄是否符合「少於 10000」這個條件:

SQL> CREATE TABLE EMPLOYEES (
2 SALARY NUMBER(6) CHECK (SALARY <= 10000)
3 );

Table created.

SQL> INSERT INTO EMPLOYEES VALUES(9000);

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES(11000);
INSERT INTO EMPLOYEES VALUES(11000)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.SYS_C001267) violated

Check 限制只能檢查一些簡單的條件,例如把 SALARY 與 10000 這個固定的值比較,它不能與其它欄的值或變數比較。

Primary Key

Primary Key 限制的特性就是 Not Null 和 Unique 兩者的結合,即是說,定義為 Primary Key 的欄會同時受到 Not Null 和 Unique 的限制。以下示範 EMPLOYEE_ID 欄不能設為 NULL 值和不可含有重覆的值:

SQL> CREATE TABLE EMPLOYEES (
2 EMPLOYEE_ID NUMBER(5) PRIMARY KEY
3 );

Table created.

SQL> INSERT INTO EMPLOYEES VALUES(NULL);
INSERT INTO EMPLOYEES VALUES(NULL)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SCOTT"."EMPLOYEES"."EMPLOYEE_ID")


SQL> INSERT INTO EMPLOYEES VALUES(1);

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES(1);
INSERT INTO EMPLOYEES VALUES(1)
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.SYS_C001268) violated

還有一點,一個表格只可有一個 Primary Key。

組合 Primary Key

之 前的例子示範如何把1個欄定義為 Primary Key,還一有種叫組合 Primary Key,讓您把2個或以上的欄定義為 Primary Key,即是說,這些欄值的組合不可以重覆,而每個欄也不可有 NULL。例如一個僱員的姓氏部份或名字部份也可能和其他人相同,如果您不想有兩個人的姓氏和名字完全一樣,可以把 FIRST_NAME 和 LAST_NAME 定義為組合 PRIMARY KEY。

以下示範定義組合 Primary Key 限制,同時定義這個限制的名稱為 PK_EMPLOYEES,當您違反這個限制時,Oracle 就會在錯誤訊息顯示這個名稱。

SQL> CREATE TABLE EMPLOYEES (
2 FIRST_NAME VARCHAR2(20),
3 LAST_NAME VARCHAR2(20),
4 CONSTRAINT PK_EMPLOYEES PRIMARY KEY (FIRST_NAME, LAST_NAME)
5 );

Table created.

SQL> INSERT INTO EMPLOYEES VALUES('TOM', 'LEE');

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('LEE', 'TOM');

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('LEE', 'JOHN');

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('TOM', 'LEE');
INSERT INTO EMPLOYEES VALUES('TOM', 'LEE')
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.PK_EMPLOYEES) violated

留意組合 Primary Key 的語法比較特別,其它限制的語法都是把限制寫在欄位之後,成為該欄的一部份,是因為這些限制都是定義在一個欄,但組合 Primary Key 是定義在多個欄的,所以不會寫在任何一個欄之後。

Foreign Key

Foreign Key 限制是用來表示兩個表格的父子關係,即好像 DEPT 和 EMP 表格,在這個父子關係有以下特性:

  • 兩個表格會有一個<term key="shared_column">「共通的欄」 (Shared Column)</term>,就是 DEPTNO (欄名不一定要相同,但資料型態就必須相同)
  • DEPTNO 在父表格 DEPT 是個 Primary Key(受 Primary Key 限制)
  • DEPTNO 在子表格 EMP 是個 Foreign Key(受 Foreign Key 限制)
  • 在子表格 EMP 的 DEPTNO 欄內所有的值(除了 NULL 之外),都必須在在父表格的 DEPTNO 找到。(但父表格的值不必在子表格的 DEPTNO 欄找到)

以下示範在子表格分享欄插入一個在父表格分享欄找不到的值,造成錯誤:

SQL> CREATE TABLE DEPARTMENTS (
2 DEPARTMENT_NUM NUMBER(5) PRIMARY KEY,
3 DEPARTMENT_NAME VARCHAR2(20)
4 );

Table created.

SQL> CREATE TABLE EMPLOYEES (
2 EMPLOYEE_NAME VARCHAR2(20),
3 DEPARTMENT_NUM NUMBER(5)
4 REFERENCES DEPARTMENTS (DEPARTMENT_NUM)
5 );

Table created.

SQL> INSERT INTO DEPARTMENTS VALUES(10, 'IT');

1 row created.

SQL> INSERT INTO DEPARTMENTS VALUES(20, 'SALES');

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('TOM', 10);

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('SAM', 20);

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('JOHN', 30);
INSERT INTO EMPLOYEES VALUES('JOHN', 30)
*
ERROR at line 1:
ORA-02291: integrity constraint (SCOTT.SYS_C001272) violated - parent key not found

DEPARTMENT_NUM 是分享欄,因為在父表格 DEPARTMENTS 的分享欄找不到 30,所以把子表格的分享欄設為 30 會造成錯誤。

當父表格的值被刪除

如 果您嘗試刪除父表格 DEPARTMENTS 的 DEPARTMENT_NUM = 10 那一行,那麼子表格 EMPLOYEES 的 DEPARTMENT_NUM = 10 就不能在 DEPARTMENTS 找到了,違反了 Foreign Key 的限制,所以 Oracle 會防止您這樣做的:

SQL> DELETE FROM DEPARTMENTS WHERE DEPARTMENT_NUM = 10;
DELETE FROM DEPARTMENTS WHERE DEPARTMENT_NUM = 10
*
ERROR at line 1:
ORA-02292: integrity constraint (SCOTT.SYS_C001306) violated - child record found

child record found 的意思是「找到子記錄」,而子記錄就是指子表格 EMPLOYEES 裡 DEPARTMENT_NUM = 10 的記錄。

Oracle 讓您設定2種處理這個情況的方法:

  • ON DELETE SET NULL - 當父表格的行被刪除時,Oracle 會把子表格所有對應的值設為 NULL。
  • ON DELETE CASCADE - 當父表格的行被刪除時,Oracle 會把子表格所有對應的行刪除。

ON DELETE SET NULL

SQL> CREATE TABLE DEPARTMENTS (
2 DEPARTMENT_NUM NUMBER(5) PRIMARY KEY,
3 DEPARTMENT_NAME VARCHAR2(20)
4 );

Table created.

SQL> CREATE TABLE EMPLOYEES (
2 EMPLOYEE_NAME VARCHAR2(20),
3 DEPARTMENT_NUM NUMBER(5)
4 REFERENCES DEPARTMENTS (DEPARTMENT_NUM) ON DELETE SET NULL
5 );

Table created.

SQL> INSERT INTO DEPARTMENTS VALUES(10, 'IT');

1 row created.

SQL> INSERT INTO DEPARTMENTS VALUES(20, 'SALES');

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('TOM', 10);

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('SAM', 20);

1 row created.

SQL> DELETE FROM DEPARTMENTS WHERE DEPARTMENT_NUM = 10;

1 row deleted.

SQL> SELECT * FROM EMPLOYEES;

EMPLOYEE_NAME DEPARTMENT_NUM
-------------------- --------------
TOM
SAM 20

Oracle 自動把 EMPLOYEES 的 DEPARTMENT_NUM = 10 設為 NULL。

ON DELETE CASCADE

SQL> CREATE TABLE DEPARTMENTS (
2 DEPARTMENT_NUM NUMBER(5) PRIMARY KEY,
3 DEPARTMENT_NAME VARCHAR2(20)
4 );

Table created.

SQL> CREATE TABLE EMPLOYEES (
2 EMPLOYEE_NAME VARCHAR2(20),
3 DEPARTMENT_NUM NUMBER(5)
4 REFERENCES DEPARTMENTS (DEPARTMENT_NUM) ON DELETE CASCADE
5 );

Table created.

SQL> INSERT INTO DEPARTMENTS VALUES(10, 'IT');

1 row created.

SQL> INSERT INTO DEPARTMENTS VALUES(20, 'SALES');

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('TOM', 10);

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES('SAM', 20);

1 row created.

SQL> DELETE FROM DEPARTMENTS WHERE DEPARTMENT_NUM = 10;

1 row deleted.

SQL> SELECT * FROM EMPLOYEES;

EMPLOYEE_NAME DEPARTMENT_NUM
-------------------- --------------
SAM 20

Oracle 自動刪除 EMPLOYEES 的 DEPARTMENT_NUM = 10 那行。

欄限制與表格限制

以上介紹了5種限制,它們的語法都差不多,除了組合 Primary Key 比較特別之外,其餘的限制都是寫在 CREATE TABLE 內的欄名後面。

其實,限制的語法有2種:<term key="column_constraint">「欄限制」(Column Constraint)</term> 和 <term key="table_constraint">「表格限制」(Table Constraint)</term> 。

限制/說明 欄限制語法例子 表格限語法例子
語法不同之處 限制是寫在欄名之後,成為該欄的一部份。 限制是寫在所有欄之後的,而且含有 CONSTRAINT 子句。
NOT NULL CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER NOT NULL
);
不適用
UNIQUE CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER UNIQUE
);
CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER,
CONSTRAINT CONS_NAME UNIQUE
);
CHECK CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER
CHECK (COLUMN_NAME < 10000)
);
CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER,
CONSTRAINT CONS_NAME
CHECK (COLUMN_NAME < 10000)
);
PRIMARY KEY CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER PRIMARY KEY
);
CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER,
CONSTRAINT CONS_NAME PRIMARY KEY (COLUMN_NAME)
);
組合 PRIMARY KEY 不適用 CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER,
COLUMN2_NAME NUMBER,
CONSTRAINT CONS_NAME
PRIMARY KEY (COLUMN_NAME, COLUMN2_NAME)
);
FOREIGN KEY CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER
REFERENCES TABLE2_NAME (COLUMN2_NAME)
);
CREATE TABLE TABLE_NAME (
COLUMN_NAME NUMBER,
CONSTRAINT CONS_NAME
REFERENCES TABLE2_NAME (COLUMN2_NAME)
);

限制與索引

請參考「索引」一章

加入限制

您除了可以在 CREATE TABLE 時定義限制,也可以在表格建立了之後才加入限制。加入限制的語法是 ALTER TABLE ADD CONSTRAINT,而 NOT NULL 限制則要用 ALTER TABLE MODIFIY :

SQL> CREATE TABLE DEPARTMENTS (
2 DEPARTMENT_NUM NUMBER(5) PRIMARY KEY,
3 DEPARTMENT_NAME VARCHAR2(20)
4 );

Table created.

SQL> CREATE TABLE EMPLOYEES (
2 EMPLOYEE_ID NUMBER(5),
3 LAST_NAME VARCHAR2(20),
4 FIRST_NAME VARCHAR2(20),
5 SALARY NUMBER(6),
6 DEPARTMENT_NUM NUMBER(5),
7 GOVERNMENT_ID NUMBER(10)
8 );

Table created.

SQL> ALTER TABLE EMPLOYEES MODIFY
2 (LAST_NAME NOT NULL)
3 ;

Table altered.

SQL> ALTER TABLE EMPLOYEES ADD
2 CONSTRAINT UK_EMPLOYEES_01 UNIQUE (GOVERNMENT_ID)
3 ;

Table altered.

SQL> ALTER TABLE EMPLOYEES ADD
2 CONSTRAINT CK_EMPLOYEES_01 CHECK (SALARY <= 10000)
3 ;

Table altered.

SQL> ALTER TABLE EMPLOYEES ADD
2 CONSTRAINT PK_EMPLOYEES PRIMARY KEY (EMPLOYEE_ID)
3 ;

Table altered.

SQL> ALTER TABLE EMPLOYEES ADD
2 CONSTRAINT FK_EMPLOYEES_01 FOREIGN KEY (DEPARTMENT_NUM)
3 REFERENCES DEPARTMENTS (DEPARTMENT_NUM)
4 ;

Table altered.

加入限制注意

如果某個表格內已經含有資料,那就要小心一點,因為這些資料可能違反了您想加入的規則,所以當您加入新的限制時必須符合以下條件:

  1. Not Null - 加入限制的那一個欄不可含有 NULL。如果您想加入一個新的欄,而這欄是定義了 NOT NULL 限制,那就要用 DEFAULT 子句來指定預設值,Oracle 會為表格內的所有行的該欄都設為預設值。
  2. Unique - 該欄的值不可重覆。(除了 NULL 值之外)
  3. Check - 這個比較特別,因為 Oracle 不會檢查現有的值是否違反了限制,只會檢查之後新增或修改的值。
  4. Primary Key - 必須同時符合 NOT NULL 和 UNIQUE。
  5. Foreigh Key - 該欄的值必須在父表格的分享欄找到。(除了 NULL 值之外)

禁止限制

您可以啟動或禁止一個限制,當限制被禁止時,就變成好像沒有了該限制一樣。禁止限制的語法是 ALTER TABLE DISABLE:

SQL> ALTER TABLE EMPLOYEES DISABLE PRIMARY KEY;

Table altered.

SQL> ALTER TABLE EMPLOYEES DISABLE CONSTRAINT UK_EMPLOYEES_01;

Table altered.

禁止父表格的 Primary Key 限制

當您禁止一個父表格的 PRIMARY KEY,那就會認響到子表格的 FOREIGN KEY 關連性了,所以 Oracle 會防止您這樣做:

SQL> ALTER TABLE DEPARTMENTS DISABLE PRIMARY KEY;
ALTER TABLE DEPARTMENTS DISABLE PRIMARY KEY
*
ERROR at line 1:
ORA-02297: cannot disable constraint (SCOTT.SYS_C001286) - dependencies exist

如果您真的希望這樣做,就必須在 ALTER TABLE DISABLE 內加入 CASCADE 一詞。

SQL> ALTER TABLE DEPARTMENTS DISABLE PRIMARY KEY CASCADE;

Table altered.

啟動被禁止了的限制

您可以啟動一個被禁止了的限制,語法是 ALTER TABLE ENABLE:

SQL> ALTER TABLE DEPARTMENTS ENABLE PRIMARY KEY;

Table altered.

SQL> ALTER TABLE EMPLOYEES ENABLE CONSTRAINT UK_EMPLOYEES_01;

Table altered.

當現在的資料違反被禁止了的限制

有時,您會希望暫時禁止一個限制來做某些工作,例如當您要執行大量的 INSERT 句子,您可能會暫時禁止一個 PRIMARY KEY 來提高執行速度。不過,一旦您插入的資料違反了 PRIMARY KEY 限制,您就不能在之後啟動它了。

一旦出現這種情況,您可以使用一個特殊的表格,名叫 EXCEPTIONS,這個表格可以透過用 SQL*Plus 來執行「[ORACLE HOME 目錄]rdbmsadminutlexcpt.sql」這個檔案來產生:

SQL> @@C:ORACLEORA81RDBMSADMINUTLEXCPT

Table created.

SQL> DESC EXCEPTIONS

Name Null? Type
---------- ----- ----------------
ROW_ID ROWID
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
CONSTRAINT VARCHAR2(30)

建立了 EXCEPTIONS 表格,以下嘗試產生上述的情況:

SQL> CREATE TABLE EMPLOYEES (
2 EMPLOYEE_ID NUMBER(5)
3 );

Table created.

SQL> INSERT INTO EMPLOYEES VALUES(1);

1 row created.

SQL> INSERT INTO EMPLOYEES VALUES(2);

1 row created.

SQL> ALTER TABLE EMPLOYEES ADD CONSTRAINT
2 PK_EMPLOYEES PRIMARY KEY (EMPLOYEE_ID);

Table altered.

SQL> SELECT * FROM EMPLOYEES;

EMPLOYEE_ID
-----------
1
2

SQL> ALTER TABLE EMPLOYEES DISABLE CONSTRAINT PK_EMPLOYEES;

Table altered.

SQL> INSERT INTO EMPLOYEES VALUES(1);

1 row created.

SQL> ALTER TABLE EMPLOYEES ENABLE CONSTRAINT PK_EMPLOYEES
2 EXCEPTIONS INTO EXCEPTIONS;
ALTER TABLE EMPLOYEES ENABLE CONSTRAINT PK_EMPLOYEES
*
ERROR at line 1:
ORA-02437: cannot validate (SCOTT.PK_EMPLOYEES) -
primary key violated

SQL> SELECT E.TABLE_NAME, E.ROW_ID, A.EMPLOYEE_ID
2 FROM EXCEPTIONS E, EMPLOYEES A
3 WHERE E.ROW_ID = A.ROWID
4 ;

TABLE_NAME ROW_ID EMPLOYEE_ID
---------- ------------------ -----------
EMPLOYEES AAAGJRAABAAAJLcAAA 1
EMPLOYEES AAAGJRAABAAAJLcAAC 1

透過 EXCEPTIONS 表格,就可以找到有問題的行,然後修正它們了。

刪除限制

刪除限制的語法是 ALTER TABLE DROP:

SQL> ALTER TABLE EMPLOYEES DROP CONSTRAINT UK_EMPLOYEES_01;

Table altered.

SQL> ALTER TABLE EMPLOYEES DROP PRIMARY KEY CASCADE;

Table altered.

SQL> ALTER TABLE EMPLOYEES DROP CONSTRAINT CK_EMPLOYEES_01;

Table altered.

刪除 NOT NULL 限制的語法比較特別,必須用 ALTER TABLE MODIFY:

SQL> ALTER TABLE EMPLOYEES MODIFY (LAST_NAME NULL);

Table altered.

刪除父表格

正如禁止父表格的 PRIMARY KEY一樣,刪除父表格也會產生同樣的問題,就是子表格不能參考父表格,所以 Oracle 會防止您這樣做:

SQL> DROP TABLE DEPARTMENTS;
DROP TABLE DEPARTMENTS
*
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys

如果您真的希望這樣做,就必須在 DROP TABLE 內加入 CASCADE CONSTRAINT 一詞,那麼子表格的 FOREIGN KEY 限制也會同時被刪除。

SQL> DROP TABLE DEPARTMENTS CASCADE CONSTRAINTS;

Table dropped.

除了這種方法外,您也可以禁止或刪除子表格的 FOREIGN KEY。

限制可遲性

<term key="deferability">「可遲性」(Deferability)</term>

分享到:
评论

相关推荐

    影刀RPA中级证书-数据处理-列表计算价格

    影刀RPA致力于为各行业客户提供高效、灵活的自动化解决方案。能够实现PC、手机上任何软件的自动化操作,支持Windows、Linux等操作系统,以及桌面软件、Web程序和手机App的自动化。 影刀RPA的核心功能包括数据抓取、解析、校验和自动填表,还支持可视化流程设计器、Python和JavaScript脚本接入,以及流程录制等功能,帮助用户快速搭建自动化流程。影刀RPA结合AI技术,支持机器视觉、自然语言处理等高级功能,进一步提升自动化能力。影刀RPA广泛应用于电商、金融、制造等行业,帮助客户实现订单处理、客户数据录入、财务对账等任务的自动化。影刀实战,影刀证书快速获取,影刀功能定制

    cloud单点登录集成

    cloud单点登录集成

    JAVAFX开发的虚拟桌宠,禁止商用!!!!

    女朋友生日,突发奇想用她喜欢的表情包做了个虚拟桌宠 大家要用只需要替换一下GIF就行

    大学生创新创业大赛项目 - 仿 Envato 的电商项目.zip

    大学生创业项目源码

    open-vm-tools-11.0.5-3.el7-9.9.x64-86.rpm.tar.gz

    1、文件内容:open-vm-tools-11.0.5-3.el7_9.9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf open-vm-tools-11.0.5-3.el7_9.9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    华为网路设备学习-14 (web界面中复原防火墙实验)

    华为网路设备学习-14 (web界面中复原防火墙实验)

    基于springboot框架的Javaweb体育馆管理系统的设计与实现(完整源码+数据库sql文件+项目文档+Java项目编程实战+编程练手好项目).zip

    关键词:海滨体育馆管理,Java技术,MYSQL数据库,Spring Boot框架 1 引言 1 1.1 课题背景 1 1.2 设计原则 1 1.3 论文结构安排 2 2 系统关键技术 3 2.1 JAVA技术 3 2.2 B/S结构 3 2.3 MYSQL数据库 4 2.4 Spring Boot框架 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 经济可行性 5 3.1.3 运行可行性 5 3.1.4 法律可行性 5 3.2 系统性能分析 5 3.3 系统功能分析 6 3.4 系统流程分析 7 3.4.1 注册登录流程 7 3.4.2 添加信息流程 8 3.4.3 删除信息流程 8 4 系统设计 9 4.1 系统概要设计 9 4.2 系统结构设计 9 4.3 系统顺序图设计 10 4.4 数据库设计 10 4.4.1 数据库E-R图设计 10 4.4.2 数据库表设计 12 5 系统的实现 15 5.1 登录模块的实现 15 5.2 注册模块的实现 15 5.3 学生管理模块的实现 16 5.4 系统主界面模块的实现 16 5.5 器材管理模块

    Python实现基于IBES-ELM基于改进的秃鹰搜索优化算法优化极限学习机的数据回归预测 多指标的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档详细介绍了一个名为《Python实现基于IBES-ELM基于改进的秃鹰搜索优化算法优化极限学习机的数据回归预测》的项目。该项目旨在通过结合改进的秃鹰搜索优化算法(IBES-EO)和极限学习机(ELM),优化ELM模型以提高其预测精度,尤其针对多指标、高维数据以及噪声数据的处理进行了探讨。项目涵盖了从数据预处理到建模预测的一系列完整流程,并提供了代码案例和GUI界面设计思路。文档详细阐述了模型的工作机制、适用场景及其实现细节。 适合人群:对机器学习有兴趣,特别是对ELM、IBES-EO感兴趣的研究人员、开发人员和技术爱好者。 使用场景及目标:适用于各种回归预测问题,包括但不限于金融预测、气象预测、健康数据分析和智能交通系统等。目标在于提供一种高效的解决方案,提高在大规模复杂数据集中进行回归预测的能力,同时也展示了如何将生物启发式的优化算法运用于改进现有的机器学习模型,为实际应用提供更多可能。 阅读建议:文档按照章节顺序编排,从背景介绍到具体实现再到最终总结。初学者可以从头至尾通读,以掌握全流程概念和技能;有一定经验的读者可以直接跳转至自己感兴趣的环节,例如优化算法的具体设计或者代码实现部分。建议边学习边动手实验,以达到最佳的学习效果,并可通过提供的完整示例代码加深理解和记忆。此外,项目中有关于系统架构设计、API接口搭建等内容也可作为实际工程项目参考。

    智能海报设计助手:AI助力简易高效的海报制作解决方案

    内容概要:本文介绍了一款名为智能海报设计助手的应用程序,该应用程序是一款面向大众使用的AI工具,专注于解决普通人在设计高质量海报时遇到的问题。应用程序拥有强大的创意灵感库,可以根据用户提出的特定需求(例如主题、风格偏好等),快速推荐不同类型的海报设计方案,并配备智能化的一键素材筛选系统和自动排版功能,使得整个海报制作流程更为简化、高效,即使是无设计经验的用户也能独立完成高水平的作品。 适合人群:缺乏专业设计能力的广大非专业人士,如商家营销人员、活动策划者、个体创作者。 使用场景及目标:帮助需要短时间内完成海报宣传材料准备的工作人士提高工作效率,减少人力投入的同时获得媲美专业人士水准的成品。 阅读建议:文章旨在强调此智能海报设计器对普通用户的友好性和便捷性的特点,因此重点在于理解它是怎样利用先进技术来满足一般用户的实际应用需求的,而不仅仅关注具体的操作方法。这有助于潜在用户决定是否采用这一工具来进行海报创建工作。

    STL浅谈,从vector到map

    本文为C++ STL入门指南,详解vector、stack、map等核心容器的用法与底层原理,助你高效掌握标准模板库!

    大创项目驱动.zip

    大学生创业项目源码

    西门子S71511PLC实现PID程序控制阀门开度和模拟量转换:博途WinCC画面搭建完整演示,西门子S71511PLC实现PID程序控制阀门开度和模拟量转换:博途WinCC画面搭建完整演示,7自由度

    西门子S71511PLC实现PID程序控制阀门开度和模拟量转换:博途WinCC画面搭建完整演示,西门子S71511PLC实现PID程序控制阀门开度和模拟量转换:博途WinCC画面搭建完整演示,7自由度车辆动力学模型与联合仿真验证 软件使用:Carsim2020.0+Matlab Simulink2018b 适用场景:为了验证7自由度模型的正确性,与Carsim进行联合仿真验证,采用模块化建模方法,搭建了电机模型、参数计算、轮胎模型、7自由度动力学模型。 包含模块:电机模型模块1和2、参数计算模块、轮胎模型、7DOF模型、详细参考文献及说明文档。 包含:Matlab Simulink源码文件,详细建模说明文档,对应参考资料及相关文献, ,7自由度车辆动力学模型;联合仿真验证;Carsim2020.0;Matlab Simulink2018b;模块化建模方法;电机模型;参数计算模块;轮胎模型;详细参考文献;建模说明文档。,7自由度车辆模型联合仿真验证:Carsim2020.0与Matlab Simulink2018b应用实践

    【css酷炫效果】纯CSS实现立体纸张折叠动效

    对应博客地址:https://blog.csdn.net/u011561335/article/details/146313054

    大创项目前端.zip

    大学生创业项目源码

    大创项目_27.zip

    大学生创业项目源码

    【毕业设计】基于微信小程序的社区团购系统+ssm后端【源码+论文+答辩ppt+开题报告+任务书】.zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    iPhone8,1-12.3(16F156)-0002313038C3C3BA(617033133966266).shsh

    iPhone8,1-12.3(16F156)-0002313038C3C3BA(617033133966266).shsh

    org.eclipse.equinox.launcher.win32.win32.x86-64-1.2.700.v20221108-1024

    org.eclipse.equinox.launcher.win32.win32.x86-64-1.2.700.v20221108-1024

    基于在山地隧道采集到的数据情况,对车辆状态未来的碰撞预测【包含数据和代码、cnn-lstm-attention的类别预测】

    本项目的异常状态预测任务聚焦于基于车辆与周围环境的相对数据,预测未来每个网格的异常状态。 预测的目标是基于当前时刻的九宫格风险矩阵状态,预测下一时刻每个网格的风险等级。 九宫格共有9个网格,每个网格可能对应低、中、高不同的异常风险状态,每个时间点的输出是一个包含9个元素的矩阵,其中每个元素表示一个网格的异常状态。 如果某些网格当前没有车辆或没有风险,在输入矩阵中用0表示为无风险的状态。例如,当前时刻的九宫格异常状态为[0, 0, 高风险, 高风险, 0, 0, 0, 0, 0],预测后的下一时刻的九宫格异常状态为[0, 0, 中风险, 中风险, 0, 低风险, 0, 0, 0]。

Global site tag (gtag.js) - Google Analytics