Yerel SQL veritabanları hakkındaAdobe AIR 1.0 ve üstü SQL veritabanlarının kullanmakla ilgili hızlı açıklama ve kod örnekleri için aşağıda bulunan Adobe Geliştirici Bağlantısı'ndaki hızlı başlatma makalelerine bakın.
Adobe AIR, AIR uygulamasının çalıştığı bilgisayardaki veritabanı dosyalarında yerel olarak saklanan verileri içeren çalışma zamanında çalışan SQL tabanlı ilişkisel bir veritabanı motoru içerir (örneğin, bilgisayarın sabit sürücüsünde). Veritabanı yerel olarak çalıştığı ve veri dosyaları yerel olarak saklandığı için, bir veritabanı AIR uygulaması tarafından ağ bağlantısının kullanılabilir olup olmadığına bakılmaksızın kullanılabilir. Bu nedenle, çalışma zamanının yerel SQL veritabanı motoru, özellikle SQL ve ilişkisel veritabanlarlarına ilişkin deneyiminiz varsa, kalıcı, yerel uygulama verilerinin saklanması için uygun bir mekanizma sağlar. Yerel SQL veritabanları için kullanımlarAIR yerel SQL veritabanı işlevi, uygulama verilerini kullanıcının yerel bilgisayarında saklamak isteyebileceğiniz tüm amaçlar için kullanılabilir. Adobe AIR, verilerin yerel olarak saklanması için, her biri farklı avantajlara sahip çeşitli mekanizmalar içerir. AIR uygulamanızdaki yerel SQL veritabanı için bazı olası kullanımlar şunlardır:
AIR veritabanları ve veritabanı dosyaları hakkındaTek bir Adobe AIR yerel SQL veritabanı, bilgisayarın dosya sisteminde tek bir dosya olarak saklanır. Çalışma zamanı, veritabanı dosyalarının oluşturulup yapılandırılmasını, verilerin bir veritabanı dosyasından alınması ve değiştirilmesini yöneten bir SQL veritabanı motoru içerir. Çalışma zamanı, veritabanı verilerinin dosya sisteminin neresinde ve nasıl saklandığını belirtmez; bunun yerine, her veritabanının tamamı tek bir dosyada saklanır. Veritabanı dosyasının saklandığı dosya ssitemindeki konumu siz belirlersinz. Tek bir AIR uygulaması bir veya daha çok ayrı veritabanına erişebilir. (Bunlar, ayrı veritabanı dosyalarıdır.) Çalışma zamanı her veritabanını dosya sisteminde tek bir dosya olarak sakladığından, veritabanınızı uygulamanızın tasarımının ve işletim sistemi dosya erişim sınırlamalarının gerektirdiği şekilde konumlandırabilirsiniz. Her kullanıcı, özel verileri için ayrı bir veritabanı dosyasına sahiptir veya paylaşılan veriler için tek bir bilgisayardaki tüm uygulama kullanıcıları veritabanı dosyasına erişebilir. Veriler tek bir bilgisayar için yerel olduğundan, farklı bilgisayarlardaki kullanıcılar tarafından otomatik olarak paylaşılmaz. Yerel SQL veritabanı motoru, uzak veya sunucu tabanlı bir veritabanına karşı SQL ifadelerinin yürütülmesi için herhangi bir özellik sağlamaz. İlişkisel veritabanları hakkındaİlişkisel veritabanı, verilerin bir bilgisayarda saklanmasına (ve geri alınmasına) yönelik bir mekanizmadır. Veriler, tablolar halinde düzenlenir: satırlar kayıtları veya öğeleri temsil eder ve sütunlar (bazen “alanlar” da denir) her kaydı ayrı ayrı değerlere böler. Örneğin, adres defteri uygulaması bir “arkadaşlar” tablosu içerebilir. Tablodaki her satır, veritabanında saklanan tek bir arkadaşı temsil edecektir. Tablonun sütunları, ad, soyad, doğum tarihi vb. gibi verileri temsil eder. Veritabanı, tablodaki her arkadaş satırına ilişkin her sütun için ayrı bir değer saklar. İlişkisel veritabanları, bir öğenin başka türden öğelerle ilişkilendirilmiş veya başka türden öğelerle olduğu karmaşık verilerin saklanması için tasarlanmıştır. İlişkisel bir veritabanında, bire çok ilişkiye sahip —tek bir kaydın farklı türdeki birden çok kayıtla ilişkilendirilebildiği —veriler farklı tablolar halinde bölümlenmelidir. Örneğin, adres defteri uygulamanızın her arkadaş için birden çok telefon numarası saklamasını istediğinizi varsayın; bu, bire çok ilişkidir. “Arkadaşlar” tablosu, her arkadaş için tüm kişisel bilgileri içerecektir. Ayrı bir “telefon numaraları” tablosu, tüm arkadaşlara ilişkin tüm telefon numaralarını içerir. Arkadaşlara ve telefon numaralarına ilişkin verileri saklamanın yanı sıra, her tablo, iki tablo arasındaki ilişkiyi izlemek için—ayrı ayrı arkadaş kayıtlarını telefon numaralarıyla eşlemek için bir veri parçasına ihtiyaç duyacaktır. Bu veri, ana anahtar—tablodaki her satırı bu tablodaki diğer satırlardan ayırt eden benzersiz bir kimlik olarak bilinir. Ana anahtar, tablodaki her kaydı doğal olarak ayırt eden veri öğelerinden biri olduğu anlamına gelen “doğal anahtar” olabilir. Hiçbir arkadaşınızın aynı doğum tarihini paylaşmadığını biliyorsanız, “arkadaşlar” tablosunda doğum tarihi sütununu ana anahtar (doğal anahtar) olarak kullanabilirsiniz. Doğal anahtar yoksa, “arkadaş kimliği“ gibi, uygulamanın satırları ayırt etmek için kullanacağı yapay bir değer olan ayrı bir ana anahtar sütunu oluşturabilirsiniz. Ana anahtarı kullanarak birden çok tablo arasında ilişkiler kurabilirsiniz. Örneğin, “arkadaşlar” tablosunun her satır (her arkadaş) için benzersiz bir numara içeren bir “arkadaş kimliği” sütununa sahip olduğunu düşünün. İlgili “telefon numaraları” tablosu, iki sütunla yapılandırılabilir: telefon numarasının ait olduğu arkadaşın “arkadaş kimliği” bilgisini içeren sütun ve geçerli telefon numarasını içeren sütun. Bu şekilde, tek bir arkadaş kaç telefon numarasına sahip olursa olsun, bunların tümü “telefon numaraları tablosunda saklanabilir ve “arkadaş kimliği” ana anahtarı kullanılarak ilgili arkadaşa bağlanabilir. Bir tablodaki ana anahtar, ilgili bir tabloda kayıtlar arasındaki bağlantıyı belirtmek üzere kullanıldığında, ilgili tablodaki değer yabancı anahtar olarak bilinir. Birçok veritabanıın aksine, AIR yerel veritabanı motoru, eklenen veya güncellenen yabancı anahtara ana anahtar tablosunda karşılık gelen bir satırın bululup bulunmadığını otomatik olarak kontrol eden sınırlamalar olan yabancı anahtar sınırlamaları oluşturmanıza olanak vermez. Yine de, yabancı anahtar ilişkileri ilişkisel veritabanı yapısının önemli bir parçasıdır ve veritabanınızdaki tablolar arasında ilişki oluştururken yabancı anahtarlar kullanılmalıdır. SQL hakkındaYapılandırılmış Sorgu Dili (Structured Query Language - SQL) verileri değiştirmek ve getirmek için ilişkisel veritabanlarıyla kullanılır. SQL, yordam temelli bir dilden çok, tanımlayıcı bir dildir. Bir SQL ifadesi, verilerin nasıl getirileceğine ilişkin bilgisayar talimatları vermek yerine, istediğiniz veri kümesini açıklar. Veritabanı motoru, verilerin nasıl getirileceğini belirler. SQL dili, American National Standards Institute (ANSI) tarafından standartlaştırılmıştır. Adobe AIR yerel SQL veritabanı SQL-92 standardının büyük bölümünü destekler. Adobe AIR'de desteklenen SQL dilinin belirleyici açıklamaları için bkz. yerel veritabanlarında SQL desteği. SQL veritabanı sınıfları hakkındaActionScript 3.0'da yerel SQL veritabanlarıyla çalışmak için bu sınıfların flash.data paketindeki örneklerini kullanırsınız:
Veritabanı yapısını açıklayan şema bilgilerini elde etmek için flash.data paketindeki şu sınıfları kullanırsınız:
flash.data paketindeki diğer sınıflar, SQLConnection sınıfı ve SQLColumnSchema sınıfıyla kullanılan sabitleri sağlar:
Ayrıca, flash.events paketinde bulunan aşağıdaki sınıflar kullandığınız olayları (ve desteklenen sabitleri) temsil eder:
Son olarak, flash.errors paketinde yer alan aşağıdaki sınıflar, veritabanı işlem hataları hakkında bilgi sağlar:
Senkronize ve senkronize olmayan yürütme modları hakkındaYerel SQL veritabanıyla çalışmak üzere bir kod yazdığınızda, bu veritabanı işlem yürütmesini iki yürütme modundan birinde belirlersiniz: senkronize olmayan veya senkronize yürütme modu. Kod örnekleri genellikle ihtiyaçlarınıza en uygun olan örneği kullanabilmeniz için, her bir işlemin her iki yolla da nasıl gerçekleştirileceğini gösterir. Senkronize olmayan yürütme modunda, çalışma zamanına bir talimat verirsiniz ve istediğiniz işlem tamamlandığında veya başarısız olduğunda çalışma zamanı bir olay gönderir. Önce veritabanı motoruna bir işlem gerçekleştirmesini söylersiniz. Uygulama çalışmaya devam ederken, veritabanı motoru işini arka planda yapar. Son olarak, veritabanı motoru işlem tamamlandığında (veya başarısız olduğunda) bir olay gönderir. Olay tarafından tetiklenen kodunuz, sonraki işlemleri gerçekleştirir. Bu yaklaşımın önemli bir faydası vardır: ana uygulama kodu çalışmaya devam ederken, çalışma zamanı veritabanı işlemlerini arka planda gerçekleştirir. Veritabanı işlemi büyük ölçüde zaman alırsa, uygulama çalışmaya devam eder. En önemlisi, kullanıcı ekranı dondurmadan uygulamayla etkileşim kurmaya devam edebilir. Yine de, senkronize olmayan işlem kodunun yazılması diğer kodlara göre daha karmaşık olabilir. Bu karmaşıklık, genellikle çoklu bağımlı işlemlerin çeşitli olay dinleyici yöntemlerine bölümlenmesi gerektiği durumlarda mevcuttur. Kavramsal olarak, işlemleri birkaç olay dinleyici yöntemine bölünmüş bir işlem kümesi yerine, tek bir adım sırası—bir senkronize işlemler kümesi—olarak kodlamak daha kolaydır. Senkronize olmayan veritabanı işlemlerine ek olarak, Adobe AIR veritabanı işlemlerini senkronize olarak yürütmenize de olanak verir. Senkronize yürütme modunda, işlemler arka planda çalışmaz. Bunun yerine, diğer tüm uygulama kodları gibi aynı yürütme sırasında çalışır. Veritabanı motoruna bir işlem gerçekleştirmesini söylersiniz. Daha sonra, veritabanı motoru işini yaparken, kod bu noktada duraklar. İşlem tamamlandığında, yürütme sonraki kod satırıyla devam eder. İşlemlerin senkronize olmayan veya senkronize biçimde yürütüleceği, SQLConnection düzeyinde ayarlanır. Tek bir veritabanı bağlantısı kullanarak bazı işlemler ve ifadeleri senkronize, diğerlerini senkronize olmayan biçimde yürütemezsiniz. Veritabanını açmak için SQLConnection yöntemini çağırarak, SQLConnection öğesinin senkronize veya senkronize olmayan yürütme modunda çalışacağını belirlersiniz. SQLConnection.open() yöntemini çağırırsanız, bağlantı senkronize yürütme modunda, SQLConnection.openAsync() yöntemini çağırırsanız senkronize olmayan yürütme modunda çalışır. SQLConnection örneği, open() veya openAsync() kullanılarak bir veritabanına bağlandığında, veritabanı bağlantısını kapatıp açmadığınız sürece, senkronize veya senkronize olmayan yürütme moduna sabitlenir. Her yürütme modunun kendi faydaları vardır. Modların çoğu yönü birbirine benzese de, her bir modda çalışırken aklınızda bulundurmak isteyeceğiniz bazı farklar vardır. Bu başlıklar hakkında daha fazla bilgi ve her bir modda çalışmaya ilişkin öneriler için bkz. Senkronize ve senkronize olmayan veritabanı işlemlerini kullanma. |
|