Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών.
Μια σχέση βάσης δεδομένων περιγράφει τη σύνδεση μεταξύ διαφορετικών πινάκων βάσης δεδομένων. Οι σχέσεις καθορίζουν τον τρόπο αποθήκευσης και ανάκτησης δεδομένων. Το Django λειτουργεί καλά με συστήματα σχεσιακών βάσεων δεδομένων (RDBMS). Επομένως, υποστηρίζει σχέσεις πινάκων βάσης δεδομένων.
Οι τύποι σχέσεων εξαρτώνται από τις απαιτήσεις της εφαρμογής σας και τα δεδομένα που μοντελοποιεί. Οι καλές σχέσεις μεταξύ των μοντέλων Django και της βάσης δεδομένων βελτιώνουν τη συντήρηση των δεδομένων. Αυτό περιλαμβάνει τη βελτίωση της απόδοσης των ερωτημάτων και τη μείωση των διπλών δεδομένων.
Μπορείτε να μάθετε πώς οι σχέσεις της βάσης δεδομένων Django επηρεάζουν την απόδοση της εφαρμογής εξερευνώντας τους τρεις κύριους τύπους σχέσεων.
Σχέσεις Βάσεων Δεδομένων
Τα συστήματα σχεσιακών βάσεων δεδομένων υποστηρίζουν τρεις τύπους σχέσεων βάσης δεδομένων. Αυτές οι σχέσεις είναι ένα προς πολλά, πολλά προς πολλά και ένα προς ένα. Ο τύπος της σχέσης βάσης δεδομένων επηρεάζει τις περιπτώσεις χρήσης της εφαρμογής σας.
Μοντέλα Django αντιπροσωπεύουν πίνακες βάσης δεδομένων στην εφαρμογή. Πρέπει να δημιουργήσετε καλές σχέσεις μεταξύ των πινάκων για να δημιουργήσετε ένα καλό σύστημα βάσης δεδομένων. Οι σχέσεις βάσης δεδομένων καθορίζουν τον τρόπο αποθήκευσης και παρουσίασης δεδομένων στην εφαρμογή σας.
Για να κατανοήσετε τις σχέσεις βάσης δεδομένων, ξεκινήστε από δημιουργώντας ένα έργο Django ονομάστηκε Κουκούλες. Η εφαρμογή θα είναι ένα κοινωνικό δίκτυο γειτονιάς. Θα διαχειρίζεται τις κοινωνικές δραστηριότητες, την ασφάλεια και τις επιχειρήσεις διαφόρων γειτονιών.
Οι κάτοικοι μπορούν να εγγραφούν, να συνδεθούν και να δημιουργήσουν προφίλ. Μπορούν επίσης να δημιουργήσουν αναρτήσεις και επαγγελματικές διαφημίσεις για να τις δουν όλοι.
Για να ξεκινήσετε, δημιουργήστε μια βάση δεδομένων που θα αποθηκεύει όλα τα δεδομένα γειτονιάς. Στη συνέχεια, θα δημιουργήσετε τα μοντέλα Profile, NeighborHood, Business και Post. Για να δημιουργήσετε τα μοντέλα, πρέπει να καθορίσετε τη σχέση που χρειάζονται οι πίνακες της βάσης δεδομένων.
Σχέση βάσης δεδομένων One-to-One
Μια σχέση ένας προς έναν συνεπάγεται ότι ένα αρχείο σε ένα μοντέλο Django σχετίζεται με ένα άλλο ρεκόρ σε ένα άλλο μοντέλο. Τα δύο αρχεία εξαρτώνται το ένα από το άλλο. Σε αυτή την περίπτωση, το Μοντέλο προφίλ εξαρτάται από Μοντέλο χρήστη για τη δημιουργία προφίλ κατοίκων.
Επομένως, μπορεί να υπάρχει μόνο ένα προφίλ για κάθε κάτοικο που είναι εγγεγραμμένος στην εφαρμογή. Επίσης, χωρίς χρήστη, δεν μπορεί να υπάρξει προφίλ.
από django.db εισαγωγή μοντέλα
απότζάνγκο.συνεισφέρω.auth.μοντέλαεισαγωγήΧρήστηςτάξηΠροφίλ(μοντέλα. Μοντέλο):
χρήστης = μοντέλα. OneToOneField (Χρήστης, on_delete=models. CASCADE, related_name='Προφίλ')
όνομα = μοντέλα. CharField (max_length=80, κενό=Αληθής)
bio = μοντέλα. Πεδίο κειμένου (max_length=254, κενό=Αληθής)
profile_picture = CloudinaryField('εικόνα προφίλ', προεπιλογή='default.png')
τοποθεσία = μοντέλα. CharField (max_length=50, κενό=Αληθής, μηδενικό=Αληθής)
email = μοντέλα. Email Field(μηδενικό=Αληθής)
def__str__(εαυτός):
ΕΠΙΣΤΡΟΦΗ φά'{εαυτόςπροφίλ .user.username}'
Το μοντέλο χρήστη του Django είναι ένα ενσωματωμένο μοντέλο ελέγχου ταυτότητας στο Django. Δεν χρειάζεται να δημιουργήσετε ένα μοντέλο για αυτό. Αντίθετα, εισάγετέ το από django.contrib.auth. ο OneToOneField() στο Μοντέλο προφίλ ορίζει μια σχέση ένας προς έναν.
ο on_delete=μοντέλα. ΑΛΛΗΛΟΥΧΙΑ Το όρισμα αποτρέπει τη διαγραφή μιας από αυτές τις εγγραφές. Πρέπει να διαγράψετε τις εγγραφές και από τους δύο πίνακες.
Μπορείτε να χρησιμοποιήσετε τη διεπαφή διαχειριστή Django για να οπτικοποιήσετε τη σχέση στην εφαρμογή σας. Για να συνδεθείτε στον διαχειριστή του Django, πρέπει να εγγραφείτε ως χρήστης διαχειριστή, γνωστός ως α υπερχρήστης.
Δημιουργήστε έναν υπερχρήστη εκτελώντας την ακόλουθη εντολή στο τερματικό:
Πύθωνδιαχειρίζονται.pyδημιουργία υπερχρήστη
Θα εμφανιστεί ένα μήνυμα για να εισαγάγετε το όνομα χρήστη, το email και τον κωδικό πρόσβασής σας. Μόλις το κάνετε, ξεκινήστε τον διακομιστή.
Ανοίξτε τη σελίδα διαχειριστή σε ένα πρόγραμμα περιήγησης χρησιμοποιώντας τη διεύθυνση URL http://127.0.0.1:8000/admin.
Θα δείτε τη σελίδα διαχειριστή όπου μπορείτε να συνδεθείτε με τα διαπιστευτήρια που δημιουργήσατε νωρίτερα. Μόλις συνδεθείτε, θα δείτε το Ομάδες και Χρήστες αντικείμενα. Το πλαίσιο ελέγχου ταυτότητας Django διαχειρίζεται αυτά τα δύο μοντέλα. Στο κάτω μέρος, θα δείτε το Μοντέλο προφίλ.
Ανοιξε το Προφίλ μοντέλο και προχωρήστε στην προσθήκη προφίλ. Θα δείτε να εμφανίζεται ως εξής:
Σημειώστε ότι έχετε την επιλογή να δημιουργήσετε ένα προφίλ για έναν χρήστη. Ο τύπος δεδομένων OneToOneField() σάς επιτρέπει να δημιουργείτε προφίλ για πιστοποιημένους χρήστες. Αυτός είναι ο τρόπος με τον οποίο η εφαρμογή διαχειρίζεται σχέσεις ένας προς έναν.
Σχέσεις ένα προς πολλά
Η σχέση ενός προς πολλά υποδηλώνει ότι μια εγγραφή σε ένα μοντέλο συσχετίζεται με πολλές εγγραφές σε ένα άλλο μοντέλο. Αναφέρεται επίσης ως σχέση πολλά προς ένα.
Στην περίπτωσή σας, ένας διαχειριστής μπορεί να δημιουργήσει πολλές γειτονιές. Αλλά κάθε γειτονιά μπορεί να ανήκει μόνο σε έναν διαχειριστή. Μπορείτε να χρησιμοποιήσετε τον τύπο δεδομένων ForeignKey για να ορίσετε μια τέτοια σχέση.
Το Django έχει μια ενσωματωμένη διεπαφή διαχειριστή. Δεν χρειάζεται να δημιουργήσετε ένα μοντέλο για αυτό. Ο διαχειριστής έχει το δικαίωμα να διαχειρίζεται το περιεχόμενο και να οπτικοποιεί την εφαρμογή από τον πίνακα διαχείρισης.
Το μοντέλο που χωράει πολλά αρχεία θα έχει το Ξένο κλειδί. Ορίζει τη σχέση ως ένα προς πολλά. Ο παρακάτω κωδικός δείχνει πού να τοποθετήσετε το κλειδί.
τάξηΓειτονιά(μοντέλα. Μοντέλο):
admin = μοντέλα. Ξένο κλειδί("Προφίλ", on_delete=μοντέλα. CASCADE, related_name='κουκούλα')
όνομα = μοντέλα. CharField (max_length=50)
τοποθεσία = μοντέλα. CharField (max_length=60)
hood_logo = CloudinaryField('hood_logo', προεπιλογή='default.png')
περιγραφή = μοντέλα. Πεδίο κειμένου()
health_tell = μοντέλα. IntegerField(μηδενικό=Αληθής, κενό=Αληθής)
αστυνομικός_αριθμός = μοντέλα. IntegerField(μηδενικό=Αληθής, κενό=Αληθής)
Count= μοντέλα. IntegerField(μηδενικό=Αληθής, κενό=Αληθής)
def__str__(εαυτός):
ΕΠΙΣΤΡΟΦΗ φά'{εαυτός.name} κουκούλα
Μπορείτε να δείτε τη σχέση στην εφαρμογή όπως φαίνεται στην εικόνα:
ο Γειτονιά Το μοντέλο έχει πλέον διαχειριστή. Για να δημιουργήσει κάποιος μια γειτονιά, πρέπει να έχει δικαιώματα διαχειριστή. Και μια γειτονιά δεν μπορεί να έχει πολλούς διαχειριστές.
Σχέσεις βάσεων δεδομένων πολλών-προς-πολλών
Σε πολλές προς πολλές σχέσεις, πολλές εγγραφές σε ένα μοντέλο συσχετίζονται με άλλες σε άλλο. Για παράδειγμα, το Θέση και Επιχείρηση τα μοντέλα μπορούν να έχουν πολλές εγγραφές μεταξύ τους. Οι χρήστες μπορούν να κάνουν πολλές επαγγελματικές διαφημίσεις στις αναρτήσεις τους και αντίστροφα.
Ωστόσο, η δημιουργία σχέσεων πολλά-προς-πολλά μπορεί να οδηγήσει σε ανακριβή δεδομένα. Σε άλλα πλαίσια, θα πρέπει να δημιουργήσετε έναν νέο πίνακα για να ενώσετε τους δύο πίνακες.
Ο Django έχει μια λύση για αυτό. Όταν χρησιμοποιείτε το πεδίο πολλά προς πολλά, δημιουργεί έναν νέο πίνακα που αντιστοιχίζει τους δύο πίνακες μαζί. Μπορείτε να βάλετε το πεδίο πολλών προς πολλά σε οποιοδήποτε από τα δύο μοντέλα, αλλά δεν θα πρέπει να είναι και στα δύο μοντέλα.
τάξηΘέση(μοντέλα. Μοντέλο):
τίτλος = μοντέλα. CharField (max_length=120, μηδενικό=Αληθής)
ανάρτηση = μοντέλα. Πεδίο κειμένου()
ημερομηνία = μοντέλα. DateTimeField (auto_now_add=Αληθής)
χρήστης = μοντέλα. ForeignKey (Προφίλ, on_delete=μοντέλα. CASCADE, related_name='ταχυδρομικός ιδιοκτήτης')
κουκούλα = μοντέλα. ForeignKey (NeighbourHood, on_delete=models. CASCADE, related_name='hood_post')
επιχείρηση = μοντέλα. ManyToManyField (Επιχείρηση)
def__str__(εαυτός):
ΕΠΙΣΤΡΟΦΗ φά'{εαυτός.title} ανάρτηση'
Τώρα, όταν βλέπετε το Θέση μοντέλο στον πίνακα διαχείρισης, μπορείτε να επισυνάψετε πολλές επιχειρήσεις σε μία ανάρτηση.
Το Django απλοποιεί τις σχέσεις βάσεων δεδομένων
Ο τύπος της βάσης δεδομένων που χρησιμοποιείτε για την εφαρμογή σας καθορίζει τον τρόπο αξιοποίησης των δεδομένων. Το Django διαθέτει ένα ολοκληρωμένο σύστημα που διευκολύνει τη σύνδεση και τη λειτουργία σχεσιακών βάσεων δεδομένων.
Οι δυνατότητες του Django διευκολύνουν την αποθήκευση και την ανάκτηση δεδομένων από σχετικούς πίνακες. Διαθέτει ενσωματωμένα API που συνδέουν και δημιουργούν σχέσεις βάσης δεδομένων για την εφαρμογή σας.
Οι σχέσεις βάσεων δεδομένων καθορίζουν τη συμπεριφορά της εφαρμογής σας. Το αν χρησιμοποιείτε σχέσεις ένας προς έναν, ένας προς πολλούς ή πολλοί προς πολλούς εξαρτάται από εσάς.
Με το Django, μπορείτε να διαμορφώσετε και να δοκιμάσετε λειτουργίες χωρίς να χαλάσετε την εφαρμογή σας. Χρησιμοποιήστε το Django για να ασφαλίσετε συστήματα βάσεων δεδομένων και να βελτιστοποιήσετε την εμπειρία προγραμματιστή σας.