λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> λογισμικού βάσεων δεδομένων

Πώς επικυρώνετε και ανακτάτε δεδομένα από τη βάση δεδομένων;

Η επικύρωση και η ανάκτηση δεδομένων από μια βάση δεδομένων περιλαμβάνει διάφορα βήματα και εκτιμήσεις, ανάλογα με το συγκεκριμένο σύστημα βάσεων δεδομένων (π.χ. MySQL, PostgreSQL, MongoDB), τη γλώσσα προγραμματισμού και τις απαιτήσεις εφαρμογής. Ακολουθεί μια ανάλυση της διαδικασίας:

i. Ανάκτηση δεδομένων:

Αυτό περιλαμβάνει την ερώτηση της βάσης δεδομένων για τη λήψη των επιθυμητών δεδομένων. Η κύρια μέθοδος είναι η χρήση δομημένης γλώσσας ερωτήματος (SQL) για σχεσιακές βάσεις δεδομένων. Οι βάσεις δεδομένων NoSQL χρησιμοποιούν τις δικές τους γλώσσες ερωτήματος (π.χ. MongoDB χρησιμοποιεί μια γλώσσα ερωτήματος που μοιάζει με JSON).

* Παραδείγματα SQL (χρησιμοποιώντας έναν υποθετικό πίνακα "χρηστών" με στήλες `id ',` name`, `e -mail',` age '):

* Επιλέγοντας όλες τις στήλες από όλες τις σειρές:

`` sql

Επιλέξτε * από τους χρήστες.

`` `

* Επιλογή συγκεκριμένων στηλών:

`` sql

Επιλέξτε αναγνωριστικό, όνομα, email από χρήστες.

`` `

* Δεδομένα φιλτραρίσματος με το Where Clause:

`` sql

Επιλέξτε * από χρήστες όπου ηλικία> 25;

`` `

* Παραγγελία δεδομένων με παραγγελία με ρήτρα:

`` sql

Επιλέξτε * από την παραγγελία χρηστών με όνομα ASC; - ASC για ανερχόμενη, DESC για φθίνουσα

`` `

* Περιορισμός του αριθμού των σειρών με οριακή ρήτρα:

`` sql

Επιλέξτε * από το όριο των χρηστών 10;

`` `

* Παράδειγμα NOSQL (MongoDB): Η σύνταξη διαφέρει σημαντικά. Θα χρησιμοποιούσατε μεθόδους όπως `Find ()` για να ανακτήσετε έγγραφα.

`` `javascript

// Υποθέτοντας μια συλλογή που ονομάζεται «χρήστες» με έγγραφα που περιέχουν «όνομα», «email» και «ηλικία»

db.users.find ({age:{$ gt:25}}). toArray () // βρίσκει χρήστες ηλικίας άνω των 25

`` `

ii. Επικύρωση δεδομένων:

Αυτό το κρίσιμο βήμα εξασφαλίζει ότι τα δεδομένα που ανακτώνται είναι ακριβή, πλήρη και συμμορφώνεται με τις αναμενόμενες μορφές. Η επικύρωση μπορεί να συμβεί σε πολλαπλά στρώματα:

* Επικύρωση βάσης δεδομένων: Αυτό συνεπάγεται τη χρήση περιορισμών βάσης δεδομένων (π.χ., «όχι null», «μοναδικό», `check`,` ξένοι κλειδί 'περιορισμούς στο SQL) για την επιβολή της ακεραιότητας των δεδομένων απευθείας στη βάση δεδομένων. Αυτό εμποδίζει την είσοδο στα μη έγκυρα δεδομένα στη βάση δεδομένων.

* Επικύρωση επιπέδου εφαρμογής: Αυτό είναι κρίσιμο, διότι οι περιορισμοί της βάσης δεδομένων μόνο μπορεί να μην επαρκούν. Η αίτησή σας θα πρέπει να εκτελέσει ελέγχους στα ανακτημένα δεδομένα πριν τα χρησιμοποιήσετε. Αυτό συνήθως περιλαμβάνει:

* Τύπος δεδομένων επικύρωση: Βεβαιωθείτε ότι τα δεδομένα είναι του αναμενόμενου τύπου (π.χ. ακέραιος, συμβολοσειρά, ημερομηνία).

* Επικύρωση μορφής: Ελέγξτε εάν οι χορδές συμμορφώνονται με συγκεκριμένα πρότυπα (π.χ. διεύθυνση ηλεκτρονικού ταχυδρομείου, αριθμός τηλεφώνου χρησιμοποιώντας κανονικές εκφράσεις).

* Επικύρωση εύρους: Βεβαιωθείτε ότι οι αριθμητικές τιμές εμπίπτουν σε αποδεκτές περιοχές.

* Επικύρωση μήκους: Βεβαιωθείτε ότι οι χορδές δεν είναι πολύ μεγάλες ή πολύ μικρές.

* Null Checks: Χειριστείτε περιπτώσεις όπου τα πεδία ενδέχεται να λείπουν δεδομένα (τιμές `null`).

* Επικύρωση επιχειρηματικού κανόνα: Εφαρμογή κανόνων για συγκεκριμένες εφαρμογές, όπως η εξασφάλιση της ηλικίας ενός χρήστη είναι πάνω από ένα συγκεκριμένο όριο.

iii. Συνδυάζοντας την ανάκτηση και την επικύρωση (παράδειγμα με την Python και μια σχεσιακή βάση δεδομένων χρησιμοποιώντας μια βιβλιοθήκη όπως το `psycopg2` για το postgresql):

`` `Python

Εισαγωγή psycopg2

εισαγωγή

def get_and_validate_users (conn, age_threshold):

COR =CONN.Cursor ()

Cur.Execute ("Επιλέξτε ID, όνομα, email, ηλικία από χρήστες όπου ηλικία> %s", (age_threshold,)))

χρήστες =cur.fetchall ()

επικυρωμένο_USERS =[]

Για χρήστες σε χρήστες:

user_id, όνομα, email, ηλικία =χρήστης

#Νομιμοποίηση

Αν όχι το ISInstance (ηλικία, int):

εκτύπωση (F "Μη έγκυρη ηλικία για χρήστη {όνομα}:{Age}")

Συνεχίστε το #skip στον επόμενο χρήστη

αν όχι re.match (r "[^@]+@[^@]+\. [^@]+", Email):

εκτύπωση (F "Μη έγκυρη μορφή email για χρήστη {όνομα}:{Email}")

συνεχίζω

Εάν ο Len (όνομα) <2:

εκτύπωση (f "Όνομα πολύ σύντομο για το χρήστη {όνομα}")

συνεχίζω

Vaidated_users.append ({"id":user_id, "Όνομα":Όνομα, "Email":Email, "Age":Age})

cur.close ()

Επιστροφή επικυρωμένων_USERS

... Λεπτομέρειες σύνδεσης βάσης δεδομένων ...

conn =psycopg2.connect ("dbname =myDatabase user =myuser password =myPassword")

Vaidated_users =get_and_validate_users (Conn, 25)

εκτύπωση (επικυρωμένη_users)

conn.close ()

`` `

Θυμηθείτε να χειριστείτε πιθανά σφάλματα (π.χ. σφάλματα σύνδεσης βάσης δεδομένων, σφάλματα ερωτήματος) με χαρά χρησιμοποιώντας "δοκιμάστε ... εκτός από τα μπλοκ στον κωδικό σας. Η συγκεκριμένη εφαρμογή θα εξαρτηθεί σε μεγάλο βαθμό από το επιλεγμένο σύστημα βάσης δεδομένων, τη γλώσσα προγραμματισμού και τις ανάγκες της εφαρμογής. Πάντα να απολυμαίνετε τις εισόδους των χρηστών για την πρόληψη των ευπάθειας της SQL έγχυσης κατά την κατασκευή ερωτημάτων SQL. Η χρήση παραμετροποιημένων ερωτημάτων (όπως φαίνεται στο παράδειγμα) είναι μια κρίσιμη βέλτιστη πρακτική ασφάλειας.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα