Όλες οι databases περιέχουν κάποια πεδία (fields) που είναι συνηθισμένα. Τέτοια πεδία είναι πχ τα emails, τηλέφωνα, χώρες, ΤΚ, ΑΦΜ, κωδικός προϊόντος κ.α.
Πάντα το ερώτημα είναι :
Tι μέγεθος να ορίσω για αυτά ώστε να καλύψω όλες τι περιπτώσεις;
Είναι από τα κυρίαρχα ερωτήματα και δυστυχώς τις περισσότερες φορές η απάντηση είναι είτε να έχουμε εκτιμήσει περισσότερο από όσο χρειάζεται είτε λιγότερο.
Είμαι σίγουρος ότι ψάχνετε αλλά το θέμα είναι που ψάχνετε;
Για τα περισσότερα από αυτά τα πεδία υπάρχουν RFCs & ISOs καθώς είναι παγκόσμια ορισμένα.
Για να δούμε μερικά παραδείγματα.
Emails
Υπάρχει το RFC-3696 που σαφέστατα ορίζει ότι το email μπορεί να είναι μέχρι 320 χαρακτήρες αν και με το RFC-5321 αναγνωρίζεται ότι η μεγαλύτερη καταγεγραμμένη email address είναι 254 χαρακτήρες.
Τηλέφωνο
Από την ITU (International Telecommunication Union) με το Ε.164 ορίζει σαφώς το τηλέφωνο. Σε αυτό θα δείτε όλες τις δυνατές εκδοχές που μπορεί να έχουμε. Αν επιλέξουμε την εκδοχή χωρίς ίχνος formatting 16 χαρακτήρες είναι αρκετοί.
Χώρες
Απορίας άξιο είναι γιατί επιμένουμε να έχουμε την χώρα σαν ελεύθερο κείμενο στα records αφού υπάρχει το ISO 3166-1 και μπορούμε να κρατάμε τον κωδικό που είναι 3 χαρακτήρες.
Σημείωση: επειδή το ISO για να το πάρεις έχει ένα κόστος δείτε και από την wikipedia
ΑΦΜ
Η EU σαφώς ορίζει το πως αυτό είναι και για να καλύψουμε όλες τις περιπτώσεις χωρίς κενά 15 χαρακτήρες είναι αρκετοί.
ΤΚ
Και αυτό είναι μια παγκόσμια σταθερά δείτε
Γιατί όμως γράφω αυτό το άρθρο;
Όπως έχω γράψει και στο παρελθόν στο άρθρο μου Why you must choose correctly the size of each field in a table είναι αρκετά σημαντικό κάτι τέτοιο να γίνει σωστά καθώς η ορθή επιλογή δίνει και καλύτερο performance και όχι να καταφεύγουμε σε λύσεις όπως να ορίζονται σαν varchar/nvarchar(max).
Μην αφήνεται τα πράγματα στην τύχη τους καθώς είναι σίγουρο ότι στο μέλλον θα το βρείτε μπροστά σας. Ακόμα και στις περιπτώσεις που έχετε επιλέξει κάτι μικρό θα χρειαστεί να κάνετε ALTER column και αυτό ίσως να μην είναι εύκολο να γίνει σε ένα 24Χ7 παραγωγικό σύστημα.
//antonch