Suppose I have a table “Progress” with two columns.
One column is ID which is identity.
Another column is Progress_Label
ID Progress_Label
1 Submitted
2 Approved by user
3 Rejected by leadership
4 Cancelled
5 Completed
What is the best programming practice, should I go by ID or by label? In my stored procedures, functions, or in programming code methods etc should I search records by the ID = 3 for example or should I type “Where progress_lable is Rejected by leadership” ?
If somebody would want to edit the labels, all the code would stop working if I go by the label?
At the same type if I type the label, code looks more understandable since it says right in the code what is it we are looking for?
Are there any articles regarding this?
Use the ID.
The label does change, sometimes, and for human-readable code you can just use things like enums:
enum DocumentProgress
{
Submitted = 1,
Approved by user = 2,
Rejected by leadership = 3,
Cancelled = 4,
Completed = 5
}
Which might be used like this:
Item.Progress = DocumentProgress.Submitted;
Create a method called
GetProgressIdByLabel so you can do something like
int progressId = GetProgressIdByLabel("Submitted")
This reads nicely, your method should throw an exception if someone uses a label that doesn’t exist
1