Σχεδιαστής ERD

Σχεδίαση ενός σχεσιακού σχήματος χωρίς διακομιστή βάσης δεδομένων: προσθήκη πινάκων, δήλωση στηλών με τύπους, κλειδιά και προεπιλογές, και σύνδεση με σχέσεις. Το διάγραμμα οντοτήτων-σχέσεων ξαναζωγραφίζεται καθώς πληκτρολογείται, και το ίδιο μοντέλο εξάγεται ως CREATE TABLE DDL για MySQL, PostgreSQL, SQL Server, SQLite ή Oracle, ως πηγαίος κώδικας Mermaid erDiagram, ή ως φορητό JSON σχήματος που μπορεί να επαναεισαχθεί εδώ ή να ανοιχτεί στη Γεννήτρια μεταναστεύσεων. Όλα εκτελούνται τοπικά.
Τι είναι ένα ERD; Το ERD είναι συντομογραφία του διαγράμματος οντοτήτων-σχέσεων, και είναι το σχέδιο μιας βάσης δεδομένων αντί για καταγραφή μιας ολοκληρωμένης. Χρήσιμη σύγκριση είναι το αρχιτεκτονικό σχέδιο ενός κτιρίου: η βάση που τρέχει είναι το κτίριο, το ERD είναι το σχέδιο, και κανείς δεν χύνει μπετό πριν μετρήσει. Αυτή η σελίδα είναι το σχεδιαστήριο αυτού του σχεδίου — το μοντέλο διαμορφώνεται εδώ, και το DDL, ο πηγαίος κώδικας Mermaid και το JSON σχήματος εκτυπώνονται όλα από το ίδιο μοντέλο, οπότε η εικόνα δεν μπορεί να αποκλίνει από το SQL που παρήγαγε.
Το ίδιο διάγραμμα σε τρία επίπεδα. Ένα εννοιολογικό ERD ονομάζει μόνο τα πράγματα που έχουν σημασία και πώς σχετίζονται, με λόγια που μπορεί να ελέγξει και μη προγραμματιστής. Ένα λογικό ERD προσθέτει τα κλειδιά που ταυτοποιούν κάθε πράγμα και επιλύει τις σχέσεις πολλά-προς-πολλά, παραμένοντας ανεξάρτητο από τη διάλεκτο οποιασδήποτε μηχανής. Ένα φυσικό ERD συμπληρώνει όσα απαιτεί ένα συγκεκριμένο προϊόν — πλάτη τύπων, προεπιλογές, δυνατότητα κενού, μοναδικοί περιορισμοί, κανόνες διαγραφής — και αυτό είναι το επίπεδο που εξάγεται εδώ όταν επιλέγεται MySQL, PostgreSQL, SQL Server, SQLite ή Oracle.
Από πού προέρχονται τα κουτιά. Διαβάζεται μια περιγραφή του συστήματος και υπογραμμίζονται τα ουσιαστικά: πελάτης, τιμολόγιο, προϊόν, αποστολή. Αυτά είναι οι πίνακες. Τα γεγονότα και τα χαρακτηριστικά που συνδέονται με ένα ουσιαστικό — ημερομηνία τιμολογίου, τιμή μονάδας, διεύθυνση ηλεκτρονικού ταχυδρομείου — είναι οι στήλες του. Ένα ρήμα που συνδέει δύο ουσιαστικά, όπως στο “μια παραγγελία καταχωρίζεται από έναν πελάτη”, είναι σχέση, και αποθηκεύεται αντιγράφοντας το κλειδί ταυτοποίησης της γονικής εγγραφής στη θυγατρική εγγραφή ως ξένο κλειδί.
Όταν μια σύνδεση είναι πολλά-προς-πολλά. Μια συνταγή χρησιμοποιεί πολλά συστατικά και ένα συστατικό εμφανίζεται σε πολλές συνταγές, οπότε κανένας από τους δύο πίνακες δεν μπορεί να κρατά το κλειδί του άλλου χωρίς να επαναλαμβάνεται. Η απάντηση είναι μια τρίτη οντότητα της οποίας ο μοναδικός ρόλος είναι να τους ζεύγει — ο ενδιάμεσος (ή συσχετιστικός) πίνακας, που κρατά ένα ξένο κλειδί για κάθε πλευρά, συχνά με το ζεύγος των κλειδιών ως δικό του κύριο κλειδί. Ένα μοντέλο που αποτελείται κυρίως από τέτοιους πίνακες ζεύξης είναι απολύτως φυσιολογικό: μια γραμμή πολλά-προς-πολλά σε λευκό πίνακα πρέπει πάντα να γίνει πίνακας στο πραγματικό σχήμα.
Γιατί αξίζει να γίνει πριν υπάρξει το DDL. Μια λάθος γραμμή στο σχέδιο κοστίζει ένα λεπτό για να σβηστεί· το ίδιο λάθος που βρίσκεται μετά την κυκλοφορία κοστίζει μια μετανάστευση πάνω σε ζωντανά δεδομένα. Το διάγραμμα είναι επίσης το μόνο αντικείμενο που μπορούν να ελέγξουν οι μη προγραμματιστές, και τα σφάλματα σχέσεων — μια πληθικότητα με λάθος φορά, ένα μοναδικό κλειδί που λείπει, θυγατρικές εγγραφές που μπορούν να μείνουν χωρίς γονέα — εμφανίζονται ως προφανώς λάθος γραμμές εδώ, ενώ σε ένα αρχείο DDL 400 γραμμών κρύβονται ανάμεσα στους περιορισμούς.
Προς τα εμπρός ή προς τα πίσω; Ο σχεδιαστής αυτός πηγαίνει προς τα εμπρός: πρώτα μοντέλο, μετά DDL. Η αδελφή σελίδα SQL σε ERD πηγαίνει προς την αντίθετη κατεύθυνση — με επικόλληση υπαρχουσών δηλώσεων CREATE TABLE ξαναχτίζεται το διάγραμμα, που είναι ο ταχύτερος δρόμος όταν η βάση υπάρχει ήδη.
1 — Πίνακες
Επεξεργασία Όνομα πίνακα Στήλες Σχέσεις Actions
2 — Στήλες
Στήλη Τύπος PK AI NN UQ Προεπιλογή Actions
PK = κύριο κλειδί, AI = αυτόματη αύξηση / ταυτότητα, NN = όχι κενό, UQ = μοναδικό
3 — Σχέσεις (ξένα κλειδιά)
Θυγατρικός πίνακας Θυγατρική στήλη Actions Γονικός πίνακας Γονική στήλη Κατά τη διαγραφή Actions
Ένα ξένο κλειδί μετατρέπεται σε γραμμή CONSTRAINT ... FOREIGN KEY στο DDL.
4 — Εξαγωγή
Πηγαίος κώδικας Mermaid erDiagram
Το μοντέλο JSON είναι η μορφή ανταλλαγής για την οικογένεια εργαλείων βάσεων δεδομένων: επικολλάται στη Γεννήτρια μεταναστεύσεων ως σχήμα πριν/μετά, ή επαναεισάγεται εδώ για να συνεχιστεί η επεξεργασία αργότερα.