數據庫
From Wikipedia, the free encyclopedia
Remove ads
喺電算上,數據庫(粵拼:sou3 geoi3 fu3;英文:database,DB),又叫

喺電腦科學裏面,數據庫係相當專門嘅領域:「由個數據庫嗰度搵件數據出嚟」呢家嘢就噉睇好似好簡單;不過到咗廿一世紀初,一個商業用嘅數據庫閒閒哋可以儲咗成幾千億至幾萬億個位元組咁多嘅數據,而由呢啲噉嘅數據庫當中搵數據(同埋做第啲作業)用到嘅演算法可以複雜得好交關;因為數據庫技術咁專業,有好多企業甚至仲會專登請個職位,淨係幫手應付數據庫相關嘅工作[3][4]。
數據庫同相關嘅技術喺現代資訊科技當中舉足輕重:數據庫技術令到企業能夠儲嘅數據量大增,於是有唔少資訊系統方面嘅工作者就著手研究「呢啲數據可以點樣用嚟達致商業目的」,形成咗大數據同數據科學等嘅領域-可以(例如)量度同分析啲消費者用一件電子產品嗰陣嘅行為[5];電腦科學工作者仲會將機械學習等嘅人工智能技術結合落去數據庫嗰度-令數據庫技術同相關嘅資訊科技係噉互相刺激同引發創新[6][7]。
Remove ads
概論
正式嚟講,數據庫係指一柞彼此之間有啦掕嘅數據,仲有係呢柞數據點樣組織埋一齊。舉個例說明,好似係維基百科嘅營運噉,就會用到以下噉嘅數據庫(可以睇維基數據):
- 儲住啲數據:維基百科日常運作嗰陣要記住大量嘅數據,好似係啲用家嘅數據(
user
;每位用家嘅名、個戶口邊年邊月邊日開、同埋做咗幾多吓編輯... 呀噉)、啲維基頁嘅數據(page
;每頁嘅標題同埋有幾多隻字呀噉)同埋係啲修改嘅數據(revision
;每次修改係由邊位用家做同埋喺邊年邊月邊日發生呀噉)... 等等嘅大量數據。一個數據庫通常會分做若干張表,例如用家數據一張、維基頁數據一張、修改數據一張噉。 - 組織埋一齊:不過,齋係記住啲數據係唔夠嘅,個數據庫跟住仲要將唔同嘅表嘅數據連繫埋一齊,簡單嘅例子有每位用家都俾個 ID 冧把佢,然後修改數據當中嘅每吓修改都有掕住做嗰吓修改嗰位用家嘅 ID 冧把,噉用個數據庫嘅人就有得攞住記用家數據嗰張表,叫部電腦去修改數據表嗰度,摷嗮嗰位用家做過嘅修改出嚟-啲數據之間有組織[8]。
上述講嘅例子可以用好似下圖噉嘅實體關係表畫出嚟[9]。下圖裏面每個視窗都表示一張專記住某種數據嘅表(例:user
係記用家數據嗰張表),個視窗入面每行字都係一個描述嗰種嘢嘅變數(例:user_id
係位用家嘅 ID 冧把、user_name
係嗰位用家嘅名、user_password
係嗰位用家嘅密碼... 等等)而且唔同表之間仲有某啲特定方法將唔同表嘅數據掕埋一齊。而除咗維基數據之外,疾病資料庫同互聯網電影資料庫都係喺廿一世紀初相當出名嘅數據庫。

Remove ads
關係數據庫
内文:關係數據庫
睇埋:主匙
喺廿一世紀初,數據庫入面嘅一幅試算表幾乎實會係以關係數據庫嘅形式表達嘅,即係話幅表會以表格嘅方式出現,有若干行打橫嘅列同埋若干行打戙嘅行,每列表示一個個案,每行表示一款數據。舉個簡單嘅例子說明,家陣整個數據庫,專門用嚟記住有關啲學生嘅數據,出好似下圖噉嘅表,每一行都表示一個學生可以有嘅一個特性,包括係名(Name
)同主修嘅學科(Major
)呀噉,而每一列都表示某一個學生嘅數據,包括嗰個學生嘅冧把,仲有係嗰個學生嘅 Name
同 Major
呀噉,做到清清楚楚噉表達嗮一柞個案同每個個案嘅特性[10]:
廿一世紀初嘅關係數據庫嘅設計可以好複雜:
- 首先一個數據庫通常要有最少一行攞嚟做主匙(primary key);一條主匙係指個數據庫入面俾人揀嚟做到「每個個案都有自己獨有一個數值」嘅匙,例如好似上圖噉,上圖個數據庫記住咗啲學生嘅數據,不過
Name
同埋Major
唔會做到主匙-呢個世上的確有可能會有學生真係咁啱得咁橋同名又讀同一個學科,好似响上圖入面學生 4 同學生 5 都係個名叫阿 John 而且一樣係讀化學嘅,因為噉,設計個數據庫嘅人就整咗一行叫Number
表示學生號碼,同每個學生俾個獨一無二嘅號碼佢,嗰兩個讀化學嘅阿 John 號碼唔同,於是用個數據庫嘅人就有得靠住檢驗手上個學生嘅Number
,確保自己搵到嗰個學生真係自己想搵嗰個,而唔係一個咁啱同名同姓嘅人-Number
就係呢個數據庫條主匙[11]。主匙仲可以再細分做[12]- 自然匙(natural key):指條匙嘅數值係對應住某啲會喺數據庫以外嘅特性嘅。假想家陣設計個數據庫嘅人想每個學生都俾條主匙佢,但佢用嘅主匙係身份證號碼-佢喺每個學生登記嗰陣都叫佢哋填自己嘅身份證號碼,並且喺個數據庫入面入咗每個學生嘅身份證號碼,因為身份證號碼正路嚟講係每個人都保證獨一無二嘅,而呢種用「喺個數據庫以外嘅地方都有可能會用到嘅特性」嚟做嘅匙就係所謂嘅自然匙。
- 代理匙(surrogate key):自然匙嘅相對,指條匙喺個數據庫以外完全係冇意義嘅。假想家陣設計個數據庫嘅人可能唔想個數據庫入面記住好似身份證號碼呢啲咁敏感嘅個人資料,所以佢就改改自己個做法-喺一個學生登記嗰時,佢都用擬亂數產生等嘅方法隨機噉產生一個有返咁上下長嘅號碼(例如
72108526761
噉),攞呢個數字嚟做嗰個學生嘅學生號碼;呢啲學生號碼喺個數據庫以外嘅地方係完全冇用嘅,而好似呢種用「喺個數據庫以外嘅地方唔會用到嘅特性」嚟做嘅匙就係所謂嘅代理匙[12]。
- 外匙(foreign key):指條匙會連去第張表嘅主匙度;舉個例,家陣個學生數據庫要擴張,要記埋每一個學生係由邊位導師(
Tutor
)主要負責教嘅,間學校嘅數據庫仲另外有張表係記住有關啲導師嘅數據嘅(下面冇擺出嚟睇),而每位導師都有個 5 個位嘅數字表示佢嘅導師號碼(導師號碼係導師數據嗰張表嘅主匙),而學生張表嘅Tutor
就係用導師號碼嚟表示每個學生由邊位導師負責,例如阿 Jack 嘅導師係號碼83026
嗰位,而嗰兩個讀化學嘅阿 John 咁啱由同一位導師負責。喺學生呢張表入面,Tutor
就係一條外匙[13]。
- 複合匙(composite key):指一種主匙嘅做法,指條匙由兩個或者以上嘅特性(行)組成[14]。舉個例說明,想像家陣有間企業想整個數據庫,記住自己同啲客做過嘅交易,於是佢就整咗個噉嘅數據庫-個數據庫每一列都記住咗一串交易,會包含以下嘅重要數據:
- 即係例如員工號碼 107 嗰位員工同客戶號碼 400 嗰個客之間做咗嘅交易總共值 55,000 文美元咁多。喺呢個表當中,
Employee_id
同Client_id
一齊扮演咗主匙嘅角色-一位員工可能同時要應付多個客,所以齋靠Employee_id
做唔到主匙,而一個客又可能會由幾位員工同時處理,所以齋靠Client_id
都係做唔到主匙,不過Employee_id
同Client_id
一齊用就能夠做到每個個案都有佢嘅獨有數值。呢種用兩個或者以上嘅特性結合而成嘅主匙就係複合匙[14]。
Remove ads
SQL
内文:SQL
硬件
内文:數據中心
喺硬件上,有返咁上下規模嘅組織用嘅數據庫通常都會儲响數據中心嗰度-呢啲組織會有若干個數據中心,每個數據中心嗰度都會有啲伺服器喺度。呢啲伺服器通常會係行多元處理嘅電腦,記憶體充裕,可以儲到極大量嘅數據;除此之外,呢啲伺服器都會受到嚴密保護,因為呢啲系統好多時都會儲住啲重要嘅個人資料(例如係一間企業啲員工嘅地址或者電話號碼呀噉),又或者係有嗰間企業研發緊嘅新產品嘅詳情,唔俾得同行知。正路嚟講,淨係得嗰啲有權限嘅人(例如係間企業嘅高層噉)先至可以睇或者攞數據庫入面嘅數據,而且有陣時唔同用家嘅權限可能都唔同(例如高層同研發部嘅人可以睇研發緊嘅新產品嘅數據,但間企業嘅其餘員工就唔得)[15]。

呢啲電腦儲住咗好多重要嘅數據喺入面。
管理系統
内文:數據庫管理系統
睇埋:SQL
數據庫管理系統(DBMS)泛指一啲專門設計嚟俾用家攞嚟管理數據庫嘅軟件,最少會有齊增查改刪(CRUD)嘅功能。增查改刪包括:
- 增加(Create)指加新嘅數據個案落個數據庫嗰度;
- 查閱(Read)指俾用家查同睇數據庫入面嘅數據;
- 更改(Update)指俾用家改嘅數據庫嘅數據;
- 刪除(Delete)指俾用家剷走唔想要嘅數據。
睇埋
文獻
- Hellerstein, J. M., Stonebraker, M., & Hamilton, J. (2007). Architecture of a database system. Now Publishers Inc.
- Hellerstein, J. M., & Stonebraker, M. (Eds.). (2005). Readings in database systems. MIT press.
- Kent, W. (2012). Data and Reality: A Timeless Perspective on Perceiving and Managing Information. Technics publications.
- Ramakrishnan, R., Gehrke, J., & Gehrke, J. (2003). Database management systems (Vol. 3). New York: McGraw-Hill.
Remove ads
引咗
拎
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads