Bir veritabanı şema diyagramı, bir backend ekibinin sahip olabileceği en faydalı dokümanlardan biri ve ilk eskiyenlerden biridir. Biri onu lansmandan önce çizer, wiki'de onur köşesine yerleşir ve yirmi migration sonra artık var olmayan bir veritabanını anlatır.
Diğer başarısızlık biçimi daha kötüdür: diyagram teknik olarak güncel kalır ama spagettiye döner. Yabancı anahtar çizgileri dördüncü bir tabloya ulaşmak için üç tablonun içinden dümdüz geçer, kardinalite gösterilmek yerine tahmin edilir ve kimse bir kullanıcının çok sayıda mı yoksa tam olarak bir mi siparişi olduğunu bir bakışta söyleyemez. LetDraw şema diyagramlarını hem okunur hem doğru tutmak için tasarlandı; böylece saklamaya değerler.
Tablo olduğunu bilen tablolar
LetDraw'da bir ER tablosu, içine metin yazılmış bir kutu değildir. Tipli sütunları ve anahtar işaretleri olan gerçek bir tablo öğesidir; böylece yapı şeklin bir parçasıdır, elle senkron tutman gereken bir çizim değil.
- Tipli sütunlar. Her satır bir ad ve bir tip taşır; böylece
id bigintbir etiket gibi değil, şema gibi okunur. - Anahtar işaretleri. Birincil ve yabancı anahtarlar sütun üzerinde işaretlenir; böylece okur join yüzeyini aramadan görebilir.
- Yerinde düzenlenebilir. Bir sütun ekle, bir tipi değiştir ya da bir alanı yeniden adlandır; yerleşim ayak uydurur. Dikdörtgen itmiyorsun, bir modeli düzenliyorsun.
Sütunlar yapılandırılmış olduğu için tablolar arasındaki ilişkiler süs olarak değil, doğru şekilde çizilebilir. Kardinalite burada devreye girer.
Crow's foot notasyonu, yerleşik olarak çizilir
İki tablo arasındaki bir ilişki ancak sana verinin şeklini söylüyorsa faydalıdır. Bir kullanıcıya çok sipariş, bir kullanıcıya tek siparişten bambaşka bir dünyadır ve ikisini bulanıklaştıran bir diyagram hiç diyagram olmamasından kötüdür. LetDraw crow's-foot notasyonunu ilişki çizgisi üzerinde yerleşik olarak çizer; böylece bire çok, bire bir ve çoka çok doğrudan bağlantıdan okunur.
Bir ilişki çizgisi sana yalnızca iki tablonun temas ettiğini değil, verinin şeklini söylemeli.
Tablolar yerine kodu modellerken aynı bağlantı motoru, kalıtım için içi boş ok uçları ve diğer standart uçlarla düzgün UML sınıf diyagramları çizer. Elle bir üçgen çizip doğru yere denk gelmesini ummak zorunda değilsin; notasyon yerleşik olduğu için bir kalıtım oku, UML okuyan herkese kalıtım gibi görünür.
Tablolarının etrafından dolaşan yabancı anahtar ilişkileri
Bir şema diyagramının on tablodan sonra hayatta kalıp kalmayacağına karar veren ayrıntı şu. Şema büyüdükçe naif yaklaşım bir anahtardan diğerine düz bir çizgi çeker ve bu çizgiler kısa sürede yoldaki her tablonun içinden geçer. Resim bir düğüme dönüşür.
LetDraw yabancı anahtar bağlantılarında akıllı yönlendirme kullanır; böylece bir ilişki çizgisi tablolarını engel olarak görür ve etraflarından kıvrılır. orders.user_id ile users.id arasındaki join, aralarında bir düzine tablo olsa bile görünür kalır. Şeman büyüdükçe diyagram yoğunlaşır ama okunmaz hale gelmez; onu çizmenin bütün amacı da bu.
SQL'den ER diyagramı: zaten yazdığın SQL'i kullan
Tek bir tabloyu bile elle yerleştirmek zorunda değilsin. Koddan Oluştur penceresini aç, CREATE TABLE ifadelerini yapıştır ve LetDraw ER diyagramını senin için kursun: tipli sütunlu tablolar, işaretli anahtarlar ve yabancı anahtarlardan çizilen ilişkiler. Yukarıdaki şeklin arkasındaki DDL şu.
CREATE TABLE users ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, email text NOT NULL UNIQUE, created_at timestamptz NOT NULL DEFAULT now() ); CREATE TABLE orders ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, user_id bigint NOT NULL REFERENCES users (id), total_cents integer NOT NULL, status text NOT NULL DEFAULT 'pending' ); -- user_id REFERENCES users(id) becomes the crow's-foot relationship
O REFERENCES ifadesi, LetDraw'un bire çok çizgisini yerleştirmek için okuduğu şeydir; crow's foot da orders tarafına düşer. Oradan sonrası normal bir çizim; iyileştirir ve yayınlarsın:
- Tabloları yeniden düzenle, bir bounded context'e ait olanları grupla ve zorlu join'lere açıklama ekle
- DDL'de henüz olmayan tabloları ekle ve ilişkilerini aynı crow's-foot uçlarıyla elle çiz
- Bir tasarım dokümanı için PNG, SVG ya da PDF olarak dışa aktar veya yeniden kod olarak istediğinde diyagramı Mermaid ya da D2'ye geri çevir
Okunur bir veritabanı şema tasarımı neden emeğe değer
Bir şema diyagramı, verinin nasıl bir araya geldiğine dair bir sözleşmedir ve ancak insanlar ona güvenirse karşılığını verir. Tipli sütunlar ve işaretli anahtarlar onu kesin kılar; crow's-foot kardinalitesi verinin şekli konusunda dürüst kılar; akıllı yönlendirme büyüdükçe okunur tutar. İlk taslağı zaten bakımını yaptığın SQL'den oluştur; onu güncel tutmanın maliyeti neredeyse sıfıra iner ve böyle bir diyagramın yaşamaya devam etmesinin tek yolu da budur.
CREATE TABLE ifadelerini yapıştır ve ER diyagramının anahtarlarıyla birlikte kendini kuruşunu izle.