go backsqlschool blogs list

An easy way to have a database documentation

by Antonios Chatzipavlis

Όλοι θέλουμε να έχουμε ένα 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

Σημείωση.
Δείτε ότι μπορείτε να έχετε τα 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



Υ.Γ. Αυτό το άρθρο είναι αφιερωμένο στο αφεντικό που ζητάει συνέχεια πολλά

Ημερομηνία: 04 April 2016 23:15
Αξιολόγηση: ( 1 )
Κατηγορίες:
Share it:

Αφήστε το σχόλιο σας - Leave your comment

Τα σχόλια έχουν κλείσει.
Επιτρέπονται μόνο τα σχόλια από τα μέλη του SqlSchool.gr.


newsletter subscription

Εάν επιθυμείτε να λαμβάνετε ενημέρωση από εμάς, δώστε μας το e-mail σας.
PASS chapter logo
Official Professional Association for SQL Server (PASS) chapter for Greece
Join to PASS