Να προσθέσω κι εγώ ότι είναι πολύ κακή ιδέα να βάζεις λογική στο primary key. Γιατί, όπως είδες, τί γίνεται όταν τα στοιχεία που είναι κρυμμένα μέσα στο primary key αλλάξουν? Πως θα μπορέσεις να ταιριάξεις μετά τις παλιές εγγραφές με τις καινούριες? Αν αρχίσεις να συγκρίνεις subsctring δεν θα μπορείς να εκμεταλλευτείς τα indexes. Γενικά, τα primary keys δεν πρέπει να είναι μεταβαλλόμενα, και η προσθήκη λογικής προκαλεί σχεδόν πάντα και μεταβολλές.
Γι αυτό το λόγο το Primary key είναι ένας αριθμός που δίνει το ίδιο το σύστημα ή ένα GUID. Οποιαδήποτε άλλη πληροφορία, π.χ. κατηγορία προϊόντος, ή κατάσταση παραγγελίας, ή πληρωμή δανείου μπαίνουν πάντα σε άλλες στήλες, ή ακόμα και άλλους, βοηθητικούς πίνακες. Ακόμα και αν το "κλειδί" σου έρχεται απέξω και περιέχει εξτρα πληροφορία (π.χ. αριθμός πρωτοκόλλου) καλύτερα είναι να προσθέσεις εσύ ένα νέο βοηθητικό primary key παρά να χρησιμοποιήσεις το "μεταβαλλόμενο".
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos