E-R(ENTITY RELATIONSHIP MODEL) MODELİ

Veritabanı tasarımında kullanılan ilişkisel veritabanı yönetim sistemlerinin (RDBMS) temelini oluşturur.

E-R Modelinin temel yapıları

1-Varlık (Entity) = Veritabanında oluşturulacak nesneleri temsil eden yapılardır. Veritabanı üzerinde bulunan tablolar ER diyagramlar için Varlık olarak kabul edilir.


2-Nitelik (Attiribute) = ER varlıklarının sahip olduğu her bir alana verilen yapılardır. Veritabanı alanında örnek olarak tablo sütünları verilebilir.


3-İlişki (Relationship) = Varlıklar arasında kurulan fiziksel ve mantıksal bağlantıları temsil eden yapılara denir.

E-R DİYAGRAMLARI

Bu diyagramlara bir örnek üzerinde göz atalım.E-R diyagramı ile tasarlanmış bir veritabanını yorumlayalım...



Yukarıda Hasta Kartı ve Sağlık verileri bizim tablolarımız yani varlıklarımız..Yanda görülen hastaKartiID primary key niteliği diğerleri nitelik.Ortadaki ilişkimiz 1'e 1 ilişki yani okuyacak olursak.Bir hasta kartı,bir sağlık verisi barındırır.Diyelim ki sizin hasta kartınızın id'si 15.Bu id Primary key olduğundan diğer tüm niteliklerinize erişim sağlanacaktır.15 Nolu hasta Gökhan hasta Id'si 123123 diye...Şimdi biraz daha karışık bir örneğe bakalım...


Bakın bir önceki örneğimizin neredeyse aynısı burada kitaplar ile ilgili bilgiler verilmiş.N-N (Çoğa çok) ilişkilerden birkaç tanesini okuyup bir diğer örneğe geçelim.Örneğin N kitabın 1 yazarı olabilir.Yani bir yazarın birkaç kitabı olabilir.Uyeler birden fazla kitabı sepete ekleyebilir.1 yayınevi birden fazla kitap yayınlayabilir gibi gördüğünüz gibi yapı çok basit.Sizlerde böyle örnekleri çizip anlamaya çalışırsanız bu modeli veritabanlarınızın giriş aşamalarında kullanabilirsiniz.



   E-R model örnekleri ile ilgili görsel sonucu

İşte gerçek bir örnek.Belki de bunun çok daha büyüklerine iş hayatınızda rastlayacak.Veya sizde böyle bir modeli tasarlamanız istenecektir.Göz korkutucu olduğunun farkındayım fakat gerçekten göründüğü kadar zor değil.Şu ISA bağlantısına bir göz atalım.ISA bağlantısı varlıklara Primary Key atamak için kullanılır Primary Key'i olmayan tablolar PK'yi olan tabloya bu şekilde bağlanır.İlişkiler de köşeli oklar ile gösterilmiş.Yani N-N değil de I<= şeklinde.Size tavsiyem bir sürü örnek çözmeniz.Anlattığı konular hakkında bir sürü örnek çözün.Kendi kafanızdan örnekler uydurun.Böylece bunları 10 yıl sonra bile görseniz kolaylıkla hatırlarsınız.


İYİ ÇALIŞMALAR...

FLİP FLOPLARDA DURUM GEÇİŞ TABLOLARI

Flip-Flop doğruluk tabloları girişlerin durumuna bağlı olarak çıkışların ne olması gerektiğini anlatan tablolardır. Kısaca bir doğruluk tablosu Flip-Flop'un çalışma şeklini ve özelliklerini tanımlar.Şimdi görseller üzerinden tek tek inceleyelim.

1-R-S TİPİ FF


R-S tipi FF'a bakarken doğruluk tablosuna bakmıştır.Şimdi de durum geçiş tablosuna bir göz atalım.Burada yapmamız gereken tek şey tersten düşünmek örnek verecek olursak;
 Qn=0 Qn+1=1 yani durumumuz 0 iken 1 durumuna geçmiş.Bunun anlamı FF'umuzun set'lenmiş olmasıdır.Yani S=1 R=0.Olur.Mantık hepsi için aynıdır..

2-D TİPİ FF



 Burada da aynı şekilde bakın Qn=0'dan Qn=1'e geldiği durumda D=1 olmuş ki aynı çıktıyı versin.Aynı şekilde 1'den 0'a geçmiş D=0 olmuş ki 0'a geçebilmiş.Qn=1 Qn+=1'de "1"  ve Qn=0 Qn+1=0'da "0" oluyor.Data tipi FF ne girerse o çıkar mantığı bu yüzden önceki değerin hiçbir anlamı yoktur.Bizi ilgilendiren Qn+1 yani bir sonraki değerdir.

3-J-K TİPİ FF




J-K tipi FF'u inceleyelim.Gözünüz korkmasın çünkü mantığımız aynı.Qn=0 Qn+1=0 burada 0 dan 0 a geçilmiş.Ne olmuş olabilir ? Son değerimiz 0 olduğuna göre resetleme olmuş olabilir değil mi ?Veya J ve K ayrı ayrı 0 olmuş olabilir.O halde J her türlü 0,K=0 veya 1 dir.Bu K yüzden belirsizdir.Qn=1 Qn+1=0 durumuna bakalım.Bakın son durumumuz 0 o halde bir resetleme yani K=1 değeri için aktif, J=0 (resetlemede) ve J=1 olabilir çünkü 1'den 0'a bir geçiş söz konusu olduğudan tersleme söz konusudur.Tersleme durumu sadece J=1 K=1 olduğundan J'nin 2 değeri vardır.Lütfen yazdıklarımı tek tek takip ederek anlamaya çalışın.Anlamağınız yer olursa bana iletişimden ulaşabilirsiniz...

4-T TİPİ FF



Bakın aynı Qn=0 Qn+1=1 burada da 0'dan 1'e geçiş olduğu için tümleme yapılmış yani T=1 aynı kaldığında ise T=0'dır

İYİ ÇALIŞMALAR :)







SENKRON VE ASENKRON GİRİŞLER

Filp-Flop’larda tetikleme sinyali ile senkron (eş zamanlı) çalışan girişler olduğu gibi tetikleme sinyalinden bağımsız asenkron (eş zamanlı olmayan) girişlere sahiptirler. Bu girişler Flip-Flop çıkışı ‘1’ yapan kurma (Set) ve çıkış ‘0’ yapan silme (Reset) adını alırlar.Bu girişleri clok sinyalinden güçlüdür.Eğer bu girişlerden bir tanesi aktif ise (ikisi birden aktif olamıyor) set veya resetleme yapılır.Burada clok sinyaline bakılmaz.Şayet bu girişler(S-R) pasif olursa clok sinyali ve senkron girişlere bakılır(J-K).



Tablomuzdan biraz bahsedecek olursak,şekilde gördüğümüz lojik devre Set ve Reset asenkron girişli yükselen kenar tetiklemeli J-K Flip-Flop..Dikkatlice tek tek bakalım.S=0 R=1 olduğunda bildiğiniz üzere Resetleme(silme) işlemi yapılacaktır.Yukarıda da belirttiğimiz üzere set veya reset aktif ise senkron ve clok sinyalinin önemi yoktur.İlk iki satırımız bu durumdadır.3 ve daha sonraki satırlardan J-K tipi FF'ta bahsetmiştik.Yine bakalım.3.Satırda hem Asenkron girişlerimiz aktif değil hem de clok sinyalimiz yok.Sonuç olarak J-K çalışmayacağından (tetiklemeli J-K tipinde bahsettik) bir önceki halini korur.Diğer satırlarda set,reset ve tümleme işlemleri yapılır.Clok aktifdir.Asenkron girişler pasif.Asenkron girişler aktif olduğunda clok'a ve senkron (J-K) girişlere bakılmaz..

İYİ ÇALIŞMALAR :)

ANA-UYDU(MASTER-SALVE) FLİP-FLOP

Ana-Uydu flip flopumuz iki R-S ve bir not kapısı ile oluşturulur.Tetikleme girişi düşen kenar (↓) olduğu zaman DEĞİL kapısı çıkışı uydu flip flop tetikleme girişini, yükselen kenar (↑) yapacağından uydu Flip-Flop yetkilenir ve R-S girişlerinde ana flip-flop’un çıkışları olan Y ve Y’ görülecektir.



Daha öncede R-S tipi FF'tan bahsettik.Eğer düşen kenar tetiklemeli olursa bir önceki flip-flopumuzun bir önceki değeri korunacaktır.Anlayacağınız bu flip-flopumuz dalga üretiyor.Düzgün dalgalar.Örneğin bir butona basıp elimizi kaldırırsak,orada buton bir sinyal üretir.Bu sinyalleri algılamak için bu tip flip-flop kullanılabilir.O butona basılı kalırsak bu sinyali sürekli üretir.Bu sinyal 1 veya 0 olabilir.Programımız o dalgalanmayı görmeden harekete geçmeyeceği için eliniz sürekli basılı kalsa da o sinyali tek bir basım olarak algılayacaktır..

JSP VE JAVABEANS GİRİŞ

JavaBeans özel tipli sınıflara ve metotlara sahiptir.JSP sayfalarının yazılımda uzun ve zahmetli işleri kolaylaştıran kodlar topluluğu diyebiliriz.JavaBean'ler tekrar tekrar kullanılabilirler.

JavaBeanler'ler JSP sayfamızdan mail göndermede ve almada,sayfalar arasında bilgi denetimleri ve onların kontrollerine oradan bilgilerin daha sağlıklı bir şekilde organize edilmesini sağlar.En temel metodları get ve set metotlarıdır.

Özellikleri

1-Javabeans için kullanılacak class public ve bu class'ın parametresiz bir contructor(yapılandırıcı)'ı olmalı..

2-Javabeans properties tipi private olmalı..

3-Javabeans'in properties'ine dışarıdan sadece getXxx() ve setXxx() metotlarıyla erişim sağlanabilecek..

4-Javabeans'imiz serializable (dosyaya veya başka bir stream yazılıp okunabilmesi)

JSP SAYFALARINDA 3 TEMEL JAVABEANS TAG'I BULUNUR

1-<jsp:useBean>
2-<jsp:setProperty>
3-<jsp:getProperty>

<jsp:useBean id="bean_adi" class="bean_sinifi" scope="page|request|session|application"/>
<jsp:setProperty name="bean_adi" property="ozellik" value="deger" />
<jsp:getProperty name="bean_adi" property="ozellik" />

page:bean örnek nesnesiyle JSP sayfalarımız yüklenirken bilgi giriş çıkışlarının denetlenmesi.

request:bean örnek nesnesiyle istemncinin isteklerini cevaplar

session:bean örnej nesnesiyle oturum nesnesi yöneltir.

Bir sonraki yazımızda JavaBeans'in nasıl kullanılacağına değineceğiz...

JSP İLE FORM VERİLERİNİ ALMA

<%--
    Document   : index
    Created on : 19.Şub.2018, 20:48:10
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <form method="post" action="goster.jsp">
        <table border="2" id="ornek">
            <tr >
                <td> Isim : </td> <td><input type="text" name="ad"></td>
            </tr>
            <tr>
                <td> Soyisim : </td> <td><input type="text" name="soy"</td>
            </tr>
            <tr>
                <td> Sifre : </td> <td><input type="password" name="sifre"></td>
            </tr>
            <tr>
                <td><input type="submit" name="gonder" value="DeğerleriGönder"></td>
                <td><input type="reset" value="Formu temizle" name="sil"></td>
            </tr>
            </table>
    </form>
</body>
</html>

<%-- 
    Document   : goster
    Created on : 19.Şub.2018, 21:00:26
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <table border="2">
        <tr><td><%= request.getParameter("ad") %></td></tr>
        <tr><td><%= request.getParameter("soy") %></td></tr>
        <tr><td><%= request.getParameter("sifre") %></td></tr>
    </table>
</body>
</html>

IMPLICIT OBJECT-SESSION

JSP sayfalarının hepsinde herbir istemci için global nesneler gezdirmek için session nesnesinden yararlanıyoruz.Web sitemizde gezen kullanıcının birden fazla sayfada güvenle,emniyetle gezinebilmesi için çok kullanışlıdır.Ziyaretçilerin her birine ayrı ayrı session id'si verilmektedir.Şimdi kodlarımıza bakalım.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
</head>
<body>
    <form method="post" action="sessionOlustur.jsp">
        KULLANICI ADI :
        <input type="text" name="kullaniciadi" size=25>
        <p><input type="submit" value="Kullanici adini goruntule">
    </form>
</body>
</html>



<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
<body>
     <% String kullaniciAdi=request.getParameter("kullaniciadi");
        session.setAttribute("oturumdakiKullanici",kullaniciAdi);
     %>
     Session hazır !
     <a href="sessionGoster.jsp">Diğer JSP sayfasında görmek için tıklayın...</a>
</body>
</html>




<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    Hosgeldiniz Sayın : <% session.getAttribute("oturumdakiKullanici"); %>
</body>
</html>






IMPLICIT OBJECT-RESPONSE

          Response nesnesi kullanıcı tarafına bilgi göndermek için bu bilgilerin hazır bulundurulmasında kullanılır.Cookies(Çerezler) gönderilmesinde respornse kullanılır.

Örneğimize göz atalım.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
      <% Cookie cerezNesnesi=new Cookie("Test","Gkhan");
         cerezNesnesi.setMaxAge(365*24*60*60);
         //ÇEREZİMİZİN ÖMRÜ
         response.addCookie(cerezNesnesi);
         response.sendRedirect("cerez.jsp");
         //cerezimizi cerez.jsp ye gönderdik
      %>
</body>
</html>
--------------------------------------------Cookie'mizi cerez.jsp yollayıp oradan görüntüledik
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%
        Cookie [] cerezim=request.getCookies();
        //gelen cerez alındı
        for(int i=0;i<cerezim.length;i++){
            if(cerezim[i].getName().equalsIgnoreCase("Test"))
            {
                out.println("Gelen cookie degerimiz:"+cerezim[i].getValue());
            }
        }
    %>  
</body>
</html>




IMPLICIT OBJECT-REQUEST

Bu yazımızda implicit nesnelerimize biraz daha yakından bakacağız..

REQUEST

     Request nesnesinin kullanımı çok yaygındır.HTTP istekleri,kullanıcıdan parametreler veya form aracılığı ile alır.Request mevcut istekleri kapsülleyip sunucuya gönderir.Buna karşılık sunucudan response(cevap mesajı) gelir.Bilgi aktarımı server'dan client'e gönderilmiş olur.Bu işlem bittiğinde request nesneleri yok edilir.Şimdi kodlarımıza göz atalım..


<%--
    Document   : request
    Created on : 16.Şub.2018, 16:58:28
    Author     : Gökhan
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    Request method : <%= request.getMethod() %>
    Request URI :    <%= request.getRequestURI() %><hr/>
    Request PROTOKOL :    <%= request.getProtocol() %><hr/>
    Path Info(Yol Bilgisi) :    <%= request.getPathInfo() %><hr/>
    Query String(Sorgu Katarı) :   <%= request.getQueryString() %><hr/>
    Content Length(İçerik Uzunluğu) :   <%= request.getContentLength() %><hr/>
    Content Type :    <%= request.getContentType() %><hr/>
    Server Name :   <%= request.getServerName() %><hr/>
    Server port :    <%= request.getServerPort() %><hr/>
    Remote (uzak) user :   <%= request.getRemoteUser() %><hr/>
    Remote (uzak) Address :   <%= request.getRemoteAddr() %><hr/>
    Remote Host :   <%= request.getRemoteHost() %><hr/>
    Authorization scheme (Yetkilendirme Tasarısı) :   <%= request.getAuthType() %><hr/>
 
</body>
</html>

BİLGİSAYARIN ÇALIŞMA DÜZENİ

Bilgisayarın çalışma düzenini aşağıdaki örnek üzerinden inceleyelim.


Örneğimizde iki sayının toplanıp bir bellek gözüne yazılması istenmiş.Yukarı da adım adım çözülen örneğimizde dikkat edilmesi gereken yerler var.Bunlar da ilki ve en önemlisi Akümülatörün Data Register'ina atılmasıdır.Sonraki dikkat edilecek konu işlem yapmak istediğimiz AR'ını işlemi yapacağımız gözü ayarlamak ve daha sonra denetçinin vereceği komular ile veri yolu veya adres yolundan işlemi sonlandırmak...

BİLGİSAYARIN TEMEL BİRİMLERİ

  Bilgisayar 3 temel birimden oluşur.Ve bu birimler bir birleri içerisinde sürekli bir iletişim halindedir.


1)Merkezi İşlem Birimi

       MİB,bilgisayardan beklenen hesap yapma ve karar verme işlemlerinin gerçeklendiği birimdir.Bu birim aynı zamanda,tüm bilgisayarların çalışmasını da yönetir.Bu nedenle çoğu kez MİB'e bilgisayarın beyni olarak bakılır.

2-Bellek

      Bellek,veri ve programların saklanması amacıyla kullanlmaktadır.Bazı bilgisayarlarda,veri ve program aynı bellek içinde saklanırken,bazılarında veriler için ayrı programlar için ayrı bellek tasarlanır.Veri ve programın aynı bellekte olmasını Von Neumann yapısındaki bilgisayarlar sağlar.

3-Giriş-Çıkış 

      Giriş-çıkış arabirimi bilgisayarın,çevre birimlerle bağlantı kurmasını sağlar.Bilgisayarın çevre birimler arasında veri iletişimi için önemli rol oynar.

Bilgisayarların bu bölümleri arasındaki bağlantıyı sağlamak için tasarlanmış çok sayıda yol bulunur.Bunlar Veri Yolu ,Adres Yolu ve Denetim Yolu'dur.

Şimdi biraz daha ayrıntılı bakalım..
.
      Merkezi İşlem Birimi

               5 alt birimi vardır.Bu alt birimler;

 1-Bellek Adres Register'ı
2-Bellek Veri Registeri'i
3-Akümülatör
4-Aritmelik Lojik Birim (ALU)


     Bellek Adres Register'i MİB'ten ve  G/Ç tan gelen adresin nereye gideceğini belirler.Bellekten okuma veya yazma yapacağımızda AR'yi kullanmamız gerekir.AR adres yoluna bağlıdır.

     Bellek Veri Register'i MİB'den belleğe veya giriş-çıkış arabirimine giden veya buralardan MİB'e gelen verilen alınıp verildiği bir iskele olarak görev yapar.DR üzerinden MİB'e gelen veriler ACC (Akümülatöre) alınır.ALU tarafında da yürütülür.

  Denetçi,tüm bilgisayarların yönetimi ile ilgili bilgileri toplamak ve üretmekle görevlidir.

     Bellek

         Bellek birbirinin aynı ve çok sayıda bellek birimlerinin üst üste yığılması ile oluşmaktadır.
Bellek birimlerine bellek gözü her bellek gözüne ise göze adı verilen birimler bulunur.Veri yolundaki hat sayısı bir bellek gözündeki göze sayısı kadardır.Bu gözelere erişmek için ise adres yolu kullanır.Giriş-çıkış elemanlarıda birer bellek gözü gibi düşünülebilir.Aralarındaki fark,bu gözlerin birer ucunun bilgisayarın dış dünyasına açılmasıdır.

8 bitlik mikroişlemcilerin çoğunda veri yolu 8,adres yolu 16 hattan oluşur.Denetim yolundaki hatların sayısı MİB'in yapısına göre değişmektedir.16 bitlik mikroişlemcilerde veri yolu 8 ya da 16 bit olabilir.







     















Spring Boot Uygulamasını Heroku üzerinde Deploy Etme

Bu yazımızda sizlere spring boot ile yazılmış basit bir Rest api'nin heroku üzerinde nasıl deploy edebileceğimizi göstereceğim. Önce ...