CHUẨN VIẾT CODE SQL SERVER

16 461 1
CHUẨN VIẾT CODE SQL SERVER

Đ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

MỤC LỤC Thực trạng Những yếu tố khách quan chủ quan .1 Tên đề tài Nội dung 4.1 Chuẩn viết code gì? 4.2 Tại phải sử dụng chuẩn viết code? .1 4.3 Các chuẩn viết code SQL Server 4.3.1 Các định nghĩa 4.3.2 Định dạng thụt lề 4.3.3 Đặt tên cho đối tượng .6 4.3.4 Một số qui tắc khác 10 Phạm vi áp dụng, khả phổ biến 13 Thời điểm áp dụng 13 Hiệu mang lại 13 Kết luận 14 Tài liệu tham khảo 15 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 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 mạng máy tính học số học phần có sử dụng ngơn ngữ lập trình Các sinh viên sử dụng ngơn ngữ lập trình thường quan tâm đến cú pháp, câu lệnh, liệu, giải thuật để giải toán mà chưa quan tâm đến qui tắc viết code Khi viết code không theo qui tắc gây nhiều thời gian chi phí cho việc bảo trì khơng đảm bảo chất lượng cho phần mềm Hiện tại, học phần sở liệu có sử dụng hệ quản trị SQL Server, ngơn ngữ SQL sử dụng để viết code Nhưng chưa có qui tắc cho ngôn ngữ áp dụng cho sinh viên khoa Những yếu tố khách quan chủ quan  Yếu tố khách quan: viết code theo chuẩn yêu cầu doanh nghiệp người lập trình  Yếu tố chủ quan: giúp sinh viên hình thành kỹ viết code SQL Server theo chuẩn Tên đề tài Chuẩn viết code SQL Server Nội dung 4.1 Chuẩn viết code gì?  Coding Standard hay coding conventions tập hợp nguyên tắc định nghĩa để ràng buộc trình viết code tồn dự án  Coding Standard có chung riêng tùy thuộc vào ngôn ngữ cộng đồng hầu hết cộng nhận theo đa số lập trình viên giới 4.2 Tại phải sử dụng chuẩn viết code?  Việc áp dụng qui tắc viết code giúp cho chương trình dễ đọc, có qui tắc hơn, đẹp dễ quản lý, dễ bảo trì  Góp phần lớn việc đảm bảo chất lượng code, bị lỗi  Khi làm việc nhóm, việc trao đổi thành viên nhóm, thành viên khác nhóm cần có qui tắc chung để đảm bảo cơng việc thống nhất, thành viên sử dụng sản phẩm thành viên khác  Việc tuân thủ qui tắc dễ dàng việc kế thừa cho người sau 4.3 Các chuẩn viết code SQL Server Trang 4.3.1 Các định nghĩa a) PascalCase: kí tự từ viết hoa Ví dụ: FirstName b) camelCase: kí tự từ viết hoa ngoại trừ từ viết thường Ví dụ: firstName c) UPPERCASE: tất kí tự viết hoa Sử dụng kiểu cho từ viết tắt từ khóa câu lệnh T-SQL Ví dụ: ADO, SELECT Id FROM Table 4.3.2 Định dạng thụt lề a) Sử dụng khoảng trắng cho thụt lề: sử dụng khoảng trắng cho thụt lề file nguồn(script) bảo đảm thống cho tất file nguồn b) Mỗi hàng nên có độ dài tối đa khoảng 87 kí tự; code q dài, bị cuộn xuống hàng in bị nhảy xuống hàng dưới, code khó đọc c) Dấu phẩy (‘,’) nên sử dụng bên trái danh sách dễ dàng thêm thành phần danh sách mà thêm dấu phẩy vào thành phần cuối danh sách trước thêm, đồng thời dễ dàng nhìn thấy lỗi dấu phẩy gây ra; thụt lề cho hàng có dấu phẩy giảm kí tự so với thụt lề bình thường, điều giúp cho hàng đầu hàng sau thẳng hàng Ví dụ: DECLARE @authorID int ,@authorName nvarchar(max) d) Dấu ngoặc xuất hàng riêng; trường hợp sử dụng nhiều dấu ngoặc, dấu ngoặc khơng nên thụt lề so với hàng trước nó; tất thành phần bên dấu ngoặc nên thụt lề, bao gồm dấu ngoặc bên Ví dụ: WHERE ( Trang t2.[Col4] = OR ( t2.[Col3] < AND t2.[Col4] > ) ) e) BEGIN END ln xuất dòng riêng; BEGIN END không nên thụt lề so với dòng trước đó; tất thành phần bên BEGIN END nên thụt lề, bao gồm BEGIN END bên trong; có nhiều hàng bên BEGIN END nên có thích cho END dễ dàng việc kết hợp với BEGIN Ví dụ: IF EXISTS(SELECT * FROM #table) BEGIN –do something END ELSE BEGIN –do something else END f) Dùng dấu ngoặc vuông để bao đối tượng/cột Tham chiếu đối tượng tên chủ sở hữu(owner)/lược đồ(schema) Ví dụ: SELECT [CountryCode] , [CountryName] , [CountryFlag] FROM [dbo].[Country] g) Tất từ khóa viết hoa Trang Ví dụ: SELECT, FROM h) Tất kiểu liệu viết kí tự thường Ví dụ: int, nvarchar(50) i) Bí danh cho Table: Table nên đặt bí danh(alias); bí danh viết chữ thường; tốt dùng kí tự từ để đặt tên bí danh Trong trường hợp gây xung đột, sử dụng hậu tố với thuật ngữ để phân biệt bí danh 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ột: cột bắt đầu dòng mới; thụt lề danh sách 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: câu lệnh này, mệnh đề FROM, WHERE, GROUP BY, HAVING, SET nên viết dòng mới, thụt lề với câu lệnh đầu l) Câu lệnh UPDATE: ln sử dụng tên bí danh cho Table câu lệnh tham chiếu Table mệnh đề FROM Ví dụ: Trang UPDATE a SET [AuthorName] = @authorName ,[AuthorAge] = @authorAge FROM [dbo].[Author] a m) Câu lệnh INSERT: sử dụng danh sách cột; tuân thủ qui định dấu ngoặc danh sách cột Ví dụ: INSERT INTO [dbo].[Author] ( [AuthorName] ,[AuthorAge] ) n) Mệnh đề FROM: thụt lề danh sách Table mệnh đề FROM; phép kết nên bắt đầu dòng mới; dòng q dài từ khóa ON nên bắt đầu dòng mới, thụt lề với tên bảng o) Mệnh đề WHERE, HAVING: thụt lề tất mệnh đề WHERE; mệnh đề nên bắt đầu dòng mới; có nhiều mệnh đề, thêm thụt lề để kí tự mệnh đề xếp thẳng hàng Ví dụ: WHERE table.[AuthorName] = ‘Steve’ AND table.[AuthorAge] > 30 OR table.[AuthorName] = ‘Dave’ p) Mệnh đề ORDER BY, GROUP BY: thụt lề theo qui ước danh sách cột, cột bắt đầu dòng Ví dụ: ORDER BY Trang table.[AuthorLastName] ,table.[AuthorFirstName] q) Mệnh đề CASE: thụt lề tất từ WHEN, ELSE mệnh đề CASE, thụt lề từ END với từ CASE Ví dụ: CASE WHEN t1.[Col1] = THEN ‘First’ WHEN t1.[Col1] = THEN ‘Second’ ELSE ‘Last’ END r) IF, WHILE: IF WHILE sử dụng BEGIN…END; WHILE, IF END bắt đầu dòng mới; mệnh đề nên dòng ngoại trừ mệnh đề đầu tiên; có nhiều mệnh đề, thêm thụt lề để kí tự mệnh đề xếp hàng Ví dụ: IF EXISTS(SELECT * FROM #table) AND @debug = true BEGIN –do something END ELSE BEGIN –do something else END 4.3.3 Đặt tên cho đối tượng a) Tên Database, tên File: tên Database cần phản ảnh xác nội dung chức Database; không sử dụng khoảng trắng tên Database; tên File phải trùng với tên Database; tên Database File đặt tên theo kiểu PascalCase b) Tên lược đồ(schema): sử dụng kí tự viết thường để đặt tên cho lược đồ; đối tượng; đối tượng có bí danh ln ln sử dụng tên lược Trang đồ, trường hợp sử dụng lược đồ mặc định (dbo); áp dụng cho câu lệnh CREATE cho đối tượng tham chiếu mệnh đề FROM, INSERT UPDATE Ví dụ: [HumanResources].[Employee], [dbo].[Runner] c) Tên Table: đặt tên theo kiểu PascalCase; sử dụng kí tự 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ố 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 đặt tên tên Table mà liên kết lại, thêm hậu tố Link Ví dụ: tên Table liên kết từ Table User Group UserGroupLink e) Tên Cột (Column): đặt tên theo kiểu PascalCase; sử dụng kí tự 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 nên có hậu tố ‘ID’, tên cột có dạng ID Ví dụ: table Product có cột tên ProductID  Cột khóa ngoại tên cột giống với cột khóa mà tham chiếu tới Ví dụ, khóa table ProductModel ‘ProductModelID’, table Product có khóa ngoại tham chiếu đến bảng ProductModel có tên ProductModelID’  Nếu cột có kiểu liệu bit (boolean) 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 kí tự đặc biệt; không sử dụng tiền tố; tên đặt theo thứ tự sau: tên Table, hành động (Save, Load, Get, Set, SetSingle, Search, Delete,…), mô tả cần để làm rõ ý nghĩa Stored Procedure Ví dụ: AuthorSave, AuthorLoadByAuthorID, AuthorLoadByName g) Tên User Defined Function: đặt tên theo kiểu PascalCase; tên đặt theo thứ tự sau: sử dụng tiền tố ‘FN_’, tên Table tên kết hợp Table sau dấu gạch chân, từ hành động (Get, Set, Search, Delete,…), mô tả cần để làm rõ ý nghĩa Function Ví dụ: FN_Author, FN_AuthorGetID h) Tên tham số: đặt tên theo kiểu PascalCase Ví dụ: @FirstName Trang i) Tên biến: đặt tên theo kiểu camelCase; không đặt tên biến từ viết tắt hay tên biến có kí tự Ví dụ: @firstName, không nên đặt @c j) Tên Cursor: đặt tên theo kiểu PascalCase; tên đặt theo thứ tự sau: tiền tố ‘CURSOR_’, tên Table mà trỏ duyệt 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 Table liên quan, thêm từ mô tả để làm rõ ý nghĩa View cần Ví dụ, VW_ VendorWithAddresses l) Tên Trigger: đặt tên theo kiểu PascalCase; tên đặ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’, Clustered Index thêm ‘C’, Unique Index thêm ‘U’, dấu gạch chân, danh sách cột Index (sử dụng dấu gạch chân 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 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 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 tên đặt 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 Table Author tên đặt 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, số nguyên dùng để phân biệt check khác Table Ví dụ: CK_Author1 Trang Trang Bảng tóm tắt qui ước đặt tên cho đối tượng SQL Server 4.3.4 Một số qui tắc khác a) Tên đối tượng, tên biến, tên cột nên có độ dài nhỏ 50 kí tự b) Sử dụng dòng trống để chia nhóm code khác c) Sử dụng khoảng trắng để biểu thức đọc câu Ví dụ: Color = ‘red’, không sử dụng Color=‘red’ Trang 10 d) Chú thích(Comment) Sử dụng comment cho khối code:  Chú thích viết dòng, sử dụng ‘ ’ trước dòng thích  Chú thích viết nhiều dòng, sử dụng ‘/*…*/’ e) Khi sử dụng phép logic phức tạp sử dụng dấu ngoặc để dễ đọc Ví dụ, WHERE (Color = ‘red’ AND ( Size = OR Size = ) ) f) Không sử dụng phép kết RIGHT JOIN, mà viết lại phép kết LEFT JOIN g) Khi sử dụng phép INNER JOIN bỏ từ INNER h) Khi sử dụng phép kết: Không sử dụng: Sử dụng: SELECT SELECT d d FROM FROM Table1 ,Table2 WHERE Table1.d = Table2.c Table1 JOIN Table2 ON Table1.d = Table2.c i) Chỉ sử dụng thích để làm sáng tỏ điều khơng rõ việc đọc code j) Không sử dụng SELECT * câu lệnh truy vấn, thay vào sử dụng danh sách cột sau mệnh đề SELECT k) Sử dụng SET NOCOUNT ON đầu 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 mệnh đề ORDER BY, thay vào sử dụng tên cột Trang 11 Không sử dụng: Sử dụng: SELECT SELECT [UserID] ,[UserName] ,[Password] FROM dbo.[UserDetails] ORDER BY [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 mô tả chức năng, hướng dẫn định nghĩa 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 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 = Record is valid No concurrancy issues = Record is NOT concurrent *********************************************************/ o) Sử dụng comment Header để mô tả thông tin file script theo dõi thay đổi nội dung file script /****************************************** ** File: Trang 12 ** Name: ** Desc: ** Auth: ** Date: ************************** ** Change History ************************** ** PR Date Author Description ** - -** 01/10/2008 Dan added inner join ******************************************/ Phạm vi áp dụng, khả phổ biến Chuẩn code có khả áp dụng cho sinh viên khoa Công nghệ thông tin, trường cao đẳng Công Nghệ Thủ Đức Thời điểm áp dụng Áp dụng vào học kỳ hai, năm Hiệu mang lại Trang bị cho sinh viên kỹ viết code SQL Server theo chuẩn chung Trang 13 KẾT LUẬN Hiện nay, có tài liệu chuẩn viết code cho ngôn ngữ SQL Server, chủ yếu qui tắc truyền thông qua trang web mạng internet qui tắc khác trang web khác Do đó, chưa có chuẩn tương đối phù hợp cho sinh viên khoa Công nghệ thông tin, trường cao đẳng Công Nghệ Thủ Đức dùng để tham khảo áp dụng công việc học tập trường Trong đề tài sáng kiến kinh nghiệm này, tác giả thực việc nghiên cứu tài liệu để biên soạn thành chuẩn viết code cho ngôn ngữ SQL Server Tuy kết đề tài chưa thể đầy đủ qui tắc đáp ứng đầy đủ nhu cầu tham khảo học tập cho sinh viên trường Kết đề tài biên soạn tham khảo từ nhiều nguồn tư liệu khác thông tin chủ yếu mà đề tài sử dụng để tham khảo từ trang https://blogs.msdn.microsoft.com Bộ chuẩn viết code SQL Server hồn tồn triển khai áp dụng số học phần có sử dụng ngơn ngữ SQL cho sinh viên khoa Công nghệ thông tin, trường cao đẳng Công Nghệ Thủ Đức Khi áp dụng chuẩn giúp sinh viên hình thành kỹ ý thức viết code theo chuẩn, góp phần tạo điều kiện thuận lợi cho sinh viên tham gia vào dự án thực tế Hướng phát triển đề tài bổ sung thêm qui tắc mà thực tế thường sử dụng Trang 14 TÀI LIỆU THAM KHẢO [1] sql-2005-coding-standards-general-naming-convention-rules Xem 12.02.2017, [2] sql-2005-coding-standards-formatting-specfics Xem 12.02.2017, [3] sql-2005-coding-standards-basic-formatting-and-indentation-rules Xem 12.02.2017, [4] sql-2005-coding-standards-database-object-naming-rules Xem 12.02.2017, [5] coding-conventions-lat-mem-buoc-chat Xem 12.02.2017, Trang 15 ...  Yếu tố chủ quan: giúp sinh viên hình thành kỹ viết code SQL Server theo chuẩn Tên đề tài Chuẩn viết code SQL Server Nội dung 4.1 Chuẩn viết code gì?  Coding Standard hay coding conventions... Hiệu mang lại Trang bị cho sinh viên kỹ viết code SQL Server theo chuẩn chung Trang 13 KẾT LUẬN Hiện nay, có tài liệu chuẩn viết code cho ngôn ngữ SQL Server, chủ yếu qui tắc truyền thông qua trang... cho người sau 4.3 Các chuẩn viết code SQL Server Trang 4.3.1 Các định nghĩa a) PascalCase: kí tự từ viết hoa Ví dụ: FirstName b) camelCase: kí tự từ viết hoa ngoại trừ từ viết thường Ví dụ: firstName

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan