SQL RDBMS 概念

2019-04-25 15:05 更新

SQL RDBMS 概念


 RDBMS是關(guān)系數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System)的縮寫。

 RDBMS是SQL的基礎(chǔ),也是所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)(如MS SQL Server、IBMDB2、Oracle、MySQL和MicrosoftAccess)的基礎(chǔ)。

 關(guān)系數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System,RDBMS)是一種基于E.F.Codd提出的關(guān)系模型的數(shù)據(jù)庫管理系統(tǒng)。


什么是表?


 RDBMS中的數(shù)據(jù)存儲在稱為表的數(shù)據(jù)庫對象中。這個表基本上是一個相關(guān)數(shù)據(jù)條目的集合,它由許多列和行組成。請記住,表是關(guān)系數(shù)據(jù)庫中最常見和最簡單的數(shù)據(jù)存儲形式。

 下面的程序是Customers表的一個示例

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

什么是字段?


 每個表都被分解成更小的實(shí)體,稱為字段。Customers表中的字段由ID、姓名、年齡、地址和薪資組成。

 字段是表中的列,用于維護(hù)有關(guān)表中每條記錄的特定信息。


什么是記錄或者行數(shù)據(jù)?


 記錄也稱為數(shù)據(jù)行,即表中存在的每個單獨(dú)的條目。例如,上面的Customers表中有7條記錄。下面是Customers表中的單行數(shù)據(jù)或記錄。

+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

 記錄是表中的水平實(shí)體。


什么是列?


 列是表中的垂直實(shí)體,其中包含與表中特定字段關(guān)聯(lián)的所有信息。

 例如,Customers表中的一列是Address,它表示位置描述,如下所示:

+-----------+
| ADDRESS   |
+-----------+
| Ahmedabad |
| Delhi     |
| Kota      |
| Mumbai    |
| Bhopal    |
| MP        |
| Indore    |
+----+------+

什么是空值?


 表中的空值是顯示為空的字段中的值,這意味著具有空值的字段是沒有值的字段。

 非常重要的一點(diǎn)是空值不同于零值或包含空格的字段。具有空值的字段是在創(chuàng)建記錄時留空的字段。


SQL約束


 約束是在表上的數(shù)據(jù)列上強(qiáng)制執(zhí)行的規(guī)則。它們用于限制可以進(jìn)入表中的數(shù)據(jù)類型。

 這確保了數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性和可靠性。

 約束可以是列級別,也可以是表級別。列級約束僅應(yīng)用于一列,而表級約束則應(yīng)用于整個表。

 以下是sql?中可用的一些最常用的約束

  • NOT NULL 約束:保證列中數(shù)據(jù)不能有 NULL 值
  • DEFAULT 約束:提供該列數(shù)據(jù)未指定時所采用的默認(rèn)值
  • UNIQUE 約束:保證列中的所有數(shù)據(jù)各不相同
  • 主鍵約束:唯一標(biāo)識數(shù)據(jù)表中的行/記錄
  • 外鍵約束:唯一標(biāo)識其他表中的一條行/記錄
  • CHECK 約束:此約束保證列中的所有值滿足某一條件
  • 索引:用于在數(shù)據(jù)庫中快速創(chuàng)建或檢索數(shù)據(jù)

 約束可以在創(chuàng)建表時規(guī)定(通過 CREATE TABLE 語句),或者在表創(chuàng)建之后規(guī)定(通過 ALTER TABLE 語句)。


數(shù)據(jù)完整性


 每個關(guān)系數(shù)據(jù)庫管理系統(tǒng)都存在以下類型的數(shù)據(jù)完整性:

實(shí)體完整性?表中沒有重復(fù)行。
域完整性?通過限制值的類型、格式或范圍來強(qiáng)制執(zhí)行給定列的有效條目。
引用完整性?不能刪除其他記錄使用的行。
用戶定義的完整性?強(qiáng)制執(zhí)行一些不屬于實(shí)體、域或引用完整性的特定業(yè)務(wù)規(guī)則。

數(shù)據(jù)庫規(guī)范化


 數(shù)據(jù)庫規(guī)范化是在數(shù)據(jù)庫中有效地組織數(shù)據(jù)的過程。這個規(guī)范化過程有兩個原因:

  • 消除冗余數(shù)據(jù),例如,將相同的數(shù)據(jù)存儲在多個表中。 
  • 確保數(shù)據(jù)依賴關(guān)系是有意義的。

 這兩個原因都是值得追求的目標(biāo),因?yàn)樗鼈儨p少了數(shù)據(jù)庫消耗的空間量,并確保了數(shù)據(jù)的邏輯存儲。

 規(guī)范化由一系列指導(dǎo)原則組成,有助于指導(dǎo)您創(chuàng)建良好的數(shù)據(jù)庫結(jié)構(gòu)。

 規(guī)范化指導(dǎo)原則稱為范式,范式的目的是組織數(shù)據(jù)庫結(jié)構(gòu),使其符合第一范式、第二范式和第三范式的規(guī)則。

 你可以更長遠(yuǎn)的去選擇第四范式,第五范式,等等,但一般來說,第三范式已經(jīng)足夠了。

第一范式(1NF)
第二范式(2NF)
第三范式(3NF)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號