數(shù)據(jù)持久化掌握了Servlet/JSP技術,我們已經(jīng)可以創(chuàng)建動態(tài)的Web應用了。除了動態(tài)的Web界面,一個有價值的Web應用必然需要進行數(shù)據(jù)存儲,開發(fā)上我們一般稱之為數(shù)據(jù)" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 10分鐘了解Web開發(fā)中的數(shù)據(jù)庫基本概念

10分鐘了解Web開發(fā)中的數(shù)據(jù)庫基本概念

時間:2023-05-24 03:33:01 | 來源:網(wǎng)站運營

時間:2023-05-24 03:33:01 來源:網(wǎng)站運營

10分鐘了解Web開發(fā)中的數(shù)據(jù)庫基本概念:

由David發(fā)表在天碼營


數(shù)據(jù)持久化

掌握了Servlet/JSP技術,我們已經(jīng)可以創(chuàng)建動態(tài)的Web應用了。除了動態(tài)的Web界面,一個有價值的Web應用必然需要進行數(shù)據(jù)存儲,開發(fā)上我們一般稱之為數(shù)據(jù)持久化(Data Persistence)。從業(yè)務功能的角度出發(fā),簡單的應用可以認為就是數(shù)據(jù)的增刪改查。比如一個產(chǎn)品級的博客應用,最核心的功能就是對博客內(nèi)容的創(chuàng)建、修改、刪除和查詢,而這些功能都離不開Web服務器背后的數(shù)據(jù)庫系統(tǒng)。


狹義地理解, “持久化”就是指把業(yè)務數(shù)據(jù)永久存儲到數(shù)據(jù)庫中;廣義的理解,“持久化”則包括和數(shù)據(jù)庫相關的各種操作。將內(nèi)存中的數(shù)據(jù)存入數(shù)據(jù)庫就能夠隨時獲取或者更新這些數(shù)據(jù)。所以讓我們首先來了解一下數(shù)據(jù)庫系統(tǒng)。

數(shù)據(jù)庫簡介

數(shù)據(jù)庫技術誕生于上個世紀60年代,是計算機科學的一個重要分支。當時計算機開始廣泛地應用于數(shù)據(jù)管理,對數(shù)據(jù)的共享提出了越來越高的要求。傳統(tǒng)的文件系統(tǒng)已經(jīng)不能滿足人們的需要。能夠統(tǒng)一管理和共享數(shù)據(jù)的數(shù)據(jù)庫管理系統(tǒng)(DBMS, Database Management System)應運而生。

DBMS的主要包括兩個功能:

自數(shù)據(jù)庫從誕生以來,大致經(jīng)歷了以下幾個階段:

目前,非關系型數(shù)據(jù)庫正在蓬勃的發(fā)展中,比如MongoDB、Redis、BigTable等非關系型數(shù)據(jù)庫已經(jīng)被很多領域廣泛的應用。

關系型數(shù)據(jù)庫依然是Web開發(fā)中的主流數(shù)據(jù)庫。我們將以使用最廣泛的開源關系型數(shù)據(jù)庫MySQL作為我們博客應用的數(shù)據(jù)庫。

關系型數(shù)據(jù)庫,是指使用關系模型來組織數(shù)據(jù),使用集合代數(shù)等數(shù)學概念和方法來處理數(shù)據(jù)的一種數(shù)據(jù)庫。在關系型數(shù)據(jù)庫中,現(xiàn)實世界中的各種實體以及實體之間的各種聯(lián)系均用關系模型來表示。不過我們這里先不深入其數(shù)學原理,我們以更形象的方式來理解關系型數(shù)據(jù)庫的幾個基本概念。

數(shù)據(jù)庫表

關系可以認為就是一個二維表格,關系型數(shù)據(jù)庫就是一組二維表格的集合,通過表格來描述和存數(shù)對象和對象之間的關系。

我們已經(jīng)實現(xiàn)了博客頁面,我們來分析一下這個頁面:


從中我們看到,一篇博客至少具有以下信息:

這些信息存儲到數(shù)據(jù)庫中,就這樣一個blog表:


表中的每一列就是表的一個字段,對應Blog對象的一個屬性;表中的每一張就是一條記錄,對應于一篇具體的博客。


主鍵

數(shù)據(jù)存儲起來之后我們需要非常方便得查詢。接下來我們想一個問題:如何快速地識別出一條博客記錄?一種方法是根據(jù)title來標識一條記錄。如果Ricky也寫了一篇名為“天碼營是什么?”的博客呢?這時候title就不是唯一標識了。


這時我們可以給blog表,增加一個id字段,通過唯一的整數(shù)值來標識一條記錄。能夠唯一確定一條記錄的字段就稱為主鍵。


注意多個字段可以一起作為一個表的主鍵,但是在開發(fā)中一般情況下我們使用自增的整數(shù)字段來作為主鍵。即每增加一條記錄,記錄的id的值就自動增加,這樣就保證了每條記錄的唯一性。`

字段的數(shù)據(jù)類型

表中的每個字段,與一個類的屬性一樣,具有數(shù)據(jù)類型。數(shù)據(jù)中有三種主要的數(shù)據(jù)類型:文本、數(shù)字和日期/時間類型。不同的數(shù)據(jù)類型擁有不同的特性,例如數(shù)字類型可以做一些數(shù)學操作,時間類型可以按照一定規(guī)則進行排序或篩選。同時,不同的數(shù)據(jù)類型在存儲時是不一樣,這就導致了不同的數(shù)據(jù)類型效率上有很大的差別。在后面的學習中,我們將會在數(shù)據(jù)庫表的設計過程中講解具體的數(shù)據(jù)類型,以及選擇數(shù)據(jù)類型的最佳實踐。

數(shù)據(jù)庫表關系

一對多關系

觀察Blog表中的數(shù)據(jù),我們發(fā)現(xiàn)雖然只有David和Ricky兩名作者,但是卻出現(xiàn)了5次作者姓名和作者頭像的信息,這樣不僅浪費存儲空間,帶來潛在的不一致性等問題。


這樣的表結構設計具有明顯的不合理性。與類的設計需要符合面向?qū)ο蟮脑O計原則一樣,表的設計也需要遵循一些范式來保證良好的表結構。

這里我們可以把作者的信息提取出來放到一個單獨的user表中:


相應地需要修改blog表的結構:


我們發(fā)現(xiàn)blog表中多了一個author字段,保存的是User的id。這時就形成了一個外鍵約束<blog.author, user.id>。


我們說一個表具有外鍵,就是說表中一個字段或者幾個字段的組合在另外一個表中是主鍵?;氐綀鼍爸屑矗篴uthor有一個外鍵約束,外鍵是user表的主鍵id。

設置外鍵后,當往blog表中中插入數(shù)據(jù)時,數(shù)據(jù)庫會自動檢查插入數(shù)據(jù)的author字段,是否存在user表中存在對應的記錄。如果不存在,數(shù)據(jù)庫會拋出錯誤,拒絕插入,這樣就可以保證數(shù)據(jù)的一致性和完整性。分為這樣兩個表同時也讓分別維護博客信息和用戶信息更為方便,處理邏輯得意分離。

user表和blog表是一種一對多的關系,其含義也很容易理解,一個用戶可以創(chuàng)建多篇博客。其它兩種關系我們在后面的內(nèi)容中再行介紹?;谕怄I我們可以建立表與表之間的另外兩種關系:一對一和多對多。

一對一關系

我們可以把Blog的內(nèi)容單獨拿出來放在一張表中,命名為blog_content。那么blog_content和blog就是一對一的關系,一篇博客有其唯一的內(nèi)容,一條內(nèi)容也只會屬于某一篇博客。


一對一關系相對不是很常見,但是依然有其應用場景。比如一篇博客信息中,占用空間的主要就是博客內(nèi)容。將其獨立出去,blog表的數(shù)據(jù)量就大大減小,在數(shù)據(jù)記錄非常多時且如果需要頻繁修改和訪問blog表中的信息時,,可以極大的增加我們的讀寫效率。因為數(shù)據(jù)庫表的存儲的數(shù)據(jù)越少,讀寫效率越高。

多對多關系

對后一種關系是多對多關系。假設我們希望給每篇博客設置標簽,則一個標簽可以對應多篇博客,一篇博客可以對應多個標簽。標簽數(shù)據(jù)可以通過定義個tag表來保存。而標簽和博客的多對多關系,需要再單獨定義一個表來描述,命名為blog_tag,這三個表如下所示:


上圖中可見,具有“Java”標簽的文章有《JSP簡介》和《Servlet簡介》,對應blog_tag表的兩條記錄<1,2>,<1,3>;博客《天碼營是什么》具有標簽“互聯(lián)網(wǎng)”和“天碼營”對應1blog_tag1表的兩條記錄<2,1>,<5,1>。

總結


這節(jié)課我們學習了數(shù)據(jù)庫的一些基礎概念,我們可以大致的了解如何針對一個需求來進行數(shù)據(jù)庫的設計,我們已經(jīng)有了一個感性的認識。具體如何操作來去創(chuàng)建一張數(shù)據(jù)庫表以及創(chuàng)建他們之間的關系呢?接下來,我們先安裝好MySQL數(shù)據(jù)庫,然后學習如何通過結構化查詢語言(SQL)來操作數(shù)據(jù)庫。


更多文章請訪問天碼營網(wǎng)站



關鍵詞:數(shù)據(jù),概念,基本

74
73
25
news

版權所有? 億企邦 1997-2025 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉