Navicat 部落格

SQL 中命名慣例的快速指南 - 第 2 部分 2023 年 3 月 31 日 ,由 Robert Gravelle 撰寫

欄名稱

歡迎來到 SQL 命名慣例系列的第 2 部分。正如 第 1 部分中提到,命名慣例是一組規則(成文的或未成文的),用來提高資料模型的可讀性。這些規則幾乎可以套用到資料庫中的所有物件,包括資料表、欄、主索引鍵和外部索引鍵、預存程序、函式、檢視等。在第 1 部分中介紹了命名資料表的規則後,我們會在本文講述有關欄名稱的規則。而第 3 部分將介紹其他資料庫物件,例如程序、函式和檢視。

主索引鍵欄

主索引鍵是資料表中的一個欄位或一組欄位,用於唯一識別資料表中每筆記錄。一個資料表只能有一個主索引鍵。因此,許多 DBA 會簡單直接地將此欄命名為「id」。或者有人會將「_id」後置詞加到資料表名稱,例如 Sakila 範例資料庫中的資料表:

actor_id_column (50K)

同樣,你也應該為主索引鍵條件約束取一個有意義的名稱。主索引鍵條件約束的命名慣例是名稱應該有一個「pk_」前置詞,後面就是資料表名稱,也就是「pk_<table_name>」。

外部索引鍵欄

外部索引鍵是資料表中參考其他資料表中主索引鍵的欄位。一個不錯的規則是使用受參考的資料表名稱和「_id」,例如 customer_id、employee_id。這將將有助我們將該欄位識別為外部索引鍵欄,同時也讓我們知道受參考的是哪一個資料表。

以下是 city 資料表,它有一個外部索引鍵,參考 country 資料表的 country_id 欄位:

country_id_foreign_key (50K)

外部索引鍵條件約束的命名慣例是名稱有一個「fk_」前置詞,後面是目標資料表名稱,然後是來源資料表名稱。因此,語法應為「fk_<target_table>_<source_table>」。

遵循外部索引鍵條件約束命名慣例,city 資料表的外部索引鍵條件約束名稱會是「fk_city_country」:

fk_city_country_foreign_key (36K)

資料欄

第 1 部分的「描述現實世界的實體」一節中提及:

任何時候命名代表現實世界事物的實體時,都應該使用它們的專有名詞。這適用於 employee、customer、city、country 等資料表。通常,一個單字應該就能準確描述該資料表中的內容。

相同的規則能夠及應該套用於資料欄。同樣,你應該盡量使用最少的詞語來描述儲存在該欄中的內容,例如 country_name、country_code、customer_name。如果有兩個資料表具有相同名稱的欄,你可以加一些詞語以保持名稱是唯一,但這並不是絕對必要的,因為資料表前置詞將區分查詢中的欄。儘管如此,為每一欄使用唯一的名稱是有好處的,因為它減少了以後在編寫查詢時把這兩欄混淆的機會。像 customer_name、city_name 這樣的名稱很可能出現在多個資料表中。如果你有這樣的顧慮,可以使用更具描述性的名稱,例如 order_customer_name 或 city_of_residence_name。

日期

在日期方面,名稱最好是能描述該日期代表什麼。像 start_date 和 end_date 這樣的名稱是非常常見且普通。所以使用 call_start_date 和 call_end_date 之類的名稱可以更準確地描述它們。

關於 SQL 中欄命名慣例的結語

從所有提供的範例中,你應該察覺到資料表名稱和欄名稱都是小寫的,而且單字之間會用底線(「_」)隔開。例如,customer_name 和 invoice_date,而非 customerName 和 invoiceDate。這與將陳述式名稱、子句和其他關鍵字大寫的 SQL 樣式慣例配合得很好,令程式碼更容易閱讀,例如 SELECT customer_name, invoice_date FROM orders;

Navicat 文章
頻道記錄
分享
部落格封存檔