Microsoft SQL Server
A. Standard Codes
Standard codes Rekadia untuk penulisan Table, View, Column, Parameter dan Variable adalah menggunakan bahasa Inggris dan menggunakan casing PascalCase (UpperCamelCase). Berikut contoh penulisan dari masing-masing:
Object Type | Example |
---|---|
Table | Company |
Column | Name |
Parameter | @Separator |
Variable | @Result |
Terdapat perbedaan standard codes penulisan pada Function, Stored Procedure, Relationships dan Index. Untuk penulisan Function dan Relationships dan Index menggunakan Pascal_Case_With_Underscore. Sedangkan pada Stored Procedure menggunakan snake_case. Untuk Relationships diawali dengan FK_
dan untuk Index menggunakan IX_
. Sedangkan untuk Stored Procedure diawali dengan sp_
. Berikut contoh penulisan dari masing-masing:
Object Type | Example |
---|---|
Function | Split_String |
Stored Procedure | sp_clear_history |
Relationships | FK_Area_Company |
Index | IX_Area |
B. Standard Column Name
Standar Rekadia untuk penanamaan Column pada Table Microsoft SQL Server adalah sebagai berikut:
- Pada penamaan tidak perlu penegasan bahwa kolom ini milik tabel apa. Untuk lebih jelas dapat di lihat pada Table 1.3 sampai dengan Table 1.5.
- Hindari penggunaan nama kolom yang merupakan tipe objek dari bahasa pemrograman C#, contoh:
DateTime
,TimeSpan
,String
dan lain-lain.
Tabel Company
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Code | int | No |
Name | varchar(50) | No | |
ProfilePicture | varchar(200) | Yes |
Tabel Area
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Code | int | No |
Name | varchar(50) | No | |
Address | varchar(500) | Yes | |
FK, IX | CompanyCode | int | No |
Tabel Company
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | CompanyCode | int | No |
CompanyName | varchar(50) | No | |
CompanyProfilePicture | varchar(200) | Yes |
C. Standard Data Type
SQL Server Data Type | C# Data Type | Remarks |
---|---|---|
varchar | string | Untuk perbedaan antara nvarchar dan varchar dapat membaca pembahasan di sini |
smallint | short | |
int | int | |
bigint | long | |
float | double | |
money | decimal | |
date | DateTime | Digunakan untuk menyimpan waktu yang tidak memiliki jam |
datetimeoffset | DateTimeOffset | Digunakan untuk menyimpan waktu yang memiliki jam, dengan demikian waktu yang tampil pada UI dapat sesuai dengan offset hour dari masing- masing wilayah |
time | TimeSpan | |
bit | bool |
D. Format Codes
Penulisan keywords SQL dan Function pada syntax Microsoft SQL Server adalah menggunakan UPPERCASE. Berikut contoh penulisannya:
SELECT [Code], dbo.STRING_TRIM([Name]) AS [Name] FROM dbo.[Area] WHERE [Deleted] = 0 AND [CompanyCode] = 1001; SELECT COUNT(*) AS [Total] FROM dbo.[Area] WHERE [Deleted] = 0;
Penulisan Stored Procedure pada syntax Microsoft SQL Server adalah menggunakan lowercase. Berikut contoh penulisannya:
-- with parameter name EXEC sp_reset_identity @TableName = 'TaskHistory', @Value = 82000000; -- without parameter name EXEC sp_reset_identity 'TaskHistory', 82000000;
Penulisan Data Type pada syntax Microsoft SQL Server adalah menggunakan lowercase. Berikut contoh penulisannya:
-- variable table DECLARE @Table table ( [Id] int identity(1,1), [Value] varchar(MAX) ); -- temp table CREATE table #Table ( [Id] int identity(1,1), [Value] varchar(MAX) );
Contoh penulisan Function dan Stored Procedure ada pada artikel berikut ini.
E. Structure Table
One to Many (1 to *)
Syarat untuk relasi ini adalah terdapat constraints antara dua tabel dimana terdapat foreign key pada tabel relasi dan merupakan primary key pada tabel utama. Perhatikan contoh berikut:
Tabel Company
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Code | int | No |
Name | varchar(50) | No | |
ProfilePicture | varchar(200) | Yes |
Tabel Area
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Code | int | No |
Name | varchar(50) | No | |
Address | varchar(500) | Yes | |
FK, IX | CompanyCode | int | No |
Pada contoh di atas Table Company
sebagai one dan Tabel Area
sebagai many.
Zero..One to Many (0..1 to *)
Syarat pada relasi ini hampir sama dengan relasi One to Many (1 to *), perbedaanya terdapat pada foreign key yang bersifat nullable
. Perhatikan contoh berikut.
Tabel Company
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Code | int | No |
Name | varchar(50) | No | |
ProfilePicture | varchar(200) | Yes |
Tabel Area
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Code | int | No |
Name | varchar(50) | No | |
Address | varchar(500) | Yes | |
FK, IX | CompanyCode | int | Yes |
One to Many Base on Parent (1 to *)
Syarat untuk relasi ini adalah terdapat constraints antara dua tabel dimana terdapat foreign key pada tabel relasi dan merupakan primary key pada tabel utama. Selain syarat tersebut, foreign key pada tabel relasi harus menjadi primary key dan terdapat satu kolom lagi yang menjadi primary key. Perhatikan contoh berikut:
Tabel Equipment
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Id | int | No |
TagNumber | varchar(100) | No | |
Description | varchar(100) | No | |
FK, IX | CompanyCode | int | No |
Tabel Equipment Image
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK, FK | Id | int | No |
PK | ImageName | varchar(200) | No |
Struktur tabel seperti ini biasa digunakan untuk form yang sekaligus menyimpan atau mengubah data tabel utama dan tabel relasi dalam satu proses yang sama, berikut contoh form pada UI aplikasi:

Kelebihan struktur tabel ini adalah dapat mengontrol secara penuh proses CRUD melalui parent object pada Entity Framework terutama pada proses delete. Perhatikan contoh code berikut:
//EquipmentFormStub.cs public void MapDbObject(Equipment dbObject) { // proses mapping pada FormStub //... //... // keuntungan yang didapatkan jika menerapkan relasi 1 to * base on parent dbObject.EquipmentImages.clear(); //... //... } //EquipmentController.cs public Task<ActionResult> Edit(EquipmentFormStub model) { // proses edit pada Controller List<EquipmentImages> images = await RepoEquipmentImage.GetAllAsync(m => m.EquipmentId == model.Id); // jika tidak dimenerapkan relasi 1 to * base on parent RepoEquipmentImage.DeleteAll(images); //... //... }
Zero..One to Many Self Relation (0..1 to *)
Secara konsep relasi ini sama dengan relasi Zero..One to Many (0..1 to *), perbedaanya contraints mengarah pada tabel itu sendiri. Perhatikan contoh berikut.
Tabel Role
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Id | int | No |
Name | varchar(100) | No | |
Description | varchar(100) | Yes | |
FK, IX | ParentId | int | Yes |
One to One (1 to 1)
Syarat untuk relasi ini adalah terdapat constraints antara dua tabel dimana terdapat foreign key pada tabel relasi dan merupakan primary key pada tabel utama. Selain syarat tersebut, foreign key pada tabel relasi harus menjadi primary key. Perhatikan contoh berikut:
Tabel User
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Id | int | No |
Name | varchar(20) | No | |
varchar(100) | No | ||
FK, IX | CompanyCode | int | No |
Tabel UserProfile
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK, FK | Id | int | No |
FullName | varchar(100) | No | |
ImageName | varchar(200) | Yes |
Many to Many (* to *)
Syarat untuk relasi ini adalah terdapat constraints antara tiga tabel dimana terdapat foreign key pada tabel penghubung relasi dan merupakan primary key pada tabel utama. Perhatikan contoh berikut:
Tabel User
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Id | int | No |
Name | varchar(50) | No | |
varchar(100) | No | ||
FK, IX | CompanyCode | int | No |
Tabel Role
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK | Id | int | No |
Name | varchar(20) | No | |
Description | varchar(500) | Yes |
Tabel UserRole
Key | Column Name | Data Type | Allow Nulls |
---|---|---|---|
PK, FK | UserId | int | No |
PK, FK | RoleId | int | No |