Computer Dragon
  • Anasayfa
  • Hakkında
  • KATEGORİLER
    • Android
    • Postgresql
    • Oyunlar
  • GÖNDERİLER
facebook twitter pinterest Instagram

 

Postgresql'de One to Many İlişkisi Nasıl Oluşturulur?


        PostgreSQL'de many-to-many iliÅŸkileri modellemek için genellikle üç tablo kullanılır. ÖrneÄŸin, birçok kullanıcının birçok projeye katılabileceÄŸi bir senaryoyu ele alalım.

İlk tablomuz "users" (kullanıcılar) olabilir ve bu tablo her kullanıcının benzersiz bir kimlik (id), adı, e-posta adresi vb. gibi özelliklerini içerebilir.

İkinci tablo "projects" (projeler) olabilir ve bu tablo da her bir projenin benzersiz bir kimliği (id), adı, açıklaması gibi özelliklerini içerebilir.

Many-to-many ilişkiyi temsil etmek için üçüncü bir "user_projects" (kullanıcı_projeler) tablosu oluşturulur. Bu tablo, kullanıcıların hangi projelere katıldığını gösteren ilişkiyi sağlar. Bu tablo genellikle "user_id" (kullanıcı kimliği) ve "project_id" (proje kimliği) gibi sütunlar içerir.

Örnek SQL kodu aşağıdaki gibi olabilir:

CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

CREATE TABLE projects (
    project_id SERIAL PRIMARY KEY,
    project_name VARCHAR(100) NOT NULL,
    description TEXT
);

CREATE TABLE user_projects (
    user_id INT REFERENCES users(user_id),
    project_id INT REFERENCES projects(project_id),
    PRIMARY KEY (user_id, project_id)
);



0
PaylaÅŸ




Salesforce geliştirme alanında, Lightning Web Bileşenleri (LWC) dinamik ve duyarlı kullanıcı arayüzleri oluşturmada önemli bir ilerleme olarak duruyor. Salesforce tarafından 2019 yılında tanıtılan LWC, geliştiricilerin Salesforce platformunda uygulama oluşturma yöntemlerinde devrim yarattı. Modern mimarisi ve gelişmiş performansı ile LWC, sorunsuz kullanıcı deneyimleri sunmayı amaçlayan geliştiriciler için tercih edilen bir seçenek haline geldi.

Salesforce UI GeliÅŸtirmenin Evrimi:

LWC'yi incelemeden önce, Salesforce ekosisteminde kullanıcı arayüzü geliştirmenin evrimini anlamak çok önemlidir. Başlangıçta Salesforce geliştiricileri, kullanıcı arayüzleri oluşturmak için büyük ölçüde Visualforce sayfalarına ve Aura bileşenlerine güveniyordu. Bu teknolojiler amaçlarına hizmet etse de performans, yeniden kullanılabilirlik ve geliştirici üretkenliği açısından sınırlamaları vardı.

Lightning Web Bileşenleri (LWC) ile tanışın:

LWC'nin tanıtılmasıyla Salesforce modern web standartlarını benimsedi ve daha bileşen tabanlı bir mimariye geçti. LWC, verimli, modüler ve yeniden kullanılabilir bileşenler sunmak için Web Bileşenleri, ECMAScript 6 (ES6) ve Shadow DOM gibi web standartlarından yararlanır. Bu yaklaşım, geliştiricilerin kolayca bakımı yapılabilen ve ölçeklendirilebilen zengin, etkileşimli kullanıcı arayüzleri oluşturmalarını sağlar.

Lightning Web Bileşenlerinin Temel Özellikleri:

  1. Performans Optimizasyonu: LWC, tarayıcı özelliklerinden yararlanarak ve çalışma zamanı ek yükünü en aza indirerek performans optimizasyonunu vurgular. Hafif mimarisi ile LWC, daha hızlı yükleme süreleri ve daha sorunsuz kullanıcı etkileşimleri sağlar.
  2. Yeniden Kullanılabilirlik ve Modülerlik: LWC, bileşen tabanlı yapısı sayesinde kodun yeniden kullanılabilirliğini ve modülerliğini destekler. Geliştiriciler, işlevselliği ayrı bileşenler içinde kapsülleyerek kod tabanlarının bakımını ve güncellenmesini kolaylaştırabilir.
  3. Olay Güdümlü Mimari: LWC, bileşenlerin birbirleriyle olaylar aracılığıyla iletişim kurmasına olanak tanıyan olay güdümlü bir mimari izler. Bu ayrıştırılmış iletişim modeli, uygulama geliştirmede esnekliği ve genişletilebilirliği artırır.
  4. Yerleşik Güvenlik: LWC, bileşenleri birbirinden izole ederek ve siteler arası komut dosyası (XSS) saldırılarını önleyerek istemci tarafı güvenliği sağlayan Locker Service gibi yerleşik güvenlik özelliklerini içerir.
  5. Salesforce Platform Hizmetleri ile Entegrasyon: LWC, Apex, Lightning Data Service ve Apex REST gibi çeşitli Salesforce platform hizmetleriyle sorunsuz bir şekilde entegre olarak geliştiricilerin Salesforce ekosisteminin tüm potansiyelinden yararlanmasını sağlar.

LWC ile Geliştirme İş Akışı:

LWC ile geliştirme iş akışı genellikle sunucu tarafı mantığı için Apex denetleyicileri ile birlikte HTML, CSS ve JavaScript kullanarak bileşenler oluşturmayı içerir. Geliştiriciler, geliştirme sürecini kolaylaştırmak için Visual Studio Code için Salesforce CLI ve Salesforce Extensions gibi araçları kullanabilirler. Ayrıca Salesforce, geliştiricilerin LWC geliştirmeye başlamalarına yardımcı olmak için kapsamlı belgeler, trailhead modülleri ve örnek uygulamalar sağlar.

Geleceğe Bakış:

Salesforce platformunu yenilemeye ve geliştirmeye devam ettikçe, Lightning Web Bileşenleri Salesforce geliştirmenin geleceğinde merkezi bir rol oynamaya hazırlanıyor. Devam eden geliştirmeler ve topluluk odaklı katkılarla LWC'nin, geliştiricileri Salesforce platformunda sürükleyici, duyarlı ve ölçeklenebilir uygulamalar oluşturma konusunda daha da güçlendirmesi bekleniyor.

Sonuç olarak Lightning Web Bileşenleri, dinamik kullanıcı arayüzleri oluşturmaya yönelik modern ve performans odaklı bir yaklaşım sunarak Salesforce kullanıcı arayüzü geliştirmede bir paradigma değişimini temsil ediyor. Web standartlarını benimseyerek ve topluluk işbirliğini teşvik ederek LWC, Salesforce ekosisteminde bir köşe taşı teknolojisi olarak kendini kanıtladı ve geliştiricileri iş başarısını artıran yenilikçi çözümler sunmaları için güçlendirdi.

0
PaylaÅŸ

     

        Merge sort algoritması, verilen bir diziyi her adımda ikiye bölen ve bu iÅŸlemi her eleman bir liste içinde olana kadar devam eden bir algoritmadır. 

 
 Her bir eleman bir diziye ekleninceye kadar bölündükten sonra karşılaÅŸtırma ve birleÅŸtirme iÅŸlemi baÅŸlar. Yani listelerdeki elemanlar birleÅŸtirilirken büyüklüklerine göre sıralanarak birleÅŸtirilir. 



      Merge sort algoritması zaman karmaşıklığı bakımından best case, average case ve worst case gibi durumların hepsinde (n log n) gibi bir hıza ulaÅŸarak en stabil sıralama algoritması olmayı baÅŸarmıştır. Merge sort'un dezavantajı ise sürekli olarak veriyi kopyalamak gerektiÄŸi için hafızayı daha fazla kullanmasıdır. Büyük miktarda verilerle uÄŸraşırken merge sort çok kullanışlıdır. Bu hızı daha da arttırmak için Python ile Paralel Programlama tekniÄŸinden faydalanacağız. 

PYTHON PARALEL PROGRAMLAMA (Multiprocessing)

        Python'da multiprocessing özelliÄŸini kullanabilmemiz için bir kaç farklı kütüphane mevcut. Burada merge sort kodunu yazarken recursive bir yapı kullandığım için multiprocessing kütüphanesi bir iÅŸime yaramayacak. Çünkü bu kütüphanede bir process baÅŸka bir processi çağırırken hata verir ve recursive bir ÅŸekilde process oluÅŸturulmasına izin vermez. Aynı ÅŸekilde Pool oluÅŸturup map ile ya da apply function ile recursive fonksiyonu gönderip processler oluÅŸturmak istediÄŸimizde de hatayla karşılaşırız. Bunu bypass edecek bir kod yazabiliriz ancak bu da zahmetli bir iÅŸ olacağından bu sınırlamanın olmadığı bir kütüphane kullanmak daha mantıklı olacak. 

    Yapılacak olan iÅŸ, dizinin çekirdek sayısı kadar parçaya ayrılıp çekirdeklere paylaÅŸtırılması ve böylece büyük verilerde katlanan bir sıralama hızına ulaÅŸmaktır. Bunu diagram ile gösterek olursak ortaya şöyle bir ÅŸekil çıkar:


n derinliğe inerek 2^n sayıda process oluşturur ve her bir process kendi seri merge sortunu çalıştırır. 16 çekirdekli bir sistemde 4 birim derinliğe iner ve 16 process oluşturarak her processin, dizinin ayrı bir kısmını sıralaması sağlanır. Yukarıya dönüşte ise merge işlemi gerçekleştirilerek dizi hem sıralanır hem birleştirilir.

Proje linki: https://github.com/mertcenkk/ParallelMergeSort







0
PaylaÅŸ


Postgresql'de One to Many İlişkisi Nasıl Oluşturulur?

   Postgresql'de one to many iliÅŸkisi (1 den n'e ya da birden çoÄŸa) içeren tabloları oluÅŸturmak için aralarında bu iliÅŸkiyi mantıksal olarak barındıracak iki tablo seçmemiz gerekiyor.

Örneğin bir sınıfta birden fazla öğrenci bulunabilir ancak bir öğrenci yalnız bir sınıfa bağlıdır. Bu durumda ortaya one to many dediğimiz ilişki çıkar.


Postgresql'de One to Many İlişkili Tabloların Oluşturulması


    VerdiÄŸimiz örneÄŸe devam edecek olursak öğrenci tablosunun nitelikleri adı, soyadı, okul_no, yaÅŸ olsun. Sınıf tablosunun nitelikler ise sınıf_no, ÅŸube, sınıf_mevcudu olsun. Öncelikle sınıf tablosunu oluÅŸturacak olan sql sorgusunu yazalım.

 

 create table sinif(

 id serial primary key,

 sinif_no int,

 sube char(1),

 sinif_mevcudu int

)

 


 ve öğrenci tablosuna ait sorguyu yazıp çalıştıralım.

 

create table ogrenci(

 id serial primary key,

 ad varchar(20),

 soyad varchar(20),

 okul_no int,

 yas int,

 sinif int references sinif(id)

)

Öncelikle sınıf tablosunu oluşturduk ve öğrenci tablosunu oluştururken sınıf tablosundaki id sütununu, öğrenci tablosuna sınıf niteliği adı altında yabancı anahtar (foreign key) olarak atadık.

 Böylece her öğrencinin bir sınıfı oldu ancak sınıf için böyle bir kısıtlama koymadık. Yani 1'e N dediÄŸimiz iliÅŸkiyi oluÅŸturduk. Åžimdi tablolara veri ekleyip sorgularla iliÅŸkiyi gösterelim. 

 Sınıf tablosu için veri

insert into sinif values (default, 1, 'A', 20),(default, 1, 'B', 19),(default, 2, 'A', 21)


            Öğrenci tablosu için veri


insert into ogrenci values 

(default, 'Ali', 'Turan', 10, 7, 1),

(default, 'Zeynep', 'Kara', 11, 7, 1),

(default, 'Ahmet', 'Çoban', 20, 7, 1),

(default, 'Elif', 'Elmas', 35, 7, 2)


        Åžimdi 1-A sınıfındaki öğrencileri getirecek olan sorguyu yazıp çalıştıralım.


        select * from ogrenci where sinif in (select  id from sinif where sinif_no=1 and  sube='A')

        çalıştırdıktan sonra çıktımız ÅŸu ÅŸekilde olacaktır:




 






 

0
PaylaÅŸ
 

        Sonunda Xiaomi Note 6 Pro cihazlar için Miui 12 sürümü geldi ve bu sürümü ÅŸuan için TWRP kullanarak yükleyebiliyoruz.
        
        Öncelikle Romu yüklemek için Bootloader kilidi açık olmalı. TWRP yüklü deÄŸilse telefonu fastboot moda aldıktan sonra aÅŸağıdaki adımları uygulayabilirsiniz.
fastboot flash recovery twrp.img
fastboot boot twrp.img

  • Yukarıdaki kodları; telefonu bilgisayara baÄŸlayıp adb baÄŸlantısını gerçekleÅŸtirdikten sonra twrpnin bulunduÄŸu klasörde cmd üzerinden çalıştırın.
  • TWRP İndir
  • Romu yüklemek için öncelikle twrp'den format /data seçeneÄŸini seçin
  • Sonra indirdiÄŸiniz romu telefon hafızasına taşıyıp install zip ile romu yükleyip yeniden baÅŸlatın.
  • Rom dosyası indir
2. Yöntem ( miui 11.0.6.0 sürümü telefonunuzda yüklüyse)
Eğer telefonunuzda boot kilidi açık değilse veya açmak istemiyorsanız, telefonuza güncelleme henüz gelmediyse, güncelleme ekranında miui 11 logosuna ard arda tıklayarak ek özellikleri açabilirsiniz.
Sonrasında bu linkten indireceÄŸiniz dosyayı ek seçeneklerden seçip yükleyerek telefonu güncelleyebilirsiniz.
0
PaylaÅŸ

 –Postgresql'de tablo nasıl oluÅŸturulur?

Postgresql'de diÄŸer veritabanlarında da bulunan create, insert, update, delete, alter gibi ortak anahtar kelimeler vardır. Biz de bunları kullanarak aralarında one-to-one, one-to-many ve many-to-many iliÅŸkisi bulunan tablolar oluÅŸturacağız. 

 –Postgresl'de One-to-one (bire bir iliÅŸkili) tablo oluÅŸturma

Öncelikle one to one yani birebir iliÅŸkinin ne olduÄŸunu anlamamız gerekli. Veritabanımızda oluÅŸturacağımız bir varlığa baÄŸlı baÅŸka bir tablo varsa ve bu tablo sadece bir tane ise bu durumda iliÅŸki birebir(one-to-one) iliÅŸki olur. Buna örnek olarak her insanın bir kimliÄŸe sahip olması ve bir kimliÄŸin bir insana sahip olması verilebilir.

Veritabanında one to one(birebir) iliÅŸkisi bulunan bir tablo oluÅŸturmak için bir adet insan ve bir    adet kimlik varlığımız olsun. İnsan tablomuzda bulunacak özellikler; ad_soyad, boy, kilo, yaÅŸ ve cinsiyet nitelikleri. Kimlik tablosunda ise tc_kimlik_no, ad_soyad, anne_adı, baba_adı, dogum_tarihi gibi nitelikler bulunsun.

Bu durumda insan tablosunu oluşturacak kodları şu şekilde yazabiliriz:

create table insan(

insan_id int primary key,

ad_soyad varchar(50),

yaÅŸ int,

boy int,

kilo int

)

 


Sonrasında ise kimlik tablosunu yazalım.

 create table kimlik(

kimlik_id int primary key,

tc_kimlik_no int,

ad_soyad varchar(50),

anne_adi varchar(50),

baba_adi varchar(50),

dogum_tarihi date

)

 


 Bundan sonra ise iki tablo arasındaki iliÅŸkiyi saÄŸlamak için birbirilerine foreign key yani kendi primary keylerini vermemiz gerekiyor.

 alter table insan

add foreign key (insan_id) references kimlik(kimlik_id)

deferrable initially deferred

 

           ve aynı iÅŸlemi kimlik tablosu için de uyguluyoruz.


 alter table kimlik

add foreign key (kimlik_id) references insan(insan_id)

deferrable initially deferred



 Åžimdi veritabanımıza ilk verimizi eklemeyi deneyelim.

  INSERT INTO public.insan(

insan_id, ad_soyad, "yaÅŸ", boy, kilo)

VALUES (1, 'Jale Çetin', 19, 169, 53);


INSERT INTO public.kimlik values (1,124567897,'Jale Çetin', 'MEDİHA', 'EROL', '1990-12-12')

 

  Åžimdi de select ile kontrol edelim.

            select * from insan, kimlik

Burada kritik olan nokta ise verileri eklerken yapılacak olan insert sorguları her iki tablo için de aynı anda çalıştırılmalı, aksi durumda hata verir.

 

İkinci yöntem olarak:

Birinci tablonun primary key'i ikinci tabloya primary foreign key olarak verilir. Yani

alter table kimlik

add foreign key (kimlik_id) references insan(insan_id)

deferrable initially deferred 

  sorgusunu çalıştırmadan devam edebilirsiniz ve böylece insert yaparken aynı anda iki tablo için insert yapma zorunluluÄŸunu ortadan kaldırırsınız.                         

 



 

 

0
PaylaÅŸ

            Lordz.io maden bug'ı ile altın hilesi 


  Lordz.io'da nasıl hızlıca altın kazanırsınız?


Hilenin çalışabilmesi için öncelikle maden ocağı yerleştirdiğinizde otomatik silinen bug'lı bir yer bulmalısınız.Eğer öyle bir nokta bulursanız bundan sonrasında yapacaklarınızla bug'ı avantaj haline getirebilirsiniz.

  • Maden ocağını yerleÅŸtirin ve hızlıca satmaya çalışın.
  • Yeteri kadar hızlı hareket ederseniz madeni satarsınız 
  • Madeni sattıktan sonra 187 altın kazanırsınız ve oyun otomatik sildiÄŸi evin parası olan 250 altını size geri verir.
  • Böylece her iÅŸlemde bedavadan 187 altın kazanırsınız ve madenle kazanabileceÄŸinizden çok daha hızlı bir ÅŸekilde altın kazanırsınız.
     



     
0
PaylaÅŸ
Ana Sayfa

TAKİP EDİN

  • twitter
  • instagram

Popular Posts

  • Lordz.io Hile
                Lordz.io maden bug'ı ile altın hilesi    Lordz.io'da nasıl hızlıca altın kazanırsınız? Hilenin çalışabilmesi...
  • POSTGRESQL ONE TO ONE
      –Postgresql'de tablo nasıl oluÅŸturulur? Postgresql'de diÄŸer veritabanlarında da bulunan create, insert, update, delete, alter gibi...
  • POSTGRESQL ONE TO MANY
    Postgresql'de One to Many İliÅŸkisi Nasıl OluÅŸturulur?    Postgresql'de one to many iliÅŸkisi (1 den n'e ya da birden çoÄŸa) içeren...
Blogger tarafından desteklenmektedir.

Etiketler

postgresql (3) relational database (2) veri tabanı (2) Tablo oluşturma (1) Veritabanı ilişkileri (1) Veritabanı tasarımı (1) android (1) many to many (1) oyunlar (1) İlişkisel veritabanı modelleme (1)

GÜNCEL GÖNDERİ

POSTGRESQL MANY TO MANY

  Postgresql'de One to Many İliÅŸkisi Nasıl OluÅŸturulur?           PostgreSQL'de many-to-many iliÅŸkileri modellemek için genellikle ü...

Reklam

Reklam Alanı

Reklam

Hakkımda

Fotoğrafım
Mert Cenk
Profilimin tamamını görüntüle

Toplam Sayfa Görüntüleme Sayısı

Designed by Tech Purge

Created By Mert Cenk KILIÇ

Copyright © 2021 Computer Dragon