• <abbr id="kam3m"><form id="kam3m"></form></abbr>

    <u id="kam3m"><li id="kam3m"></li></u>

  • <table id="kam3m"></table>
    
    

    <u id="kam3m"></u>
    18禁无遮挡啪啪无码网站,真人无码作爱免费视频,2018年亚洲欧美在线v,国产成人午夜一区二区三区 ,亚洲精品毛片一区二区,国产在线亚州精品内射,精品无码国产污污污免费,国内少妇人妻偷人精品
    首頁 > 文章中心 > mysql數據庫

    mysql數據庫

    前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇mysql數據庫范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。

    mysql數據庫范文第1篇

    【 關鍵詞 】 mysql;范式;數據表

    The Structure Design Based on MySQL Database

    Chang Da-jun

    (College of Electrical And Information, Changchun Architecture & Civil Engineering Clllege JilinChangchun 130607)

    【 Abstract 】 MySQL database is a kind of open source relational database with open cross platform, it is that its things and its related data in the form of a two-dimensional table data information description,at the same time, the MySQL provides the complete constraint operation,so as to guarantee data security.This paper is based on the relevant data and information of university research management platform,develop and study the structure relationship between the relevant data tables and data and data.

    【 Keywords 】 mysql; paradigm; data table

    1 引言

    數據庫作為信息管理工具,已然成為當今數據信息管理的重要管理平臺。作為關系型數據庫MySQL,由于其具有的開源性和跨平臺性已經越來越多的被廣大用戶所使用。MySQL數據庫可以實現多源化數據連接操作,包括網絡連接、ODBC連接等,同時MySQL還提供優化查詢系統,通過改系統查詢操作可以提高查詢效率和查詢速度,從而提高用戶對數據信息的處理過程。本文以高校科研管理的相關數據信息作為數據,通過建立科研立項信息表、管理機構信息表以及項目申請人信息表等多張表格,在MySQL數據庫的信息管理平臺上,進行相關表格中數據信息以及表與表之間的數據結構分析。

    2 3NF范式

    2.1 3NF概述

    數據冗余是在數據處理方面需要解決的重要內容,數據冗余處理如何會直接影響最終數據處理結果。因此在設計數據庫時候,特別是在關系型數據庫的設計過程中,往往要提出不同規范即范式來規范數據操作,達到用戶所需的要求。關系型數據庫主要提供六種范式,但其中常用的是第三范式――3NF,其以第二范式為基礎,消除函數間的依賴關系。

    在3NF中,數據結構遵循第二范式中提出的數據信息定位化原則,也就是說在數據規范化的過程中,采用第三范式進行數據規范時要以第二范式作為數據規范操作基礎,然后將第二范式得到的數據關系模式采用數據投影方式將數據關系進行分解,從而得到3NF范式關系模式集合,完成第三范式的數據規范化操作過程,達到較好的數據冗余處理結果。

    2.2 3NF定義

    在數據庫的研究過程中,針對計算機及其相關技術發展的不同階段,所給出有關第三范式的定義也是各不相同。在研究3NF前先給出有關第三范式傳遞函數的定義。

    定義:如果XY,YZ,且YZ是非平凡函數依賴,但不成立YX和ZY,則稱Z傳遞函數依賴于X,記作XYZ。

    通過定義可以看出,在X、Y和Z三者之間存在相互依賴關系,也就是說假如存在一個關系集合R(u)所構成的關系模式,其中關系X和關系Y之間存在著關系X決定關系Y,然后關系Y又決定關系Z,因此Y依賴與X,而Z依賴與Y。

    2.3 投影分解過程及其算法

    第二范式雖然規范化了數據表格的操作,但在數據冗余消除、刪除異常和插入異常等問題不能得到較好的解決,而第三范式卻能較好解決上述問題的出現,因此對于第三范式在進行解決的過程中除了要依賴與第二范式外,還要采用投影分解方式來實現對數據表的分解過程,以達到第三范式對數據表的要求,具體投影分解步驟及其算法如下:

    (1)設關系集合R及其最小函數依賴關系集合Rmin;

    (2)求出R的最小函數依賴集Rmin;

    (3)如果R中的關系集合等于函數依賴集合Rmin,則說明關系集合R∈3NF范式,結束第三范式分解過程;如果在Rmin的屬性集合中不存在,但在R屬性集合中存在的屬性關系,則將相應屬性從R中刪除,從而構成一個新關系模式集合,將過程轉向(2);如果存在某個函數依賴關系,即Rmin中依賴與R的所有屬性關系,關系集合R將不能分解;但如果Rmin中存在有X依賴與Y的關系,則分解之后的關系包中應該應包含{XY}的關系集合,若有XY1,XY2,XY3......XYn都屬于Rmin中的關系集合,則分解之后的關系集合包應該包含{XY1,Y2,Y3......Yn}。

    通過上面對第三范式的投影分解算法及其步驟描述過程來看,當第(5)步中如果存在X不是非主屬性,則Y對任意鍵值多存在函數傳遞依賴關系XYZ,因此關系集合R是3NF。否則不存在函數傳遞依賴關系,則不存在第三范式,需要進行上述步驟。

    3 數據庫結構設計

    3.1 數據表設計

    數據表格的建立是完成數據信息存儲和信息處理的重要過程,根據高校科研信息管理平臺建設以及完成對數據信息處理需要,建立相關數據表,用戶信息表、申請教師信息表、申請學院信息表等。通過對高校科研信息管理需求分析所得到的結果可以規劃出有關數據表,本文以院系及專業為例進行第三范式的投影分解過程來進行第三范式的研究。在院系及專業方面所涉及到的數據主要是學院編號、學院名稱、專業編號及專業名稱等,因此得到的數據如表1所示。

    根據表1的描述可以看出,在該表中學院ID是作為該表中的主鍵,也就是說在該表中學院ID是完成該表數據索引的唯一鍵值,學院名稱、專業ID和專業名只是作為非規范化數據信息,因此如果在完成數據信息插入、刪除、修改等工作會出現數據信息操作錯誤,而在數據冗余方面也沒達到較好的數據冗余處理,在使用該表來完成數據信息操作會出現較高的數據冗余,所以在用戶管理上存在不便,同時在DBMS中的管理中也存在缺陷。

    3.2 數據結構操作

    為了減少數據冗余和有關插入、刪除等誤操作,對表1進行數據規范化處理。根據第三范式――3NF定義及其算法的描述,對表1進行投影操作,完成對數據信息分解和分化,以達到數據表格簡化,實現數據結構優化目的。在整個數據結構優化操作過程中主要采用3NF范式的投影過程,將表1完成結構化和規范化,方便數據處理和數據保存等過程。根據3NF范式的要求,得到表2和表3。

    表2主要作用是完成對申請教師所在學院信息的數據存儲,根據高校科研管理信息平臺設計的需要,將該表中的字段名collegeid設計為主鍵,是各個申請教師所在學院信息的區別表述。

    表3主要作用是完成申請教師專業信息存儲和處理,在設計該表過程中需要將dptid設置為該表關鍵字,即專業的唯一性。同時,在該表中以collegeid作為外鍵以達到表2和表1之間的依賴關系,完成第三范式的投影操作過程。

    4 結束語

    通過本文以高校科研管理平臺中所涉及到數據表1的數據處理過程,以及采用第三范式完成對表2和表3的投影分解,可以看出3NF在對數據結構處理過程中降低數據冗余,使得數據更加完整和簡捷。同時,對第三范式的使用,使得改系統在使用過程不會出現插入異常、刪除異常等操作導致信息在讀取上的錯誤信息。

    參考文獻

    [1] 周煒,周敏剛.關系數據庫二三范式判別算法[J].航空計算技術,2006年04期.

    [2] 王振杰,顏虹,黨少農.規范化數據庫設計在醫學數據管理中的應用[J].中國衛生統計,2009年03期.

    [3] 歐陽林艷.無損BCNF分解算法的改進[J].洛陽師范學院學報,2015年02期.

    基金項目:

    吉教科合字[2014]第622號。

    mysql數據庫范文第2篇

    【關鍵詞】 PHP語言 MySQL數據庫 數據表 連接

    一、引言

    隨著時代的飛速發展,科學技術手段水平的不斷提高,人們對互聯網的要求也越來越高,各類管理系統也成為了現代科技不可或缺的產物。

    以PHP+MySQL為基礎開發的管理系統,因為其獨特的優點成為了各大公司管理系統建設的首要選擇,而PHP與MySQL的連接更是各類管理系統的核心。

    二、PHP語言簡介

    PHP(超文本預處理器)是一種廣泛運用的開源腳本語言。語法吸收了C語言、Java和Perl的特點,可以嵌入到HTML中,利于學習,使用廣泛,主要適用于Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法,并提供了與各種數據庫連接的函數。PHP是完全免費的,可以不受任何限制的獲取源代碼和自用下載,使得PHP的使用效率很高。

    三、MySQL數據庫簡介

    MySQL是一種開放源代碼的關系型數據庫管理系統,由瑞典MySQL AB公司開發,MySQL數據庫因其體積小、速度快、總體擁有成本低而受到了中小企業的熱捧。MySQL數據庫是基于Linux操作系統開發出來的數據庫,眾所周知Linux是開放源碼的操作系統,所以MySQL數據庫也是開放源碼的免費數據庫,這也是MySQL數據庫的最大優點,雖然其功能的多樣性和性能的穩定性差強人意,但是依然有很多用戶在使用。

    四、創建數據庫和數據表

    以下操作均以本項目“飯卡智能管理系統”作為示例進行說明,數據庫名稱為ecard,用戶信息表名稱為:info_ user。

    當然,在Mysql中創建數據庫和數據表最簡單的方法就是利用鼠標進行操作,而在這里,我主要談論的是利用SQL語句進行設計。

    在MySQL中創建數據庫用CREATE DATABASE(ecard);語句實現。以防在后來數據庫操作中因編碼的問題而出現亂碼的情況,在這里,我建議此步驟可以利用手動方法建立數據庫,排序規則選擇utf8-general-ci;

    數據庫建好之后就是創建數據表了,在Mysql中創建數據表的語句是:

    CREATE TABLE info_user(ID INT(11) PRIMARY KEY AUTO_INCREMENT,

    Name VARCHAR(25) NOT NULL,

    Gender VACHAR(2) NOT NULL,

    ID_card VARCHAR(35) NOT NULL ,

    Phone VARCHAR(25) NOT NULL,

    Password VARCHAR(25) NOT NULL,

    Department VARCHAR(25) NOT NULL);

    其中ID表示學號,Name表示姓名,Gender表示性別,ID_card表示身份證號,Phone表示聯系方式,Password表示密碼,Department表示院系。

    到這里,數據庫和數據表就已經建立成功了。

    五、PHP語言連接MySQL數據庫

    在PHP中,要連接數據庫,首先必須得創建與數據庫對應的字段,這里主要討論如何連接數據庫,用到的語句為:

    $link=mysql_connect(’localhost’,’root’,’’);連接數據庫

    mysql_select_db(’ecard’,$link);選擇數據庫

    $ s q l = " S E L E C T * F R O M i n f o _ u s e r W H E R E ID=binary(’{$ID}’)";數據庫查詢語句

    $res=mysql_query($sql,$link)or die("查詢失敗".mysql_ error($link));判斷語句,如果執行成功則返回TRUE,執行不成功則返回FALSE

    $arr=mysql_num_rows($res);返回結果集行的數目

    $sql="INSERT INTO info_user(ID,Name,Gender,ID_ card,Phone,Password,Department) VALUES(’{$ID}’,’{$name}’,’{$gender}’,’{$ID_card}’,’{$Phone}’,’{$Password}’,’{$Department}’)";數據庫插入語句

    至此,PHP語言連接MySQL數據庫成功。

    六、結束語

    學校在經費缺、人員少的情況下,利用信息化手段建設和應用飯卡管理系統,對于規范學校的管理系統具有極其重要意義。有利于提高飯卡的利用效率,提高學校后勤集團的工作效率和服務水平, 也給廣大師生提供了便利。

    參 考 文 獻

    mysql數據庫范文第3篇

    關鍵詞:MySQL;C API;多線程

    中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2007)16-30904-02

    Based on C API MySQL Database Multi-threaded Access Methods

    YU Cheng-gong

    (Zhejiang Pharmaceutical College,Ningbo 315100,China)

    Abstract:Currently,the database in all walks of life were widely used.In many commercial database software,SQL Server and Oracle are used more and therefore their prices are more expensive. This paper describes the MySQL database in single-threaded or multi-threaded programming environment using C API access to the MySQL database, and gives the corresponding code and analysis. The database is open source database, with a higher maturity level, and the community version can be used for free. It satisfies the need to use the C API access to the database of project development, and reduces development costs.

    Key words:MySQL;C API;multi-threaded

    1 引言

    隨著社會信息化的深入,數據庫在社會各個領域被廣泛應用。在這些數據庫應用項目開發過程中,需要做兩方面的決策:1. 使用何種數據庫軟件;2. 采用何種方式訪問數據庫。數據庫軟件的選擇面比較寬,在目前眾多商業數據庫軟件中,SQL SERVER 和ORACLE被較多的使用,當然這兩個數據庫軟件的價格也較昂貴,本文選擇可免費使用的MySQL數據庫社區版本,MySQL庫屬于開源數據庫,具有較高的成熟度和可靠性。數據庫的訪問方式有很多,可以使用ODBC、DAO、ADO等方法,這些方法簡單直接但是效率不高,不適合大型復雜的系統使用,例如網絡游戲的數據庫系統開發需要考慮同時大量的數據庫訪問,因此訪問的效率非常重要。基于C程序語言的高效率,使用C API訪問數據庫可以提高數據庫的訪問效率。基于以上兩點,本文將介紹基于C API的MySQL數據庫訪問方法,給出在單線程和多線程程序環境下的具體代碼和分析。

    2 建表

    為了方便說明數據庫的訪問,先建立一個數據庫表TestTable,可以使用SQL語句創建該表,也可以使用MySQL提供的圖形界面來創建。數據庫表中字段如下:

    該數據庫表使用最常見的用戶名和密碼作為字段,本文將通過該表來實現不同程序環境下基于C API的數據庫的訪問方法。

    3 單線程程序的數據庫訪問

    單線程應用程序訪問MySQL數據庫相對簡單,其過程包含以下幾步:

    (1)初始化MySQL庫

    (2)初始化數據庫連接句柄

    (3)連接數據庫

    (4)通過SQL語句操作數據庫并處理相應數據

    (5)關閉數據庫連接

    (6)結束MySQL庫

    通過這五個步驟即可實現數據庫的訪問,具體代碼和分析如下:

    //在main主函數中添加代碼

    //1.定義訪問數據庫所需變量

    MYSQL * myData;

    MYSQL_RES * res;

    MYSQL_ROW row;

    //2. 初始化MySQL庫和數據庫連接句柄

    myData = mysql_init((MYSQL*) 0);

    //3. 連接數據庫,MYSQL_IP和MYSQL_PORT表示數據庫的IP和端口

    // MYSQL_ACCOUNT, MYSQL_PASSWORD表示數據庫連接的帳號和密碼

    //MYSQL_DBNAME表示所要訪問的數據庫名

    mysql_real_connect( myData, MYSQL_IP, MYSQL_ACCOUNT, MYSQL_PASSWORD, MYSQL_DBNAME, MYSQL_PORT,NULL, 0 )

    //4. 通過SQL語句操作數據庫并處理相應數據

    //4.1新建用戶名為abcdef,密碼為123456的記錄

    mysql_query(myData, "insert into TestTable value(‘abcdef’,’ 123456’)");

    //4.2顯示所有記錄

    //查詢所有記錄

    mysql_query(myData, "select * from TestTable");

    //將查詢結果保存到res中

    res = mysql_store_result( myData ) ;

    //逐條顯示記錄

    Int j = 0;

    while ( row = mysql_fetch_row( res ) ) {//獲取一條記錄

    j = mysql_num_fields( res ) ;//獲取每條記錄的字段數

    for ( k = 0 ; k < j ; k++ )

    printf( “%s”, row[k] ) ;

    printf( “\n”) ;

    }

    //釋放res

    mysql_free_result( res ) ;

    //5. 關閉數據庫連接

    mysql_close( myData );

    //6. 結束MySQL庫

    mysql_library_end();

    關于代碼的幾點說明:

    (1)定義變量中的三個數據結構為訪問MySQL所需,MYSQL結構表示一個數據庫連接的句柄,其中包含了數據庫連接所需的參數,MYSQL_RES結構表示數據庫訪問中一個查詢的返回結果,MYSQL_ROW結構表示返回結構中的一條記錄;

    (2)獲取查詢結果res并處理完畢,必須釋放res,否則會造成內存泄露

    (3)在單線程時,步驟初始化MySQL庫和數據庫連接句柄可合并, 由mysql_init()來處理。該函數會自動調用函數mysql_library_init()來初始化MySQL庫,同時初始化連接句柄。

    4 多線程環境下的數據庫訪問

    多線程環境下的數據庫訪問需要保證線程安全。Windows版本的MySQL C API函數都是線程安全的,除了mysql_library_init(),而我們剛才的代碼中使用的mysql_init()函數會自動調用函數mysql_library_init()來初始化MySQL庫,因此在多線程環境下,需要不同的初始化代碼和清理代碼。具體過程如下:

    (1)在主函數中調用mysql_library_init()來初始化MySQL庫;

    (2)啟動各數據庫訪問線程

    (3)主函數等待各個線程的結束

    (4)調用mysql_library_end ()清理MySQL庫。

    其中數據庫訪問線程的代碼和單線程數據庫訪問代碼類似,但是需要如下變化:

    (1)單線程中的第2步初始化MySQL庫和數據庫連接句柄,不能再使用mysql_init(),代碼應作如下修改:

    //初始化線程

    my_init();

    mysql_thread_init();

    //初始化myData

    myData = malloc(sizeof(MYSQL));

    memset(&myData, 0, sizeof(MYSQL))

    (2)上述初始化myData,只是將myData所有成員設為0,如果有需要可以根據具體情況設置該結構成員的值,例myData->reconnect= 1,其作用是設置數據庫連接屬性為重連接,即當數據庫連接斷開時,自動重新連接;

    (3)單線程中的第6步不在需要,改為結束線程的清理工作,即調用mysql_thread_end()函數。

    5 總結

    綜上所述,使用C API訪問MySQL數據庫在不同線程環境下的區別主要在于初始化和訪問結束后清理代碼,也就是說除了初始化和清理代碼,MySQL提供給我們的C API函數都是線程安全的。最后需要有一點說明,使用C API訪問數據庫可以提高數據庫的訪問效率,但并不是所有的數據庫項目都適合這種方式,該方式適合需要大量實時并發處理的數據庫項目,例如網絡游戲的數據庫項目,對于有此需求的數據庫項目可參考本文。

    參考文獻:

    mysql數據庫范文第4篇

    【關鍵詞】Mysql數據庫 圖書管理 系統安全 研究

    SQL(結構化查詢語言)是世界上最流行的和標準化的數據庫語言。Mysql可以說是目前最為流行的開源數據庫管理系統軟件,是一個真正的多用戶、多線程SQL數據庫服務器。Mysql開放源碼,快捷靈活、穩定和容易使用等優點決定了其在中小型管理系統應用的優勢。本文以基于Mysql網絡數據庫的圖書管理系統為例,從安全穩定性要求和采取的安全策略等方面進行分析研究。

    1 Mysql在信息管理系統的應用與優勢

    1.1 Mysql的基本特性與應用

    Mysql與其他大型數據庫Oracle、DB2、SQL Server等相比,有自身的不足之處,但是沒有影響到Mysql在信息管理系統的應用。在個人或者是中小型的企業,Mysql發揮了自身的優勢與作用。Mysql開放源碼,具有快捷靈活、穩定和容易使用等優點,并有效的提供了PHP、C,C++,JAVA和HTML等主流前端開發軟件的API接口。支持多種操作系統包括Windows 、Linux 、Solaris、Mas OS等。目前,搭建動態網站或者服務器的開源軟件組合有典型的網絡架構LAMP,極大地方便了開發者。Mysql應用非常廣泛,Google、facebook、等使用Mysql作為網絡數據庫。

    1.2 Mysql應用于圖書管理系統的優勢

    Mysql應用于圖書管理系統的優勢主要分為三個方面,一是免費開源優勢,如果再使用linux操作系統,可以減少購買操作系統和數據庫的開銷。二是多種平臺支持的優勢,Mysql可以與多個平臺進行有效的連接,實現信息資源的共享。三是中小型數據庫靈活穩定的優勢,在設計Mysql程序的時候,加入了SQL中沒有的一些補充條件,更加的適用于在中小型數據庫中使用。圖書管理系統通常要保存用戶信息、圖書信息和借閱信息,以及建立相關的書籍查詢等,數據倉庫并不是很龐大,因此,使用Mysql來管理數據非常合適。

    2 基于Mysql的圖書管理系統安全穩定性分析

    高校圖書管理系統是基于互聯網的網絡數據庫,通常采用B/S的體系結構,因此,在瀏覽器層、Web 服務器層、數據庫服務器層都會存在安全性要求,以及在操作系統、網絡技術等方面的安全問題。只有控制好圖書管理系統的安全問題,才能保證信息資源的有效共享。

    基于網絡數據庫的圖書管理系統的安全穩定性具有以下幾個特點:

    (1)較高的穩定性,包括操作系統的穩定性和數據庫系統的穩定性,要保持Mysql數據庫的正常運行軌跡。

    (2)數據的保密性能,對客戶信息、訪問瀏覽量、客戶端等進行有效的保密。

    (3)運行的速度很快,包括瀏覽器端、數據庫服務器端的訪問速度,以保證數據信息在查找、修改等方面的快速反應。

    (4)數據的備份與數據的恢復功能。數據庫服務器中,包括圖書信息、借閱圖書記錄、客戶賬號等在內的相關數據的安全問題,是保證圖書管理系統正常運轉的重要因素。要采取嚴格的防范措施,同時,當發生數據故障的時候,要在最短的時間內恢復數據與系統。

    3 基于Mysql的圖書管理系統安全穩定性策略

    圖書管理系統通常采用三層B/S結構模式,即用戶層、Wed服務器層和數據庫層。圖書管理系統要注意提高數據庫安全、操作系統安全和網絡安全技術等方面的安全策略。

    3.1 優化數據庫設計

    比如,在遵循關系模式規范化的基礎上,優化表設計適當增加中間表或增加冗余字段以減少連接查詢所花的時間,優化JOIN操作和子查詢盡量使用全連接避免產生中間表,盡量避免LIKE 關鍵字和通配符進行查詢。另外,還可以修改my.ini文件,對相關參數如sort_buffer_size 、read_buffer_size 、query_cache_size、max_connections等,設置合適的緩沖區大小和MySQL允許的最大連接進程數,以優化服務器提高系統性能,提高保證圖書信息資源查詢效率。

    3.2 數據容災與備份機制

    要定期地進行數據備份,保護圖書書目數據、流通數據、客戶信息等。定期的進行數據庫的重組工作,增強數據庫的使用性能。用好MYSQL的容災與備份機制,比如:建立主從數據庫集群,采用 MySQL 復制;制定數據庫備份/恢復計劃;啟動數據庫服務器的二進制變更日志;定期檢查數據表;定期對備份文件進行備份;把 MySQL 的數據目錄和備份文件分別放到兩個不同的驅動器中,等等。

    3.3 帳戶安全策略

    可以從賬戶安全檢查、系統內部安全措施、哈希加密等方面著手進行。比如,檢查用戶表mysql.user是否有匿名空賬號(user=‘’ ),如有應將其刪除。使用哈希加密帳戶密碼。加強客戶的登錄認證,尤其是服務器主機的登錄認證。在主數據庫創建從數據庫操作所用的用戶,并指定使用SLL 認證等等。

    3.4 網絡安全和操作系統安全策略

    在網絡安全策略方面,利用NAT技術,有效的防止發生來自網絡外部的攻擊現象,將局域網絡內部的計算機系統進行隱蔽。正確設置計算機操作系統,確保客戶使用真實身份,登錄具有合法性。此外,還可以設置系統的實時監控,優化網絡防火墻、文件加密以及殺毒軟件技術的升級,等等。

    4 結語

    綜上所述,要確保基于Mysql在圖書館管理系統的安全穩定性能,要考慮很多種因素的影響,在數據庫設計、數據庫服務器、數據容災與備份、帳戶安全,以及計算機網絡、操作系統等方面進行優化配置。圖書管理系統的安全與穩定性能保證了信息數據的安全、穩定性與高效,保證了客戶在不同的時間、地點、平臺中有效的使用圖書館的資源信息共享。

    參考文獻

    [1]晉征.論基于網絡數據庫的圖書館管理系統安全性研究與實現[J].網絡安全技術與應用,2015(3):27-29.

    [2]陽學軍.基于網絡和人工智能的圖書館信息管理系統研究[J].岳陽職業技術學院學報,2005(3):59-61.

    [3]林愛鮮.基于神經網絡的圖書館管理系統的構建研究[J].電腦與電信,2012(4):48-50.

    [4]田華.圖書館分布式數據庫安全技術研究[J].現代情報,2007(4):161-163

    mysql數據庫范文第5篇

    關鍵詞: 數據庫; 完整性; 觸發器; MySQL

    中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2014)04-66-03

    Abstract: The trigger is a special storing procedure, and a major method to force the business rules and control the data integrity. The control mechanism of data integrity according to trigger technology in MySQL is discussed, mainly work principle and implementation process with examples of analysis and design. In connection with the emphasis and difficulty of trigger in database learning, the understanding and using introduction of trigger in MySQL are given.

    Key words: database; integrity; trigger; MySQL

    0 引言

    隨著計算機技術的發展,數據已經滲透到當今每一個行業和業務職能領域,成為重要的生產因素。數據庫技術已經成為計算機信息系統與應用系統的核心技術和重要基礎。數據庫是一門理論與實踐緊密結合的課程,它作為計算機及相關專業的骨干課程,在教學中占有重要的位置[1]。觸發器是這門課程中的一個重點,觸發器的靈活性增加了學生學習的難度,是該門課程的難點之一[2]。

    觸發器是與表事件相關聯的特殊存儲過程,它們不能直接執行,只在發生針對表的insert、update、delete事件時觸發。用戶不能繞過觸發器,除非觸發器向客戶端發送消息,否則最終用戶將不會意識到觸發器的存在。

    觸發器的開發涉及多種SQL技術。要開發出良好的觸發器,必須理解事務的流程和鎖定、SQL以及存儲過程。觸發器包含幾個獨特的元素,開發人員必須對其進行仔細規劃,并通過觸發器實現復雜的業務規則和數據驗證功能。

    有些DBA反對使用觸發器,因為它們是專用的。如果將數據庫移植到其他平臺,必須重寫大部分觸發器代碼。另外,觸發器還被指責影響性能。然而,如果規則過于復雜,無法使用約束來實現,則只能使用觸發器來實現。業務規則在服務器外實現就不是規則了,而只是建議。設計糟糕的觸發器將影響性能,但設計良好的觸發器不但可以確保數據完整性,還能提供良好的性能[3]。

    1 基本概念

    觸發發器是一種特殊的存儲過程,它在插入、刪除或修改特定表中的數據時觸發執行,它比數據庫本身標準的功能有更精細和更復雜的數據控制能力。與存儲過程不同的是,存儲過程通過其他程序來啟動運行,而觸發器由一個事件來啟動運行,并且觸發器不能接收參數[4]。

    數據庫觸發器有以下作用。

    ⑴ 安全性:可以基于數據庫的值使用戶具有操作數據庫的某種權利。

    ⑵ 審計:可以跟蹤用戶對數據庫的操作,審計用戶操作數據庫的語句,把用戶對數據庫的更新寫入審計表。

    ⑶ 實現復雜的數據完整性規則:實現非標準的數據完整性檢查和約束,觸發器可產生比規則更為復雜的限制,與規則不同,觸發器可以引用列或數據庫對象。例如,觸發器可以回退任何借出去的書超過庫存的數量。

    ⑷ 實現復雜的非標準的數據庫相關完整性規則。觸發器可以對數據庫中相關的表進行連環更新。

    ⑸ 同步實時地復制表中的數據。

    ⑹ 自動計算數據值。如果數據的值達到了一定的要求,則進行特定的處理。例如,某本書的庫存低于一定指標,則立刻向圖書管理員發出警告數據。

    2 創建觸發器

    只有具備super權限的MySQL用戶才能執行創建觸發器的命令。創建觸發器命令格式如下:

    CREATE TRIGGER trigger_name BEFORE|AFTER

    INSERT|UPDATE|DELETE ON table_name FOR

    EACH ROW CODE.

    觸發器是與表有關的命名數據庫對象,當表上出現特定事件時,將激活該對象。

    觸發器與命名為table_name的表相關,table_name必須引用永久性表,MySQL中不能將觸發器與TYEMPORARY表或視圖關聯起來。

    { BEFORE | AFTER }:觸發器有執行的時間設置,可以設置為事件發生前或后。

    { INSERT | UPDATE | DELETE }:同樣也能設定觸發的事件,它們可以在執行INSERT、UPDATE或DELETE的過程中觸發。

    FOR EACH ROW:觸發器的執行間隔,FOR EACH ROW子句通知觸發器 每隔一行執行一次動作,而不是對整個表執行一次。

    觸發器的觸發事件可以是下列三種之一。

    ⑴ INSERT:將新行插入表時激活觸發器程序,例如,通過INSERT、LOAD DATA和REPLACE語句。

    ⑵ UPDATE:更改某一行時激活觸發器,例如,通過UPDATE語句。

    ⑶ DELETE:從表中刪除某一行時激活觸發器,例如,通過DELETE和REPLACE語句。

    請注意,觸發事件與表操作方式激活觸發程序的SQL語句并不很類似,這點很重要。例如,關于INSERT的BEFRORE觸發程序不僅能被INSERT語句激活,也能被LOAD DATA語句激活。

    對于具有相同觸發程序動作時間和事件的給定表,不能有兩個觸發程序。例如,對于某一張表,不能有兩個BEFORE UPDATE觸發程序。但可以有一個BEFORE UPDATE觸發程序和一個BEFORE INSERT觸發程序,或一個BEFORE UPDATE觸發程序和一個AFTER UPDATE觸發程序。

    CODE是當觸發程序激活時執行的語句。如果打算執行多個語句,可使用BEGIN…END復合語句結構。這樣,就能使用存儲子程序中允許的相同語句了。

    另外,觸發器執行的語句有以下兩個限制。

    限制⑴:觸發程序不能調用將數據返回客戶端的存儲程序,也不能使用采用CALL語句的動態SQL語句,但是允許存儲程序通過參數將數據返回觸發程序。也就是存儲過程或者函數通過OUT或者INOUT類型的參數將數據返回觸發器是可以的,但是不能調用直接返回數據的過程。

    限制⑵:不能在觸發器中使用以顯式或隱式方式開始或結束事務的語句,如START TRANSACTION、COMMIT或者ROLLBACK。

    3 刪除觸發器

    目前,并沒有ALTER TRIGGER語句,不過可以先使用DROP TRIGGER語句(刪除觸發器),然后再使用CREATE TRIGGERA語句創建一個新的觸發器。

    刪除觸發器的命令格式如下:

    DROP TRIGGER[IF EXISTS] trigger_name

    這條語句用于刪除觸發器。當觸發器不存在時,使用關鍵字IF EXISTS可以避免出現出錯信息。若不使用該關鍵字,它會生成一個注釋,在執行SHOW WARNINGS語句后,可以顯示該注釋。可以指定與觸發器關聯的數據庫或模式。如果不指定,將使用當前默認數據庫。從MySQL5.1.6版本開始,該語句需要具有與給定觸發器相關的表的TRIGGER權限,方能執行。在以前的MySQL版本中,它僅需要SUPER權限即可執行該語句。如果對MySQL5.0.10版本或更老版本升級時,請確保刪除它的所有觸發器,因為使用舊版本的觸發器會帶來問題。

    4 OLD和NEW

    NEW.column_name或者OLD.column_name,這樣在技術上處理(NEW|OLD.column_name)新和舊的列名屬于創建了過渡變量("transition variables")。對于INSERT語句,只有NEW是合法的;對于DELETE語句,只有OLD才合法;而UPDATE語句可以同時使用NEW和OLD。

    5 觸發器在圖書管理系統中的應用

    觸發器程序將用到以下三張表:

    ⑴ Publiser(pub_id,pub_name,pub_tel,pub_web, pub_addr)

    出版社(出版社_id,出版社名,電話,網址,地址)

    ⑵ Borrow_book(borrow_id,out_date,in_date,renew_count,renew_date,over_time,over_payment)

    借閱(借閱_id,借出日期,歸還日期,續借次數,續借日期,超期時間,超期費用)

    ⑶ Reader(reader_id,user,password,create_date,name,borrow_count)

    讀者(借書證號,用戶名,密碼,注冊日期,姓名,借閱數量)

    例1 當從publiser表中更新數據時,希望向另兩個表中寫入數據,保存更新前后的信息。

    新建兩張與publiser結構一樣的表old_publiser與new_publisher。

    DELIMITER |

    CREATE TRIGGER tri_publisher_update

    AFTER UPDATE

    ON publisher FOR EACH ROW

    /*保存更新前的信息*/

    BEGIN

    INSERT INTO old_publisher

    (pub_id,pub_name,pub_tel,pub_web, pub_addr)

    VALUES

    (OLD.pub_id,OLD.pub_name,OLD.pub_tel,OLD.pub_web,

    OLD.pub_addr);

    /*保存更新后的信息*/

    INSERT INTO new_publisher

    (pub_id,pub_name,pub_tel,pub_web, pub_addr)

    VALUES

    (NEW.pub_id,NEW.pub_name,NEW.pub_tel,NEW.pub_web,

    NEW.pub_addr);

    END |

    DELIMITER;

    驗證該觸發器:

    UPDATE publisher SET pub_tel=’010-6832629

    4’ WHERE pub_id='P00002';

    SELECT * FROM old_publisher;

    SELECT * FROM new_publisher;

    例2 借書觸發器

    DELIMITER |

    CREATE TRIGGER tri_borrow_book_insertli

    AFTER INSERT ON borrow_book

    FOR EACH ROW

    /*借書在borrow_book表插入新紀錄時,自動更新讀者表的已借數量*/

    BEGIN

    UPDATE reader SET borrow_count=borrow_count+1

    WHERE reader_id=NEW.reader_id;

    END |

    DELIMITER;

    例3 還書觸發器

    DELIMITER |

    CREATE TRIGGER tri_borrow_book_update

    AFTER UPDATE ON borrow_book

    FOR EACH ROW

    /*還書時更新borrow_book 表時,自動更新讀者表的已借數量*/

    BEGIN

    IF ISNULL(OLD.return_date) AND NOT ISNULL

    (NEW.return_date) THEN

    UPDATE reader SET borrow_count=borrow_count-1

    WHERE reader_id=NEW.reader_id;

    END IF;

    END |

    DELIMITER;

    6 結束語

    本文從理論教學和實踐教學兩個方面對MySQL數據庫中觸發器的實現進行了探討,并應用到了浙江農林大學數據庫類課程的教學當中。實踐表明該方法提高了學生對MySQL觸發器學習的積極性,使他們能輕松掌握觸發器的實現過程。教學效果和學生的學習效率得到了提高。

    參考文獻:

    [1] 吳達勝,劉麗娟.《數據庫原理與技術》的理論與實踐教學的整體優化研究[J].計算機時代,2005.11:31-32

    [2] 劉麗娟,吳達勝.滾動式分層教學在數據庫課程中的應用[J].科技信息,2009.36:127-130

    主站蜘蛛池模板: 视频一区二区三区刚刚碰| 丁香婷婷在线观看| 亚洲人成网网址在线看| 熟妇人妻无乱码中文字幕真矢织江| 精品国产亚洲午夜精品a| 国内熟妇人妻色在线视频| 亚洲日本乱码熟妇色精品| 国产乱码精品一区二区三| 国产成人综合亚洲欧美日韩 | 超频97人妻在线视频| 久久久久免费看成人影片| 在线亚洲午夜理论AV大片| 亚洲一级片一区二区三区| 天天躁日日躁狠狠躁| 蜜臀精品视频一区二区三区| 亚欧洲乱码视频在线专区| 潮喷无码正在播放| 另类 专区 欧美 制服| 人人入人人爱| 人成午夜免费大片| 成人国产一区二区三区精品| 免费观看欧美猛交视频黑人| 啦啦啦视频在线观看播放www| 亚洲成人av免费一区| 国产专区综合另类日韩一区| 国产精品小一区二区三区| 国产人妻人伦精品无码麻豆| 国产精品亚洲综合一区二区 | 国产精品久久久久影院色| 91久久久久无码精品露脸| 91密桃精品国产91久久| 无码熟妇人妻AV在线影片最多| 国产av不卡一区二区| 国产欧美日韩视频一区二区三区 | 中文字幕无码精品亚洲35| 69天堂人成无码免费视频| 亚洲午夜久久久久久久久久| 亚洲人妻系列中文字幕| 国内精品久久久久影院日本| 亚洲成av人片在www鸭子| 高清国产欧美一v精品|