Φόρτωση περιεχομένου...
Φόρτωση περιεχομένου...
Μάθετε πώς να επιλέγετε μεταξύ κανονικοποίησης και στρατηγικού denormalization, γιατί το UUIDv7 υπερτερεί του UUIDv4 και πώς να προστατεύετε τα δεδομένα με constraints.
Η βάση δεδομένων είναι το θεμέλιο κάθε σοβαρής εφαρμογής. Ενώ τα ORMs και τα client libraries προσφέρουν ταχύτητα στην αρχή, ο κακός σχεδιασμός του σχήματος (schema design) αναπόφευκτα οδηγεί σε data corruption και καταστροφικά performance bottlenecks.
Σε αυτό το μάθημα θα εξετάσουμε τις βέλτιστες πρακτικές σχεδιασμού σχεσιακών σχημάτων στην PostgreSQL 16.
Παραδοσιακά, οι developers χρησιμοποιούσαν:
Το UUIDv7 συνδυάζει ένα Unix timestamp 48-bit στην αρχή με 74-bit κρυπτογραφικής τυχαιότητας. Αυτό σημαίνει ότι:
bigint!sql-- Δημιουργία πίνακα με UUIDv7 στην PostgreSQL create extension if not exists "pg_uuidv7"; create table organizations ( id uuid primary key default uuid_generate_v7(), slug text not null unique, name text not null, created_at timestamptz not null default now() );
Ποτέ μην βάζετε ασυλλόγιστα ON DELETE CASCADE σε κρίσιμους πίνακες:
sqlcreate table invoices ( id uuid primary key default uuid_generate_v7(), organization_id uuid not null references organizations(id) on delete restrict, amount_cents integer not null check (amount_cents >= 0), currency text not null default 'EUR' check (char_length(currency) = 3), created_at timestamptz not null default now() );
ON DELETE RESTRICT: Αποτρέπει τη διαγραφή ενός οργανισμού εάν υπάρχουν τιμολόγια, προστατεύοντας από τυχαία απώλεια οικονομικών δεδομένων.CHECK (amount_cents >= 0): Εγγυάται σε επίπεδο βάσης ότι καμία εφαρμογή δεν μπορεί να γράψει αρνητικά ποσά, ακόμα κι αν υπάρχει bug στο frontend/backend code!