1. Trang chủ
  2. » Luận Văn - Báo Cáo

CHUẨN VIẾT CODE SQL SERVER

16 467 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 303,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

c Dấu phẩy ‘,’ nên được sử dụng bên trái trong danh sách vì sẽ dễ dàng thêm một thành phần mới trong danh sách mà không phải thêm dấu phẩy vào thành phần cuối của danh sách trước khi thê

Trang 1

MỤC LỤC

1 Thực trạng .1

2 Những yếu tố khách quan và chủ quan .1

3 Tên đề tài 1

4 Nội dung 1

4.1 Chuẩn viết code là gì? 1

4.2 Tại sao phải sử dụng chuẩn viết code? 1

4.3 Các chuẩn viết code SQL Server 1

4.3.1 Các định nghĩa 2

4.3.2 Định dạng và thụt lề 2

4.3.3 Đặt tên cho các đối tượng 6

4.3.4 Một số qui tắc khác 10

5 Phạm vi áp dụng, khả năng phổ biến 13

6 Thời điểm áp dụng 13

7 Hiệu quả mang lại 13

Kết luận 14

Tài liệu tham khảo 15

Trang 2

1 Thực trạng

Hiện nay, khoa Công nghệ thông tin trường cao đẳng Công Nghệ Thủ Đức đào tạo

cử nhân ngành Công nghệ thông tin, Truyền thông và mạng máy tính, Thiết kế đồ họa Trong đó, sinh viên hai ngành Công nghệ thông tin, Truyền thông và mạng máy tính được học một số học phần có sử dụng ngôn ngữ lập trình Các sinh viên khi sử dụng ngôn ngữ lập trình thường quan tâm đến cú pháp, câu lệnh, dữ liệu, giải thuật để giải quyết bài toán mà chưa quan tâm đến các qui tắc khi viết code

Khi viết code không theo một qui tắc nào sẽ gây mất nhiều thời gian và chi phí cho việc bảo trì cũng như không đảm bảo chất lượng cho phần mềm

Hiện tại, trong học phần cơ sở dữ liệu có sử dụng hệ quản trị SQL Server, trong đó ngôn ngữ SQL được sử dụng để viết code Nhưng vẫn chưa có một bộ qui tắc cho ngôn ngữ này được áp dụng cho sinh viên của khoa

2 Những yếu tố khách quan và chủ quan

 Yếu tố khách quan: viết code theo chuẩn là một yêu cầu của các doanh nghiệp đối với người lập trình

 Yếu tố chủ quan: giúp sinh viên hình thành kỹ năng viết code SQL Server theo chuẩn

3 Tên đề tài

Chuẩn viết code SQL Server

4 Nội dung

4.1 Chuẩn viết code là gì?

 Coding Standard hay coding conventions là tập hợp những nguyên tắc được định nghĩa để ràng buộc trong quá trình viết code của toàn dự án

 Coding Standard có những cái chung và cái riêng tùy thuộc vào ngôn ngữ

và cộng đồng nhưng hầu hết được cộng nhận và đi theo bởi đa số các lập trình viên trên thế giới

4.2 Tại sao phải sử dụng chuẩn viết code?

 Việc áp dụng các qui tắc khi viết code sẽ giúp cho chương trình dễ đọc, có qui tắc hơn, đẹp hơn do đó sẽ dễ quản lý, dễ bảo trì hơn

 Góp phần lớn trong việc đảm bảo chất lượng code, ít bị lỗi

 Khi làm việc nhóm, việc trao đổi giữa các thành viên trong nhóm, giữa các thành viên khác nhóm cần có một qui tắc chung để đảm bảo công việc được thống nhất, mỗi thành viên đều có thể sử dụng được sản phẩm của thành viên khác

 Việc tuân thủ các qui tắc sẽ dễ dàng hơn trong việc kế thừa cho người sau 4.3 Các chuẩn viết code SQL Server

Trang 3

4.3.1 Các định nghĩa

a) PascalCase: kí tự đầu tiên của mỗi từ được viết hoa

Ví dụ: FirstName

b) camelCase: kí tự đầu tiên của mỗi từ được viết hoa ngoại trừ từ đầu tiên được viết thường

Ví dụ: firstName

c) UPPERCASE: tất cả các kí tự được viết hoa Sử dụng kiểu này cho các

từ viết tắt và các từ khóa trong câu lệnh T-SQL

Ví dụ: ADO, SELECT Id FROM Table 4.3.2 Định dạng và thụt lề

a) Sử dụng 4 khoảng trắng cho thụt lề: sử dụng 4 khoảng trắng cho thụt lề trong các file nguồn(script) và bảo đảm sự thống nhất này cho tất cả các file nguồn

b) Mỗi hàng nên có độ dài tối đa khoảng 87 kí tự; nếu code quá dài, nó sẽ bị cuộn xuống hàng dưới và khi in ra nó sẽ bị nhảy xuống hàng dưới, khi đó code sẽ rất khó đọc

c) Dấu phẩy (‘,’) nên được sử dụng bên trái trong danh sách vì sẽ dễ dàng thêm một thành phần mới trong danh sách mà không phải thêm dấu phẩy vào thành phần cuối của danh sách trước khi thêm, đồng thời cũng sẽ dễ dàng nhìn thấy lỗi do dấu phẩy gây ra; thụt lề cho những hàng có dấu phẩy thì giảm đi 1 kí tự so với thụt lề bình thường, điều này sẽ giúp cho hàng đầu và những hàng sau thẳng hàng

Ví dụ:

,@authorName nvarchar(max)

d) Dấu ngoặc luôn được xuất hiện trên một hàng riêng; trong trường hợp sử dụng nhiều dấu ngoặc, các dấu ngoặc không nên thụt lề so với hàng trước nó; tất cả những thành phần bên trong dấu ngoặc nên được thụt lề, bao gồm cả dấu ngoặc bên trong

Ví dụ:

WHERE

Trang 4

t2.[Col4] = 3

AND t2.[Col4] > 5

e) BEGIN và END luôn được xuất hiện trên một dòng riêng; BEGIN và END không nên thụt lề so với dòng trước đó; tất cả những thành phần bên trong BEGIN và END nên được thụt lề, bao gồm cả BEGIN và END bên trong; khi có nhiều hàng bên trong BEGIN và END thì nên có chú thích cho END vì nó sẽ dễ dàng hơn trong việc kết hợp với BEGIN

Ví dụ:

IFEXISTS(SELECT*FROM #table) BEGIN

–do something END

ELSE BEGIN –do something else END

f) Dùng dấu ngoặc vuông để bao các đối tượng/cột Tham chiếu các đối tượng bằng tên chủ sở hữu(owner)/lược đồ(schema)

Ví dụ:

SELECT

[CountryCode]

, [CountryName]

, [CountryFlag]

FROM

[dbo].[Country]

g) Tất cả các từ khóa được viết hoa

Trang 5

Ví dụ: SELECT, FROM h) Tất cả các kiểu dữ liệu được viết bằng kí tự thường

Ví dụ: int, nvarchar(50) i) Bí danh cho Table: các Table nên được đặt bí danh(alias); các bí danh được viết bằng chữ thường; tốt nhất là dùng kí tự đầu tiên của mỗi từ để đặt tên bí danh Trong trường hợp gây ra xung đột, sử dụng hậu tố với một thuật ngữ để phân biệt các bí danh trong truy vấn

Ví dụ:

FROM [dbo].[Customer] c FROM

[dbo].[CustomerAddress] ca FROM

[dbo].[Tree] t_parent JOIN [dbo].[Tree] t_child ON… j) Danh sách các cột: mỗi cột bắt đầu trên một dòng mới; thụt lề danh sách các cột từ từ khóa trước đó

Ví dụ:

SELECT

[CountryCode]

, [CountryName]

, [CountryFlag]

FROM

[dbo].[Country]

k) Qui định chung cho SELECT, UPDATE, DELETE, INSERT: trong các câu lệnh này, các mệnh đề FROM, WHERE, GROUP BY, HAVING, SET nên được viết trên một dòng mới, thụt lề bằng với câu lệnh đầu l) Câu lệnh UPDATE: luôn sử dụng tên bí danh cho Table trong câu lệnh

và tham chiếu Table trong mệnh đề FROM

Ví dụ:

Trang 6

UPDATE a SET [AuthorName] = @authorName ,[AuthorAge] = @authorAge FROM

[dbo].[Author] a m) Câu lệnh INSERT: luôn sử dụng danh sách các cột; tuân thủ các qui định

về dấu ngoặc và danh sách cột

Ví dụ:

INSERTINTO [dbo].[Author]

( [AuthorName]

[AuthorAge]

) n) Mệnh đề FROM: thụt lề danh sách Table trong mệnh đề FROM; các phép kết nên bắt đầu trên một dòng mới; nếu như dòng quá dài thì từ khóa ON nên bắt đầu trên một dòng mới, thụt lề bằng với tên bảng đầu tiên

o) Mệnh đề WHERE, HAVING: thụt lề tất cả các mệnh đề trong WHERE; mỗi mệnh đề nên bắt đầu trên một dòng mới; nếu có nhiều mệnh đề, thêm thụt lề để kí tự đầu tiên của mỗi mệnh đề được xếp thẳng hàng

Ví dụ:

WHERE table.[AuthorName] =‘Steve’

AND table.[AuthorAge] > 30

p) Mệnh đề ORDER BY, GROUP BY: thụt lề theo qui ước của danh sách cột, mỗi cột bắt đầu trên một dòng mới

Ví dụ:

Trang 7

table.[AuthorLastName]

q) Mệnh đề CASE: thụt lề tất cả các từ WHEN, ELSE trong mệnh đề CASE, thụt lề từ END bằng với từ CASE

Ví dụ:

CASE WHEN t1.[Col1] = 1 THEN‘First’

WHEN t1.[Col1] = 2 THEN‘Second’

END r) IF, WHILE: trong IF và WHILE luôn sử dụng BEGIN…END; WHILE,

IF và END luôn bắt đầu trên một dòng mới; mỗi mệnh đề nên ở một dòng mới ngoại trừ mệnh đề đầu tiên; nếu có nhiều mệnh đề, thêm thụt lề

để kí tự đầu tiên của mỗi mệnh đề được xếp hàng

Ví dụ:

IFEXISTS(SELECT*FROM #table) AND @debug = true

BEGIN –do something

END ELSE BEGIN –do something else END

4.3.3 Đặt tên cho các đối tượng

a) Tên Database, tên File: tên Database cần phản ảnh chính xác nội dung và chức năng của Database; không sử dụng khoảng trắng trong tên của Database; tên File phải trùng với tên Database; tên Database và File đặt tên theo kiểu PascalCase

b) Tên lược đồ(schema): sử dụng các kí tự viết thường để đặt tên cho lược đồ; các đối tượng; các đối tượng có bí danh luôn luôn sử dụng tên lược

Trang 8

đồ, ngay cả trong trường hợp sử dụng lược đồ mặc định (dbo); áp dụng cho câu lệnh CREATE và cho các đối tượng được tham chiếu trong mệnh đề FROM, INSERT hoặc UPDATE

Ví dụ: [HumanResources].[Employee], [dbo].[Runner]

c) Tên Table: đặt tên theo kiểu PascalCase; sử dụng các kí tự và kí số; không sử dụng dấu gạch chân; không sử dụng tiền tố; tên Table sử dụng danh ở dạng số ít

Ví dụ: User, không sử dụng Users

d) Tên Table liên kết: tên Table liên kết nên được đặt tên bằng tên của 2 Table mà nó liên kết lại, thêm hậu tố Link

Ví dụ: tên Table được liên kết từ Table User và Group là UserGroupLink

e) Tên Cột (Column): đặt tên theo kiểu PascalCase; sử dụng các kí tự và kí số; không sử dụng dấu gạch chân; không sử dụng tiền tố

 Cột có tham gia vào khóa chính nên có hậu tố ‘ID’, khi đó tên cột có dạng <table name>ID Ví dụ: table Product có cột tên là ProductID

 Cột là khóa ngoại thì tên cột giống với cột khóa chính mà nó tham chiếu tới Ví dụ, khóa chính của table ProductModel là

‘ProductModelID’, table Product có khóa ngoại tham chiếu đến bảng ProductModel thì nó có tên là ProductModelID’

 Nếu cột có kiểu dữ liệu là bit (boolean) thì nên thêm tiền tố ‘Is’ Ví

dụ, IsEnabled

f) Tên Stored Procedure: đặt tên theo kiểu PascalCase; không sử dụng các

kí tự đặc biệt; không sử dụng tiền tố; tên được đặt theo thứ tự sau: tên Table, hành động (Save, Load, Get, Set, SetSingle, Search, Delete,…),

mô tả nếu cần để làm rõ ý nghĩa của Stored Procedure

Ví dụ: AuthorSave, AuthorLoadByAuthorID, AuthorLoadByName g) Tên User Defined Function: đặt tên theo kiểu PascalCase; tên được đặt theo thứ tự sau: sử dụng tiền tố ‘FN_’, tên Table hoặc tên kết hợp các Table sau dấu gạch chân, từ chỉ hành động (Get, Set, Search, Delete,…),

mô tả nếu cần để làm rõ ý nghĩa của Function

Ví dụ: FN_Author, FN_AuthorGetID

h) Tên của tham số: đặt tên theo kiểu PascalCase

Ví dụ: @FirstName

Trang 9

i) Tên biến: đặt tên theo kiểu camelCase; không đặt tên biến bằng từ viết tắt hay tên biến chỉ có 1 kí tự

Ví dụ: @firstName, không nên đặt @c

j) Tên Cursor: đặt tên theo kiểu PascalCase; tên được đặt theo thứ tự sau: tiền tố ‘CURSOR_’, tên Table mà con trỏ duyệt dữ liệu

Ví dụ: DECLARE CURSOR_Employee CURSOR FOR…

k) Tên View: đặt tên theo kiểu PascalCase; sử dụng tiền tố ‘VW_’, tên các Table liên quan, thêm các từ mô tả để làm rõ ý nghĩa của View nếu cần

Ví dụ, VW_ VendorWithAddresses

l) Tên Trigger: đặt tên theo kiểu PascalCase; tên được đặt theo thứ tự sau:

sử dụng tiền tố ‘TRG’, loại Trigger(A: after, I: instead of), dấu gạch chân, tên Table cài trigger, hành động (Upd: update, Ins: insert, Del: delete)

Ví dụ: TRGA_ProductDel, TRGA_CustomerInsUpd m) Tên Index: sử dụng tiền tố ‘IX’, nếu là Clustered Index thì thêm ‘C’, nếu

là Unique Index thì thêm ‘U’, dấu gạch chân, danh sách các cột là Index (sử dụng dấu gạch chân giữa các cột)

Ví du: IXCU_AuthorID, IX_AuthorID_AuthorName, IXC_AuthorID n) Tên Primary key: sử dụng tiền tố ‘PK’, dấu gạch chân, tên Table cài khóa chính

Ví dụ: PK_Customer o) Tên Foreign key: sử dụng tiền tố ‘FK’, dấu gạch chân, tên Table được tham chiếu, dấu gạch chân, tên Table cài khóa ngoại

Ví dụ: tạo khóa ngoại cho Table Customer tham chiếu đến Table Country thì tên được đặt là FK_Country_Customer

p) Tên Default: sử dụng tiền tố ‘DF’, dấu gạch chân, tên Table cài default, dấu gạch chân, tên cột cài default

Ví dụ: tạo default cho cột Gender trong Table Author thì tên được đặt là DF_Author_ Gender

q) Tên Check: sử dụng tiền tố ‘CK’, dấu gạch chân, tên Table cài check, một số nguyên dùng để phân biệt các check khác trong cùng một Table

Ví dụ: CK_Author1

Trang 11

Bảng tóm tắt về qui ước đặt tên cho các đối tượng trong SQL Server

4.3.4 Một số qui tắc khác

a) Tên các đối tượng, tên biến, tên cột nên có độ dài nhỏ hơn 50 kí tự b) Sử dụng 1 dòng trống để chia ra các nhóm code khác nhau

c) Sử dụng khoảng trắng để các biểu thức được đọc như là câu

Ví dụ: Color = ‘red’, không sử dụng Color=‘red’

Trang 12

d) Chú thích(Comment)

Sử dụng comment cho mỗi khối code:

 Chú thích viết trên cùng một dòng, sử dụng ‘ ’ trước dòng chú thích

 Chú thích viết trên nhiều dòng, sử dụng ‘/*…*/’

e) Khi sử dụng các phép logic phức tạp thì sử dụng dấu ngoặc để dễ đọc Ví

dụ, WHERE

(Color = ‘red’

AND

( Size = 1

OR Size = 2 )

) f) Không sử dụng phép kết RIGHT JOIN, mà viết lại bằng phép kết LEFT JOIN

g) Khi sử dụng phép INNER JOIN thì bỏ từ INNER

h) Khi sử dụng phép kết:

SELECT

d

FROM

Table1

, Table2

WHERE

Table1 d = Table2

SELECT

d

FROM

Table1

JOIN

Table2

ON

Table1 d = Table2

i) Chỉ sử dụng chú thích để làm sáng tỏ những điều không rõ trong việc đọc code

j) Không sử dụng SELECT * trong câu lệnh truy vấn, thay vào đó sử dụng danh sách các cột sau mệnh đề SELECT

k) Sử dụng SET NOCOUNT ON tại đầu của Batch, Stored Procedure, Trigger

l) Cột có cài đặt ràng buộc Default không cho phép NULL

m) Không sử dụng số thứ tự cột trong mệnh đề ORDER BY, thay vào đó sử dụng tên cột

Trang 13

Không sử dụng: Sử dụng:

SELECT

[UserID]

, [UserName]

, [Password]

FROM

dbo [UserDetails]

ORDER BY 2

SELECT

[UserID]

, [UserName]

, [Password]

FROM

dbo [UserDetails]

ORDER BY [UserName]

n) Sử dụng Code Header: nên sử dụng Code Header cho Stored Procedure, Trigger, Function theo cách sử dụng Comment; phần Header này sẽ mô

tả chức năng, hướng dẫn cũng như định nghĩa các tham số

CREATE PROCEDURE [dbo].[ValidateConcurrency]

@TableName varchar(255),

@ID int,

@LastUpdate datetime,

@IsValid bit OUTPUT

AS /********************************************************* This procedure validates the concurrency of a record update by taking the LastUpdate date passed in and checking it against the current LastUpdate date of the record If they do NOT match the record is not updated because someone has updated the record out from under the user

- Parameter Definition:

-

@TableName = Table to be validated

@ID = Record ID of the current record to be validated

@LastUpdate = The Last Update Date passed by app to compare with current date value for the record

@IsValid = Returns the following back to the calling app

1 = Record is valid No concurrancy issues

0 = Record is NOT concurrent

*********************************************************/ o) Sử dụng comment Header để mô tả thông tin file script cũng như theo dõi sự thay đổi nội dung của file script

/******************************************

** File:

Trang 14

** Name:

** Desc:

** Auth:

** Date:

**************************

** Change History

**************************

** PR Date Author Description

** - - -

** 1 01/10/2008 Dan added inner join

******************************************/

5 Phạm vi áp dụng, khả năng phổ biến

Chuẩn code này có khả năng áp dụng cho sinh viên khoa Công nghệ thông tin, trường cao đẳng Công Nghệ Thủ Đức

6 Thời điểm áp dụng

Áp dụng vào học kỳ hai, năm nhất

7 Hiệu quả mang lại

Trang bị cho sinh viên kỹ năng viết code SQL Server theo chuẩn chung

Ngày đăng: 21/05/2020, 12:19

TỪ KHÓA LIÊN QUAN

w