Όλοι θέλουμε να έχουμε ένα documentation για κάθε database που παραλαμβάνουμε από άλλους. Μάλιστα εκφράζουμε την δυσαρέσκεια μας όταν κάτι τέτοιο δεν υπάρχει, αλλά αν μας ζητήσουν να φτιάξουμε εμείς κάτι τέτοιο για την database που φτιάχνουμε τότε διαμαρτυρόμαστε ότι αυτό είναι χάσιμο χρόνου ή ότι δεν είναι η δουλεία μας κάτι τέτοιο.
Μπορώ να καταλάβω τις διαφωνίες καθώς οι περισσότεροι θεωρούν ότι θα πρέπει να γράψουν καντάρια κειμένου. Αλήθεια πόσοι από εσάς έχετε πάρει τόμους τεκμηρίωσης στα χέρια σας και τα έχετε διαβάσει όλα;
Αυτό που ζητάει ένας συνάδελφος σε τεκμηρίωση δεν είναι η "Για σας παιδιά". Θέλει κάτι περιεκτικό σύντομο και αναλυτικό. Ένα ER με τους πίνακες σε πρώτη φάση είναι αρκετό. Επίσης σχόλια μέσα στο κώδικα είναι αρκετά για αυτόν που θα παραλάβει. Αλλά επίσης σημαντικό είναι σχόλια στην δομή των πινάκων και ιδιαίτερα στο τι κάνει κάθε πεδίο.
Αυτό μάλιστα το τελευταίο είναι τόσο μα τόσο εύκολο να γίνει κατά στιγμή μάλιστα που δημιουργούμε το κάθε table που με κάνει να αναρωτιέμαι γιατί δεν γίνεται. Ακόμα και αν δεν γίνει την στιγμή αυτή μπορεί να γίνει εκ των υστέρων.
Εάν χρησιμοποιούμε τον table designer που μας δίνει ο SSMS μπορούμε να βάλουμε περιγραφή στο κάθε πεδίο του πίνακα μας στο Description property που υπάρχει στο Column Properties section. Περιγραφή για το table μπορούμε να βάλουμε στο Description property στο Properties window.
Αν φτιάχνουμε το table με script τότε μπορούμε να κάνουμε την δουλειά αυτή με δύο stored procedures τις sp_addextendedproperty και sp_updateextendedproperty
Note
Δείτε ότι μπορείτε να έχετε τα extended properties και για άλλα objects όπως ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE, PLAN GUIDE, NULL
Είναι τόσο απλό και εύκολο που αυτός που θα δει ότι έχουν χρησιμοποιηθεί αυτά θα σας συγκαταλέξει στους σοβαρούς επαγγελματίες.
Για αυτόν πλέον είναι αρκετά εύκολο να έχει μια λίστα που να του δίνει ξεκάθαρα την χρήση του κάθε πεδίου και πίνακα και αυτή την λίστα μπορεί να την βγάλει με το παρακάτω query
select
schema_name(t.schema_id) as SchemaName
, t.name as TableName
, '' as TableDescription
, c.name as ColumnName
, y.name as ColumnType
, c.max_length as ColumnLenght
, isnull(p.value,'') as ColumnDescription
from sys.tables as t
inner join sys.columns as c on t.object_id=c.object_id
inner join sys.types as y on c.system_type_id=y.user_type_id
left outer join sys.extended_properties as p on p.major_id=t.object_id and p.minor_id=c.column_id and p.class=1
union
select distinct
schema_name(t.schema_id) as SchemaName
, t.name as TableName
, isnull(p.value,'') as ColumnDescription
, '','','',''
from sys.tables as t
left outer join sys.extended_properties as p on p.major_id=t.object_id and p.minor_id=0
order by 1,2,3 desc