Önceki modüllerde veritabanları kavramını tanıttık, depoladıkları veri türlerini tartıştık ve verileri almak için REST API istekleri gönderme alıştırması yaptık. Aynı zamanda süreçte dışarıdan bir katılımcı olarak kaldık ve sadece çeşitli kaynaklardan bilgi istedik.

Veritabanınızı oluşturma zamanı! Bu modülde tam da bunu yapacağız, verinin veritabanında nasıl saklandığını ve bunların nasıl birbirine bağlanabileceğini anlayacağız. Ama her şeyden önce, teori ile başlayalım. Verilerin bize geldiği form ve veri yapısına göre veritabanlarının hangi kategorilere ayrıldığı ile ilgilenelim.

Veri Temelleri

Temsili veri

REST API'de veri gösteriminde mutlak lider JSON formatıdır. Önceki modüllerdeki tüm örneklerde bu formatta veri aldık. REST'in bizim için format seçimine kısıtlama getirmediğini hatırlamakta fayda var, gelecekte kesinlikle başkalarıyla tanışacaksınız (örneğin, XML). Aynı zamanda, hafifliği ve insan tarafından kolay okunabilirliği nedeniyle geliştiriciler genellikle JSON'u tercih eder.

JSON (JavaScript Object Notation) , JavaScript'e dayalı metin tabanlı bir veri değişim biçimidir. Ve başlıktaki JavaScript'in sizi aldatmasına izin vermeyin. JSON formatı, bu programlama dilinden kaynaklanmış olmasına rağmen, ondan tamamen bağımsızdır ve her yerde kullanılabilir.

Bir JSON nesnesinin nelerden oluştuğunu ve nasıl yazıldığını görelim.

Aldığınız tüm veriler kaşlı ayraçlar "{}" içine alındı. Her zaman JSON nesnesinin başına ve sonuna yerleştirilirler.

Nesnenin kendisi, “Anahtar: Değer” çiftleri olan ve birbirinden virgül “” ile ayrılan bir dizi kayıttan oluşur.

Anahtar, "" tırnak işaretleri içine alınmış girişin adıdır. Örnekler: “ad”, “değer”, “bölge”, “adres”. Herhangi bir kelime olabilir, geliştirirken ana şey bu anlamın açık olduğundan emin olmaktır.

Değerler çeşitli tiplerde olabilir. Hepsini düşünelim.

  1. Dize . Unicode standardında bir dizi karakter olan metin bilgilerini içerir. Dizeler "" tırnak içine alınır.
  2. Sayı . Tamsayı veya kayan nokta olabilir. Olduğu gibi yazılmıştır, tırnak içine alınması gerekli değildir.
  3. Boole . İki değerden biri. Ya doğru ya yanlış. Sayı gibi, tırnak işaretleri olmadan yazılır.
  4. dizi . Sıralı bir öğe kümesi. Her eleman herhangi bir tipte olabilir. Bir dizi köşeli parantez “[]” içine alınır ve öğeleri virgülle ayrılır.
  5. nesne . JSON değeri, başka bir JSON nesnesi olabilir. Kök nesneyle aynı kurallar ona da uygulanır. Ayrıca küme parantezleri içine alınır ve kendi kayıt kümesini içerir.

İlk modüllerde aldığınız verilere bu bilgiyi göz önünde bulundurarak bakın. JSON bileşenlerini seçin, alınan değerlerin hangi türe ait olduğunu belirleyin.

Veri depolama

JSON ile ilgilendik. Şimdi ana şeye geçiyoruz - veritabanları. Veriler bunlarda çeşitli şekillerde saklanabilir. Aynı zamanda, ilişkisel veritabanı modeli en büyük dağılımı alacak şekilde tarihsel olarak gelişmiştir.

İlişkisel modeli kullanırken, veriler, yapısı veritabanı tasarım aşamasında katı bir şekilde belirtilen belirli bir veri kümesiyle tablolar şeklinde depolanır. İlişkisel veritabanlarında bir veri yapısının açıklamasına şema denir. Tabloların bileşimini, bu tablolardaki alanların yapısını ve aralarındaki ilişkileri tanımlar.

DBMS, verileri ilişkisel bir modelle yönetmek için SQL dilini kullanır.

SQL - Yapılandırılmış Sorgu Dili . Bu bildirimsel bir dildir, bu, komutlarının yalnızca gerekli eylemi (veri bul, sil, değiştir) tanımladığı ve her VTYS'nin nasıl gerçekleştirileceğine kendisi karar verdiği anlamına gelir.

Birçok farklı ilişkisel DBMS vardır. En yaygın olanları arasında Oracle, MySQL, MS SQL, PostgreSQL vardır. Bu arada, AppMaster PostgreSQL kullanıyor, yani çok sayıda farklı kuruluşta çalışan ve aynı zamanda ücretsiz bir yazılım olan modern bir gelişmiş DBMS kullanıyor (yani, kullanmak için fazladan para ödemenize gerek yok).

Hemen hemen her DBMS adında SQL kısaltmasının varlığını fark ettiniz mi? Aslında, ilişkisel bir veritabanı için alternatif bir isim bir SQL veritabanıdır.

Ancak, alternatif bir yaklaşım var. İlişkisel olmayan veritabanları veya NoSQL. Bu durumda Hayır'ın “hayır”ın inkarı değil, sadece değil için bir kısaltma olduğunu belirtmekte fayda var. Yani, “Yalnızca SQL değil”.

İlişkisel olmayan VTYS'ler ortak bir sorgu formatı (SQL gibi) kullanmaz, her biri verilerle kendi çalışma yöntemini uygular.

Benzersiz olarak tanımlanmış bir veri depolama yapısı gerektirmezler. Verilerin kendisi, katı tablolar biçiminde değil, isteğe bağlı nitelikler kümesine sahip nesneler biçiminde (JSON gibi) saklanır. Bu, yapısı sık sık değişikliğe tabi olan verilerle çalışırken alakalı olabilir.

Aynı zamanda, ücretsiz yapısı sayesinde, birden fazla sunucuya dağıtılmış bir veritabanı oluşturmanız gerekiyorsa, NoSQL çözümlerinin ölçeklendirilmesi daha kolaydır.

NoSQL DBMS örnekleri arasında MongoDB ve Redis bulunur.

Veri tabanı tasarımı

Kendi veritabanınızı tasarlamanın zamanı geldi. Bunu yapmak için sol paneldeki Veri Tasarımı (Veri Tasarımcısı) sekmesine gidin.

Veritabanındaki veriler özel tablolar (modeller) şeklinde saklanır. Ve zaten bir modelimiz olduğunu fark edebilirsiniz. Yetkilendirme modülünün bir parçasıdır ve varsayılan olarak her projeye dahildir. Bu sayede uygulamanın yeni kullanıcıları oluşturulur ve mevcut kullanıcılar yönetilir. Ama şimdi onun çalışması üzerinde durmayacağız, kendi modelimizi yaratacağız.

Bir harita servisi geliştirdiğimizi hayal edin. Ülkeler hakkında bilgi içeren bir model oluşturalım. Oluşturmak için tuvalin boş bir alanına sağ tıklayıp Boş model oluştur'u seçmeniz gerekir.

Oluşturmak için sadece modelin adını belirtmemiz gerekiyor. Kursun diğer modüllerinde otomatik olarak uç noktaların oluşturulması ve kullanıcı arayüzü öğeleri ile ilgileneceğiz.

Lütfen oluşturulduktan hemen sonra modelin 4 alan içerdiğini unutmayın. Bunlar, varlığı modelin ilk oluşturulmasını ve daha fazla kullanılmasını büyük ölçüde basitleştiren sistem alanlarıdır.

  1. Kimlik (tamsayı) - Benzersiz tanımlayıcı, birincil anahtar. Tablodaki her yeni giriş için otomatik olarak oluşturulur ve yinelenenlerin olmamasını sağlamaya yöneliktir. Bir tablodaki bir kaydı benzersiz bir şekilde tanımlayabilmeniz kimliğine göredir. Değeri 1'den başlar ve her yeni giriş için otomatik olarak 1 artar.
  2. CreatedAt (datetime) - Kaydın tabloda oluşturulduğu saat.
  3. UpdateAt (datetime) - Girişin en son değiştirildiği saat.
  4. DeletedAt (datetime) - Girişin silindiği saat. Tabii ki, yalnızca yumuşak kaldırma kullanılmışsa. Yani, böyle bir silme, kayıt yalnızca silinmiş olarak işaretlendiğinde ve ona erişim talepleri tarafından filtrelendiğinde, ancak aynı zamanda fiziksel olarak tabloda kalır. Bu, verileri tamamen silen toplu silme işleminden farklıdır.

Sistem alanlarına ek olarak, oluşturulan modele özel alanlar eklemek akıllıca olacaktır. Ülkenin adını ve bununla ilgili bilgiler içeren bazı açıklamaları görmek istediğimizi varsayalım.

Bir alan türü seçmek sorun olmamalıdır. Ad için Dize ve bilgi açıklaması için Metin uygundur.


Ek olarak, dört anahtar daha mevcuttur:

  1. Çoklu değerler (Dizi) - tek girişler yerine dizileri kullanın.
  2. Null değil - belirtilen alan boş olamaz, her zaman veri içermelidir.
  3. Benzersiz - alanın değeri benzersiz olmalıdır, bu modelde bu alanın değerleri aynı olan iki kayıt olamaz.
  4. Dizin - aramayı hızlandırmak için bu alan için özel bir dizin oluşturulacağını belirtir.

Genel olarak, yalnızca gerçekten gerekliyse işaretleri işaretlemek doğrudur. Örneğin, isimsiz bir ülke veya aynı ada sahip iki ülke olamayacağını varsayarak ülke adları için Null değil ve Benzersiz olarak işaretleyebiliriz. Ancak, uygulamanın mantığını oluşturma aşamasında bunu kontrol etmek ve veritabanının kendisine kısıtlamalar getirmemek iyi bir fikirdir.

Benzer şekilde, şehirler hakkında bilgi içeren bir tablo oluşturun. Hangi veri alanlarını içerebileceğini, bu alanların ne tür olduğunu düşünün.

Veritabanındaki veriler, dağınık tablolar şeklinde kendi başına mevcut değildir. Birbirleriyle belirli bir şekilde ilişkilidirler. Bir veri modeli geliştirmenin anahtarı, bu ilişkileri tanımlamak ve ilişkiler kurmaktır.

Bu tür bağlantıları kurmak için, bir modelin sınırından diğerine fare ile bir çizgi çizmek gerekir. Örneğimizde, her şehrin bir ülkede bulunduğunu kesin olarak biliyoruz, böylece ülkeden şehre bir bağlantı oluşturabiliriz.


3 farklı bağlantı türü vardır:

  1. Bire bir (bir tane var) . Tablodaki her kayıt, ilişkili tablodan bir kayıtla eşleştirilir (bu, tersi için de geçerlidir). Basit bir örnek, bir kişi ve pasaportudur. Bu bağlantının benzersiz olduğundan her zaman emin olabiliriz. Bir pasaportun yalnızca bir sahibi olabilir ve her kişinin yalnızca bir geçerli pasaportu olabilir.
  2. Birden çoğa (birden çok) . Bir tablodaki her kaydın başka bir tabloda birçok kaydı olabilir. Veritabanımız benzer bir örnektir. Bir ülkenin birçok farklı şehri olabilir, ancak her şehir sadece bir ülkeye ait olabilir. Yapacağımız bağlantı bu.
  3. Çoktan çoğa . Bir tablodaki birden çok kaydın diğerinden birden çok kayda karşılık gelebildiği bir ilişki. Basit bir örnek, öğretmenler ve öğrenciler arasındaki ilişkidir. Her öğretmen birçok öğrenciye öğretebilir, tıpkı her öğrencinin birçok farklı öğretmenden öğrenebileceği gibi.

Ev ödevi

Bir çevrimiçi mağaza için bir uygulama geliştirmeniz gerektiğini düşünün. Çalışması için bir veritabanı modeli oluşturun.

  • Tanım kartları, çeşitli mal kategorileri, siparişler ve müşteriler hakkında bilgi içeren malların mevcudiyetini sağlamak gerekir.
  • Tabloları çeşitli türlerde alanlarla doldurun (en az 5 tür kullanın).
  • Tablolar arasında ilişkiler kurun. 3 bağlantı türünün tümünü kullanın.