Rehberler

Veritabanı Nedir? Uygulama Geliştiricileri İçin Rehber

Veritabanı, bir uygulamanın kaydettiği ve okuduğu düzenli bir bilgi deposudur — kullanıcıları, siparişleri, randevuları, mesajları. Yalnızca bir tarayıcı sekmesinde tutulan bilgilerin aksine, veritabanındaki veriler yenileme ya da yeniden başlatmadan sonra da durur ve uygulamayı kullanan herkes aynı kayıtları görür. Çoğu veritabanı, veriyi bir elektronik tablonun sayfalarına benzer tablolarda düzenler; ama verinin tutarlı kalmasını sağlayan sıkı kurallarla.

Yapay zekâyla geliştirirken neden önemli?

Yapay zekâyla çalışanların en sık karşılaştığı sürpriz, bitmiş gibi görünen ama her şeyi unutan bir uygulamadır. Bir müşteri eklersiniz, sayfayı yenilersiniz ve kayıt yoktur. Bu genellikle uygulamanın verileri veritabanında değil, tarayıcının belleğinde tuttuğu anlamına gelir.

Veritabanı, farkına varmasanız bile en önemli kararlarınızın bulunduğu yerdir:

  • Neyi kaydettiğiniz. Bir randevunun durumunu saklamazsanız, hangi randevuların iptal edildiğini gösteremezsiniz.
  • Şeylerin nasıl bağlandığı. Bir müşterinin birden fazla randevusu olabilir mi, bir randevunun birden fazla hizmeti olabilir mi; bu tüm uygulamanın şeklini belirler.
  • Kimin neyi görebildiği. Çoğu gizlilik hatası, bir kullanıcının hangi kayıtları okuyabildiğiyle ilgilidir.

Veritabanını kendiniz tasarlamanız gerekmez. Ama temellerini anlamak, verinizi net biçimde tarif etmenizi ve sorunları erken yakalamanızı sağlar.

Günlük bir benzetme

Küçük bir ofiste iyi düzenlenmiş bir dosya dolabını düşünün.

Her çekmece tek bir tür şeyi tutar: bir çekmece müşteriler, bir çekmece randevular, bir çekmece faturalar içindir. Her çekmecenin içindeki her klasör aynı biçimi izler ve aynı alanlar doldurulur. Her klasörün benzersiz bir referans numarası vardır ve bir fatura bir müşteriye aitse, fatura klasörü müşterinin tüm dosyasını fotokopiyle çoğaltmak yerine o müşterinin numarasını not eder.

İlişkisel bir veritabanı budur. Çekmeceler tablolardır, klasörler satırlardır, alanlar sütunlardır, referans numaraları birincil anahtarlardır ve başka bir klasöre işaret eden notlar yabancı anahtarlardır. İyi bir ofis yöneticisi ayrıca kurallar uygular — tarihsiz randevu yok, aynı numaraya sahip iki müşteri yok — tıpkı bir veritabanının yaptığı gibi.

Çalışılmış bir örnek: bir kuaför randevu uygulaması

Yapay zekâdan bir kuaför için randevu sitesi yapmasını istediğinizi varsayalım. Makul bir veritabanı dört tablo içerir.

services (hizmetler)

idnameduration_minutesprice
1Saç kesimi4540,00
2Boyama9095,00

staff (personel)

idnameemail
1Sarasara@example.com
2Omaromar@example.com

customers (müşteriler)

idnameemailphone
101Lena Parklena@example.com555-0100

bookings (randevular)

idcustomer_idservice_idstaff_idstarts_atstatus
5001101122026-10-03 14:00onaylandı

bookings tablosuna bakın. Lena'nın adını ve telefon numarasını her randevuya kopyalamaz; customer_id = 101 saklar. Lena telefon numarasını değiştirirse, değişiklik tek bir yerde yapılır ve her randevu yeni numarayı gösterir. İlişkisel bir veritabanının temel fikri budur: her bilgiyi bir kez saklayın ve ona bağlanın.

Aynı yapı yararlı soruları yanıtlar:

  • “Omar'ın cuma günü boş saatleri hangileri?” — o günkü Omar'ın randevularına bakın.
  • “Bu ay boyama randevuları ne kadar kazandırdı?” — randevuları hizmetlerle birleştirin ve fiyatları toplayın.
  • “Son 90 gündür randevu almayan müşteriler kimler?” — müşterileri en son randevularıyla karşılaştırın.

Yaygın terimler

TerimAnlamı
TabloBir tür kaydın koleksiyonu, örneğin müşteriler ya da randevular.
Satır (kayıt)Bir tablodaki tek bir öğe — bir müşteri, bir randevu.
Sütun (alan)Her satırın sahip olduğu tek bir bilgi parçası, örneğin e-posta ya da fiyat.
Birincil anahtarHer satır için benzersiz bir kimlik; genellikle bir sayı ya da rastgele bir dizgi.
Yabancı anahtarBaşka bir tablodaki bir satıra işaret eden sütun; örneğin randevulardaki customer_id.
ŞemaGenel tasarım: hangi tabloların var olduğu, sütunları ve nasıl bağlandıkları.
SorguVeriyi okumak ya da değiştirmek için yapılan bir istek, örneğin “yarının tüm randevuları”.
SQLYapılandırılmış Sorgu Dili; ilişkisel veritabanlarını sorgulamak için standart dil.
Geçiş (migration)Şemada, örneğin bir sütun eklemek gibi, kaydedilmiş ve tekrarlanabilir bir değişiklik.
Dizin (index)Bir sütunda aramaları hızlandıran arama yapısı; kitabın dizini gibi.
CRUDOluşturma, Okuma, Güncelleme, Silme — uygulamaların veriyle yaptığı dört temel işlem.
Yedek (backup)Bir şey ters giderse geri yükleyebileceğiniz veri kopyası.

Veritabanı türleri

TürVeriyi nasıl saklarÖrneklerİyi olduğu alanlar
İlişkisel (SQL)Sabit sütunlu ve aralarında bağlantılı tablolarPostgres, MySQL, SQLiteÇoğu iş uygulaması: randevular, mağazalar, CRM'ler, SaaS
Belge (NoSQL)Esnek, JSON benzeri belgelerMongoDB, FirestoreŞekli kayıttan kayda çok değişen veriler
Anahtar-değerBir anahtarın altında saklanan bir değerRedisÖnbellekleme, oturumlar gibi kısa ömürlü veriler

Bir girişimcinin ya da küçük bir işletmenin ilk olarak yaptığı hemen her şey için ilişkisel bir veritabanı güvenli varsayılandır.

Veritabanı uygulamanızda nerede durur?

Ziyaretçiler veritabanıyla doğrudan konuşmaz. Tarayıcılarındaki sayfa (frontend), veri için sunucunuzdan (backend) — genellikle bir API üzerinden — ister. Sunucu kimin istediğini ve buna izni olup olmadığını kontrol eder, ardından veritabanını sorgular ve kişinin görmesi gerekeni geri gönderir.

Bu ara adım önemlidir. Tarayıcı veritabanını tam yetkiyle doğrudan sorgulayabilseydi, herkes geliştirici araçlarını açıp her şeyi okuyabilirdi.

Yaygın hatalar ve yanlış anlamalar

  • Verileri yalnızca tarayıcıda tutmak. Tarayıcı depolaması (localStorage gibi) tek bir cihazda ve tek bir tarayıcıda yaşar. Hatırlanan bir filtre için uygundur, siparişler için değil.
  • Her şeyi tek bir tabloya tıkıştırmak. Müşterinin adının, telefonunun ve hizmet fiyatının her satıra kopyalandığı tek bir “randevular” tablosu çabuk uyumsuzlaşır.
  • Parolaları düz metin olarak saklamak. Parolalar okunabilir biçimde değil, özetlenmiş (hash) olarak saklanmalıdır. Bkz. kimlik doğrulama nedir.
  • Veriye kuralsız yaklaşmak. Zorunlu alanlar ve benzersizlik kuralları olmadan tarihsiz randevular ve yinelenen müşteriler ortaya çıkar.
  • Silmeyi unutmak. Bir müşteriyi silmenin randevularını da silip silmeyeceğine, saklayacağına ya da engelleyeceğine karar verin.
  • Deneme yapmak için canlı veriyi kullanmak. Riskli değişiklikleri önce güvenli bir yerde test edin ve yedek tutun.
  • Elektronik tabloyu sonsuza dek veritabanı saymak. Elektronik tablolar başlamak için harikadır, ama çok sayıda eş zamanlı kullanıcı ve izinlerle zorlanırlar. Bkz. elektronik tabloyu uygulamaya nasıl çevirirsiniz.

Yapay zekâ oluşturucunuzdan ne istemelisiniz?

  • “Bunu tarayıcıda değil, bir veritabanında sakla. Hangi tabloları oluşturacağını söyle.”
  • “Şemayı basit bir tablo olarak göster: her tablo, sütunları ve nasıl bağlandıkları.”
  • “Bir müşterinin birden fazla randevusu olabilir; her randevunun tam olarak bir hizmeti ve bir personeli olur.”
  • “Müşterilerde e-posta zorunlu ve benzersiz olsun.”
  • “Aynı personel için iki randevunun çakışmasını engelle.”
  • “Yalnızca oturum açmış sahip tüm randevuları okuyabilsin; müşteriler yalnızca kendi randevularını görebilsin. Bunu sunucuda uygula.”
  • “Bir hizmeti sildiğimde geçmiş randevuları silme; bunun yerine hizmeti pasif olarak işaretle.”

Mythex'te veritabanları

Uygulamanızın veri kaydetmesi gerektiğinde Mythex projeye özel bir Postgres veritabanı ekler — sohbette (“bekleme listesi kayıtlarını bir veritabanına kaydet”) isteyebilir ya da /database komutunu kullanabilirsiniz. Bağlantı bilgileri uygulamanıza otomatik olarak iletilir ve ajan tabloları oluşturur. Veritabanı beş dakika boşta kaldıktan sonra uyur ve bir sonraki istekte uyanır; yayımlanmış kullanım, veritabanının uyanık kaldığı süre için, oluşturma sırasında olduğu gibi aynı kredi bakiyesinden ücretlendirilir. Free ve Pro planlarında mevcuttur. Ayrıntılar için veritabanı dokümantasyonuna bakın; uygulama şablonları veriye dayalı başlangıç noktaları içerir.

Sorular

Veritabanı basitçe nedir?

Veritabanı, bir uygulamanın kaydedip okuyabildiği, kullanıcılar, siparişler ya da randevular gibi bilgilerin düzenli bir deposudur. Yalnızca bir tarayıcı sekmesinde tutulan verilerin aksine, sayfa yenilendikten, sunucu yeniden başlatıldıktan veya uygulama başka bir cihazdan açıldıktan sonra da yerinde durur.

Bir elektronik tablo veritabanı mıdır?

Bir elektronik tablo aynı türden verileri tutabilir, ama uygulamalar için tasarlanmamıştır. Gerçek bir veritabanı, her sütunun ne tutacağına dair kuralları uygular, tabloları güvenilir biçimde birbirine bağlar, aynı anda çok kişinin yazmasını yönetir ve kimin neyi okuyabileceğini denetler.

SQL ve NoSQL veritabanları arasındaki fark nedir?

Postgres ve MySQL gibi SQL (ilişkisel) veritabanları, verileri tanımlı sütunlara ve aralarındaki ilişkilere sahip tablolarda saklar. MongoDB gibi NoSQL veritabanları daha esnek belgeler saklar. Çoğu iş uygulaması — randevular, CRM'ler, mağazalar — ilişkisel modele iyi uyar.

Uygulamamın bir veritabanına ihtiyacı var mı?

İnsanların girdiği her şeyi — kayıtlar, siparişler, mesajlar, ayarlar — hatırlaması ve bunları sonra ya da başka birine göstermesi gerekiyorsa, evet. Veri kaydeden formu olmayan, yalnızca bilgi veren bir web sitesinin genellikle ihtiyacı yoktur.

Mythex · Pricing · Yapay zekayla her şeyi yapın · Web sitesi ve uygulama şablonları · Mythex karşılaştırmaları · Yapay zekayla uygulama geliştirme sözlüğü · Yapay zekayla uygulama geliştirme için ücretsiz araçlar · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)