====== Σχεδιασμός Βάσεων Δεδομένων ====== ====== Εισαγωγή ====== Η εφαρμογή δημιουργίας διαγραμμάτων dia (Windows-Linux)μπορεί να χρησιμοποιηθεί για την δημιουργία Οντοτήτων-Συσχετίσεων. Στην συνέχεια με τα ακόλουθα εργαλείο κονσόλας μπορούμε να εξάγουμε σε ένα sql αρχείο το σχήμα της βάσης *dia2code (Windows-Linux) ή ακόμα καλύτερα το *tedia2sql (Linux) http://tedia2sql.tigris.org/usingtedia2sql.html ====== Εγκατάσταση ====== ===== Debian Linux ===== aptitude install dia dia2code tedia2sql ====== Δημιουργία σχήματος ====== Επιλέγουμε εργαλειοθήκη tedia2sql | ^ tedia2sql ^ dia2code | ^Πρωτεύον κλειδί | Προστατευμένο πεδίο | εύρος οντότητας | ^Συσχέτιση πλευρά ένα | Πολλαπλότητα 1, ρόλος το όνομα του πεδίου || ^Συσχέτιση πλευρά πολλά | Πολλαπλότητα *, ρόλος το όνομα του πεδίου, τσεκάρουμε το ομάδα|| Για την δημιουργία VIEWS - Στην Καρτέλα Οντότητα, τσεκάρουμε αφηρημένο, - Στην Καρτέλα Attributes, για τα πεδία που εμφανίζονται στο τμήμα SELECT, π.χ. CI.* η CI.IDCustomer - Στην Καρτέλα Operations, για τους πίνακες στο τμήμα FROM *στο όνομα (κανονικό όνομα πίνακα) (σύντομο όνομα), π.χ. CustomerInfo CI *στον τύπο from - Στην Καρτέλα Operations, για τις συνθήκες στο τμήμα WHERE *στο όνομα (κανονικό όνομα πίνακα) (σύντομο όνομα), π.χ. (VCICTI.IDCustomer=DI.IDCustomer) ή (and age>21) *στον τύπο where ====== Εξαγωγή σχήματος ====== Για mysql : tedia2sql -i weballdesign.dia -o mysql-testerd -t innodb -d Προσοχή * δημιουργείται σωστό αρχείο sql για τα foreign keys μόνο αν ορίσουμε -t innodb * Αν έχουμε constraints, χρειάζεται να κάνουμε διαγραφή πινάκων με διαδοχικές προσπάθειες μέσα από το phpmyadmin (λόγω των constraints δεν διαγράφονται όλοι οι πίνακες με την μία από το sql αρχείο που παράγεται) ====== Συμβάσεις ====== =====Τύποι Δεδομένων===== Οι ακόλουθοι είναι συμβατοί τύποι δεδομένων με το σύνολο των βάσεων ^Κείμενο | VARCHAR (x)| ^Ακέραιος | INT | ^Πραγματικός | FLOAT | ^Ημερομηνία | DATE | ^Λογικός | BOOLEAN | =====Πεδία===== Κάποιες προσωπικές επιλογές για απλότητα, ομοιόμορφη εμφάνιση και γρήγορο εντοπισμό * Το πρωτεύον κλειδί να είναι το πρώτο πεδίο * Το όνομά του και γενικά το όνομα των κλειδιών να είναι ID+(όνομα πίνακα) π.x. IDCustomer για τον πίνακα Customer * Τα ξένα κλειδιά να έχουν το ίδιο όνομα με τα πρωτεύοντα * Τα ξένα κλειδιά να ακολουθούν ως 2ο,3ο .. πεδία στον πίνακα * Στα πεδία με πολλές λέξεις να διαχωρίζονται οι λέξεις με κεφαλαίο το 1ο γράμμα κάθε λέξης και όχι με κάτω παύλα _ =====Πινακες===== * Μικρά όσο το δυνατόν ονόματα πινάκων, αλλά όχι συντομογραφίες-γρίφοι * Πίνακες με απλά πεδία απαρίθμησης να ξεκινάνε με την λέξη Type * π.χ. πίνακας TypeStatus με πεδίο IDTypeStatus τιμές 1,2.. και TypeStatusName Active Inactive κτλ =====VIEWS-SQL QUERIES===== * Δημιουργία Views για οτιδήποτε χρειαστούμε SQL επερωτήσεις και συνδυασμό δημιουργίας VIEW από VIEW. Αυτό βολεύει πάρα πολύ ειδικά σε σχεδιασμό φορμών σε κάποιο frontend για την βάση (π.χ. OpenOffice Base) * Όψεις (Views) να ξεκινάνε με V_ και να συνεχίζουν με τα αρχικά των πινάκων σε κεφαλαία διαχωριζόμενα από κάτω παύλα * π.χ. create view V_CI_CTI as select CI.Name, CTI.Username from CustomerInfo CI, CustomerTechInfo CTI where .. ====== Χρήσιμα ====== * Δημιουργώντας σχήματα βάσεων http://www.schemamania.org/ * Γενικοί τύποι δεδομένων sql http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt