You want to know if it's best to use a natural key or surrogate .
Just leave the registration field as the primary key.
This is a natural key. Do you control this number? Will he never be changed? Is not there any chance of the same object in the database one day needing to have another unique ID? Is she short enough? Does it give rise to errors? Will it always be unique? Does it really identify what this object is?
Most data in the world does not meet all these criteria, so a substitute key is chosen. If you meet all this, you can use it without problems. But be careful, a lot of people think that it answers and one day discovers that it does not answer.
Leave the registration field with a unique index and create an id field with auto increment to be the primary key.
This is a substitute key. It is interesting in many cases to maintain an internal control in the system independent of the number that the user handles. I can not say that it's the best in your case. If you can do well the previous item then you do not have to do this, you're just wasting space and performance.
Leave the registration field as the primary key and create an id field with auto increment index, to be auxiliary.
It does not seem to me to be any advantage.
Contrary to what many people think there is always a primary key on every table. Even when the database does not require you to create one (it creates without you knowing). Also contrary to popular belief, the primary key is always an index. The data is always sorted into the database by the primary key, it is an index. Secondary indices usually refer to the primary index.