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?

2 Answers 2


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

  • Using string literals in a code is not really a good practice. Jun 21, 2013 at 17:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.