[iurl=#vtnedir]1.:.Veritabanı Nedir?[/iurl]
[iurl=#vtcesit]2.:.Veritabanı Çeşitleri[/iurl]
[iurl=#mysql]3.:.MySQL Veri Tabanı[/iurl]
[iurl=#sql]4.:.SQL(Structured Query Language)[/iurl]
[iurl=#smftyapi]5.:.SMF de Veritabanı Yapılısı[/iurl]
[anchor=vtnedir]1.:.Veritabanı Nedir?[/anchor]
Veritabanı adından da anlaşılacağı gibi verilerin saklandığı bir alandır.Kodlama dillerini kalem ve hesap makinası gibi düşünürseniz veritabanı bir defterdir.Aynı zamanda kodlama dilleri veritabanında aldıkları bilgileri dizin ekrana yansıtmak istediğiniz gibi yansıtırlar.Yani genel anlamda veritabanı bilgilerin hiyerarşik bir şekilde saklandığı bir depolama birimidir.
Nedir bu hiyerarşi?
Veritabanında yazdığınız programla veya kullandığınız scriptlerle ilgili tablolar bulunur.
Excel den örnek verecek olursak bir excel sayfası bir veritabanıdır,çalışma kitaplarını ise tablo olarak görebiliriz.
Nasıl tablolar bunlar?
--------------------------------------------------
|Id_Uye|Kullanıcı Adı |Şifre |mesajsayisi |
---------------------------------------------------
|1 |Arbalot |****** |456 |
---------------------------------------------------
|2 |Elmacik |****** |897 |
---------------------------------------------------
|4 |*eren |****** |1254 |
-------------------------------------------------------------------
Yukarda gördüğünüz gibi veritabanı yapıları bu şekildedir ve veriler örnekteki depolanırlar.
[anchor=vtcesit]2.:.Veritabanı Çeşitleri[/anchor]
Aşağıda adı geçen veritabanları günümüzde en çok kullanılan veritabanlarıdır.
-MySQL
-PostgreSQL
-Acess
-Oracle
-IBM Db2
-Interbase
-Microsoft SQL Server
Web kullanıcıların ilk sıradaki tercihleri kuşkusuz ki hızlı,güvenilir,yüksek veri kapasiteli ve ücretsiz olması nedeni ile MYSQL oluyor.Ve biz de makalemize MySQL ile devam edeceğiz.
[anchor=mysql]3.:.MySQL Veri Tabanı[/anchor]
MySQL çifte lisanslı bir yazılımdır. Hem Genel Kamu Lisansı'na (GPL) sahip özgür bir yazılım, hem de GPL'in kısıtladığı alanlarda kullanmak isteyenler için ayrı bir lisansa sahiptir.GPL lisansına sahip olduğu içinde ücretsiz dağıtılmaktadır.Lakin ücretsiz olmasına rağmen çok hızlıdır ve veri kapasitesi oldukça gelişmiştir.Bunu rakamlarla anlatacak olursak;
-Tablo başına 8 TB veri depolayabilir.
-60000 in üzerinde tablo içerebilir.
-Toplamda 5 milyar satırın üzerinde depolama yapabilir.
Yüksek veri kapasitesi olması ve hızlı bir yazılım olması nedeni ile çoğu php scripti bu yazılımı kullanmaktadır.
[anchor=sql]4.:.SQL (Structured Query Language)[/anchor]
SQL bir veritabanı sorgulama dilidir.Size şöyle bir örnek vereyim,Çoğunuz iletişim ile ilgili NPL kitapları okumuşsunuzdur.İletişimin sırrı nedir veya karşı tarafa istediğinizi nasıl yaptırabilirsiniz?
"Düzgün kurulmuş cümleler kullanarak"
İşte SQL de tam olarak budur.Uygun cümleleri kurduğunuz taktirde veritabanında istediğiniz bilgiyi çekersiniz.
Örnek olarak;
SELECT EMAIL FROM UYELER
WHERE USERNAME = 'Arbalot';
Yukarda bir cümle kurulmuştur.Select ile email kolonlardaki veriler seçmemiz istenmiş,From dan sonra da bunları hangi tablo bulabileceğimiz yazılmıştır.Where ise koşul yerine getirir,bizim verdiğimiz koşul ise username ' i Arbalot olanları getir oldu.
Yani yukardaki SQL cümleciğinden anladığımız şey:
"Username i Arbalot olan üyenin email adresini ekrana yazdır."
SQL ' e geniş olarak başka bir dersimizde değineceğimiz için şimdilik yüzeysel geçiyorum.
[anchor=smftyapi]5.:.SMF de Veritabanı Yapılısı[/anchor]
Şimdi buraya kadar anladığınıza göre SMF de bulunan veritabanına dalabiliriz demektir.
Tabloları incelemeye başlamadan önce tablolar hakkında bilmemiz gereken bazı terimler var.
Primary Key : bir tablonun kesinlikle bir kolonu primary key yani birincil anahtar olarak atanmıştır.
Primary key satırların anahtarıdır yani sıra numarası da diyebiliriz.Primary key olan kolondaki veri tekrar etmez ve boş(null) değer almaz.Yani 2 tane 1 değeri olmaz veya 3 tane 2 değeri olmaz ve o kolon boş geçilemez.
İndex : İndexler ise diğer tablolar ile bağlantılı kolonlardır.
Tablolar
[iurl=#attachments]attachments[/iurl]
[iurl=#ban_groups]ban_groups[/iurl]
[iurl=#ban_items]ban_items[/iurl]
[iurl=#boards]boards[/iurl]
[iurl=#calendar]calendar[/iurl]
[iurl=#calendar_holidays]calendar_holidays[/iurl]
[iurl=#categories]categories[/iurl]
[iurl=#collapsed_categories]collapsed_categories[/iurl]
[iurl=#membergroups]membergroups[/iurl]
[iurl=#members]members[/iurl]
[iurl=#messages]messages[/iurl]
[iurl=#message_icons]message_icons[/iurl]
[iurl=#moderators]moderators[/iurl]
[iurl=#package_servers]package_servers[/iurl]
[iurl=#permissions]permissions[/iurl]
[iurl=#polls]polls[/iurl]
[iurl=#poll_choices]poll_choices[/iurl]
[iurl=#sessions]sessions[/iurl]
[iurl=#settings]settings[/iurl]
[iurl=#smileys]smileys[/iurl]
[iurl=#themes]themes[/iurl]
[iurl=#topics]topics[/iurl]
*Log tabloları ve önemli olmayan tablolar atlanmıştır.Ayrıca önemli olmayan kolonlar ve bizim bilmediğimiz kolonlar için açıklama yazılmamıştır.Zamanla tamamlanacaktır.
**Sizin için önemli olan kolon var ise burda sorabilirsiniz.
[anchor=attachments]smf_attachments[/anchor]
Tablo Açıklaması =Forumda bulunan eklentilerin bilgilerinin tutulduğu tablodur.Mesajlara ekledikleriniz ve sunucuya yüklenmiş avatarlar.
-ID_ATTACH=Tabloya ait primary key.
-ID_THUMB=
-ID_MSG= Eğer satır bir mesaj eklentisi ise hangi mesaja eklendiğini bilmemizi sağlar.Burda o mesaja ait id numarası yazar.
-ID_MEMBER= Eğer satır bir mesaj eklentisi değil de bir avatar ise o avatarı hangi kullanıcı yüklemişse o kullanıcının kullanıcı id si yazar.
-attachmentType= Bu kolon dosyanın avatar mı yoksa mesaj eklentisi mi olduğunu öğrenmemizi sağlar.
-filename=Eklenen dosyanın adı bu kolona yazılır.Yüklenen şey avatar ise sistem o avatara otomatik isim atar.
-size= Yüklenilen dosya boutunu gösterir
-downloads=O dosyanın kaç kere download edildiğini gösterir
-width+-height=Dosya resim ise ve resim eklenirken boyutlandırma verilmişse taglar arasında O değerler buraya yazılır
[anchor=ban_groups]smf_ban_groups[/anchor]
Tablo Açıklaması =Yasaklama yapılmış ise her yasaklama buraya kaydolur.
-ID_BAN_GROUP=Primary Key
-name=Yasaklamaya verilen isim
-ban_time=Ne zaman banlandığı
-expire_time=Banın bitiş süresi
-cannot_access=Yetkisi yok
-cannot_register=Giriş yapamaz
-cannot_post=Mesaj gönderemez
-cannot_login=Giriş Yapamaz
-reason=Banlanma sebebi
-notes=Üye banladığınız da yazdığınız notlar
[anchor=ban_items]smf_ban_items[/anchor]
Tablo Açıklaması = Bir üstte üyeyi yasaklamıştık.Eğer şimdi ise o yasaklamaya tetikleyici ekleyeceğiz.
-ID_BAN=Primary key
-ID_BAN_GROUP= Üyeye ait yasaklama kaydı
-ip_low1..4=
-ip_high1..4=
-hostname=Eğer kişinin hostname’ine yasak koyduysak bu satıra eklenrcektir.
-email_address=Tetikliyicilere e-mail adresinin de eklediğinizde bu kolon dolar
-ID_MEMBER=Hangi üyeyi yasakladıysanız o üyenin id numarası bulunur.
-hits=
[anchor=boards]smf_boards[/anchor]
Tablo Açıklaması =Bu tabloda bölümler bulunur.
-ID_BOARD=Bölümün ün id numarası yani primary key.
-ID_CAT= Bölümün hangi kategoride olduğunu gösterir
-childLevel= Alt bölümün levelini gösterir
-ID_PARENT=
-boardOrder=Bölümün hangi sırada olduğunudur.
-ID_LAST_MSG=O bölüme atılan son mesajın id numarası
-ID_MSG_UPDATED=
-memberGroups=O bölümü hangi üye gruplarının görebildiğini belli eder.
-name=Bölümün adı
-description=Bölüm açıklaması
-numTopics=O bölümde bulunan toplam konu sayısı
-numPosts=O bölümde bulunan toplam mesaj sayısı
-countPosts=O bölüme atılan mesajların sayılıp sayılmayacağını gösterir yani o bölüme üye mesaj atarsa üyenin mesaj sayısı artmayacaktır.
-ID_THEME=Bölüme özel bir tema atanmışsa o temanın id_numarasını gösterir.
-permission_mode=
-override_theme=Üyelerin temasını yok say seçeneği işaretlendiğinde dolacak bölüm.
[anchor=calendar]smf_calendar[/anchor]
Tablo Açıklaması =Burası takvim tablosudur.
-ID_EVENT=Primary key
-startDate=Olayın başlangıç tarihi
-endDate=Olayın bitiş tarihi
-ID_BOARD= Olayın hangi board da olduğu
-ID_TOPIC= Olayın hangi topic ile ilişkili olduğu
-title=Olayın başlığı
-ID_MEMBER= Olayın hangi üye tarafından eklendiği veya hangi üyeye ait olduğu
[anchor=calendar_holidays]smf_calendar_holidays[/anchor]
Tablo Açıklaması = Admin panelinde tanımlayabilidiğiniz tatil günler vs etkinliklerin tutulduğu tablodur.
-ID_HOLIDAY=Primary Key
-eventDate=Olay tarihi
-title=Olay Başlığı
[anchor=categories]smf_categories[/anchor]
Tablo Açıklaması = Forumunuzda bulunan kategoriler bu tabloda bulunur.
-ID_CAT=Kategori id numarası.
-catOrder=Kategorinin sırası
-name=Kategori adı
-canCollapse=Kategorinin varsayılan olarak kapalı mı açık mı olacağını bu kolonda belirleriz.
[anchor=collapsed_categories]smf_collapsed_categories[/anchor]
Tablo Açıklaması =Üye bazlı kategoriyi kapatma özelliğinin kayıtlarını tutan bir tablodur.
-ID_CAT=Kategori id si.Yani yangi kategorinin collapse yapıldığı
-ID_MEMBER=Bu collapseyi hangi üyenin yaptığı
[anchor=membergroups]smf_membergroups[/anchor]
Tablo Açıklaması = Üye gruplarının depolandığı tablodur.
-ID_GROUP=Grup id numarası.Primary key
-groupName=Grup adı.
-onlineColor=Çevrim içi kullanıcılar listesinde grüntülenecek renk kodu
-minPosts=O gruba dahil olmak için atılacak en az mesaj sayısı.
-maxMessages=
-stars=Grup yıldızının linki
[iurl=#vtcesit]2.:.Veritabanı Çeşitleri[/iurl]
[iurl=#mysql]3.:.MySQL Veri Tabanı[/iurl]
[iurl=#sql]4.:.SQL(Structured Query Language)[/iurl]
[iurl=#smftyapi]5.:.SMF de Veritabanı Yapılısı[/iurl]
[anchor=vtnedir]1.:.Veritabanı Nedir?[/anchor]
Veritabanı adından da anlaşılacağı gibi verilerin saklandığı bir alandır.Kodlama dillerini kalem ve hesap makinası gibi düşünürseniz veritabanı bir defterdir.Aynı zamanda kodlama dilleri veritabanında aldıkları bilgileri dizin ekrana yansıtmak istediğiniz gibi yansıtırlar.Yani genel anlamda veritabanı bilgilerin hiyerarşik bir şekilde saklandığı bir depolama birimidir.
Nedir bu hiyerarşi?
Veritabanında yazdığınız programla veya kullandığınız scriptlerle ilgili tablolar bulunur.
Excel den örnek verecek olursak bir excel sayfası bir veritabanıdır,çalışma kitaplarını ise tablo olarak görebiliriz.
Nasıl tablolar bunlar?
--------------------------------------------------
|Id_Uye|Kullanıcı Adı |Şifre |mesajsayisi |
---------------------------------------------------
|1 |Arbalot |****** |456 |
---------------------------------------------------
|2 |Elmacik |****** |897 |
---------------------------------------------------
|4 |*eren |****** |1254 |
-------------------------------------------------------------------
Yukarda gördüğünüz gibi veritabanı yapıları bu şekildedir ve veriler örnekteki depolanırlar.
[anchor=vtcesit]2.:.Veritabanı Çeşitleri[/anchor]
Aşağıda adı geçen veritabanları günümüzde en çok kullanılan veritabanlarıdır.
-MySQL
-PostgreSQL
-Acess
-Oracle
-IBM Db2
-Interbase
-Microsoft SQL Server
Web kullanıcıların ilk sıradaki tercihleri kuşkusuz ki hızlı,güvenilir,yüksek veri kapasiteli ve ücretsiz olması nedeni ile MYSQL oluyor.Ve biz de makalemize MySQL ile devam edeceğiz.
[anchor=mysql]3.:.MySQL Veri Tabanı[/anchor]
MySQL çifte lisanslı bir yazılımdır. Hem Genel Kamu Lisansı'na (GPL) sahip özgür bir yazılım, hem de GPL'in kısıtladığı alanlarda kullanmak isteyenler için ayrı bir lisansa sahiptir.GPL lisansına sahip olduğu içinde ücretsiz dağıtılmaktadır.Lakin ücretsiz olmasına rağmen çok hızlıdır ve veri kapasitesi oldukça gelişmiştir.Bunu rakamlarla anlatacak olursak;
-Tablo başına 8 TB veri depolayabilir.
-60000 in üzerinde tablo içerebilir.
-Toplamda 5 milyar satırın üzerinde depolama yapabilir.
Yüksek veri kapasitesi olması ve hızlı bir yazılım olması nedeni ile çoğu php scripti bu yazılımı kullanmaktadır.
[anchor=sql]4.:.SQL (Structured Query Language)[/anchor]
SQL bir veritabanı sorgulama dilidir.Size şöyle bir örnek vereyim,Çoğunuz iletişim ile ilgili NPL kitapları okumuşsunuzdur.İletişimin sırrı nedir veya karşı tarafa istediğinizi nasıl yaptırabilirsiniz?
"Düzgün kurulmuş cümleler kullanarak"
İşte SQL de tam olarak budur.Uygun cümleleri kurduğunuz taktirde veritabanında istediğiniz bilgiyi çekersiniz.
Örnek olarak;
SELECT EMAIL FROM UYELER
WHERE USERNAME = 'Arbalot';
Yukarda bir cümle kurulmuştur.Select ile email kolonlardaki veriler seçmemiz istenmiş,From dan sonra da bunları hangi tablo bulabileceğimiz yazılmıştır.Where ise koşul yerine getirir,bizim verdiğimiz koşul ise username ' i Arbalot olanları getir oldu.
Yani yukardaki SQL cümleciğinden anladığımız şey:
"Username i Arbalot olan üyenin email adresini ekrana yazdır."
SQL ' e geniş olarak başka bir dersimizde değineceğimiz için şimdilik yüzeysel geçiyorum.
[anchor=smftyapi]5.:.SMF de Veritabanı Yapılısı[/anchor]
Şimdi buraya kadar anladığınıza göre SMF de bulunan veritabanına dalabiliriz demektir.
Tabloları incelemeye başlamadan önce tablolar hakkında bilmemiz gereken bazı terimler var.
Primary Key : bir tablonun kesinlikle bir kolonu primary key yani birincil anahtar olarak atanmıştır.
Primary key satırların anahtarıdır yani sıra numarası da diyebiliriz.Primary key olan kolondaki veri tekrar etmez ve boş(null) değer almaz.Yani 2 tane 1 değeri olmaz veya 3 tane 2 değeri olmaz ve o kolon boş geçilemez.
İndex : İndexler ise diğer tablolar ile bağlantılı kolonlardır.
Tablolar
[iurl=#attachments]attachments[/iurl]
[iurl=#ban_groups]ban_groups[/iurl]
[iurl=#ban_items]ban_items[/iurl]
[iurl=#boards]boards[/iurl]
[iurl=#calendar]calendar[/iurl]
[iurl=#calendar_holidays]calendar_holidays[/iurl]
[iurl=#categories]categories[/iurl]
[iurl=#collapsed_categories]collapsed_categories[/iurl]
[iurl=#membergroups]membergroups[/iurl]
[iurl=#members]members[/iurl]
[iurl=#messages]messages[/iurl]
[iurl=#message_icons]message_icons[/iurl]
[iurl=#moderators]moderators[/iurl]
[iurl=#package_servers]package_servers[/iurl]
[iurl=#permissions]permissions[/iurl]
[iurl=#polls]polls[/iurl]
[iurl=#poll_choices]poll_choices[/iurl]
[iurl=#sessions]sessions[/iurl]
[iurl=#settings]settings[/iurl]
[iurl=#smileys]smileys[/iurl]
[iurl=#themes]themes[/iurl]
[iurl=#topics]topics[/iurl]
*Log tabloları ve önemli olmayan tablolar atlanmıştır.Ayrıca önemli olmayan kolonlar ve bizim bilmediğimiz kolonlar için açıklama yazılmamıştır.Zamanla tamamlanacaktır.
**Sizin için önemli olan kolon var ise burda sorabilirsiniz.
[anchor=attachments]smf_attachments[/anchor]
Tablo Açıklaması =Forumda bulunan eklentilerin bilgilerinin tutulduğu tablodur.Mesajlara ekledikleriniz ve sunucuya yüklenmiş avatarlar.
-ID_ATTACH=Tabloya ait primary key.
-ID_THUMB=
-ID_MSG= Eğer satır bir mesaj eklentisi ise hangi mesaja eklendiğini bilmemizi sağlar.Burda o mesaja ait id numarası yazar.
-ID_MEMBER= Eğer satır bir mesaj eklentisi değil de bir avatar ise o avatarı hangi kullanıcı yüklemişse o kullanıcının kullanıcı id si yazar.
-attachmentType= Bu kolon dosyanın avatar mı yoksa mesaj eklentisi mi olduğunu öğrenmemizi sağlar.
-filename=Eklenen dosyanın adı bu kolona yazılır.Yüklenen şey avatar ise sistem o avatara otomatik isim atar.
-size= Yüklenilen dosya boutunu gösterir
-downloads=O dosyanın kaç kere download edildiğini gösterir
-width+-height=Dosya resim ise ve resim eklenirken boyutlandırma verilmişse taglar arasında O değerler buraya yazılır
[anchor=ban_groups]smf_ban_groups[/anchor]
Tablo Açıklaması =Yasaklama yapılmış ise her yasaklama buraya kaydolur.
-ID_BAN_GROUP=Primary Key
-name=Yasaklamaya verilen isim
-ban_time=Ne zaman banlandığı
-expire_time=Banın bitiş süresi
-cannot_access=Yetkisi yok
-cannot_register=Giriş yapamaz
-cannot_post=Mesaj gönderemez
-cannot_login=Giriş Yapamaz
-reason=Banlanma sebebi
-notes=Üye banladığınız da yazdığınız notlar
[anchor=ban_items]smf_ban_items[/anchor]
Tablo Açıklaması = Bir üstte üyeyi yasaklamıştık.Eğer şimdi ise o yasaklamaya tetikleyici ekleyeceğiz.
-ID_BAN=Primary key
-ID_BAN_GROUP= Üyeye ait yasaklama kaydı
-ip_low1..4=
-ip_high1..4=
-hostname=Eğer kişinin hostname’ine yasak koyduysak bu satıra eklenrcektir.
-email_address=Tetikliyicilere e-mail adresinin de eklediğinizde bu kolon dolar
-ID_MEMBER=Hangi üyeyi yasakladıysanız o üyenin id numarası bulunur.
-hits=
[anchor=boards]smf_boards[/anchor]
Tablo Açıklaması =Bu tabloda bölümler bulunur.
-ID_BOARD=Bölümün ün id numarası yani primary key.
-ID_CAT= Bölümün hangi kategoride olduğunu gösterir
-childLevel= Alt bölümün levelini gösterir
-ID_PARENT=
-boardOrder=Bölümün hangi sırada olduğunudur.
-ID_LAST_MSG=O bölüme atılan son mesajın id numarası
-ID_MSG_UPDATED=
-memberGroups=O bölümü hangi üye gruplarının görebildiğini belli eder.
-name=Bölümün adı
-description=Bölüm açıklaması
-numTopics=O bölümde bulunan toplam konu sayısı
-numPosts=O bölümde bulunan toplam mesaj sayısı
-countPosts=O bölüme atılan mesajların sayılıp sayılmayacağını gösterir yani o bölüme üye mesaj atarsa üyenin mesaj sayısı artmayacaktır.
-ID_THEME=Bölüme özel bir tema atanmışsa o temanın id_numarasını gösterir.
-permission_mode=
-override_theme=Üyelerin temasını yok say seçeneği işaretlendiğinde dolacak bölüm.
[anchor=calendar]smf_calendar[/anchor]
Tablo Açıklaması =Burası takvim tablosudur.
-ID_EVENT=Primary key
-startDate=Olayın başlangıç tarihi
-endDate=Olayın bitiş tarihi
-ID_BOARD= Olayın hangi board da olduğu
-ID_TOPIC= Olayın hangi topic ile ilişkili olduğu
-title=Olayın başlığı
-ID_MEMBER= Olayın hangi üye tarafından eklendiği veya hangi üyeye ait olduğu
[anchor=calendar_holidays]smf_calendar_holidays[/anchor]
Tablo Açıklaması = Admin panelinde tanımlayabilidiğiniz tatil günler vs etkinliklerin tutulduğu tablodur.
-ID_HOLIDAY=Primary Key
-eventDate=Olay tarihi
-title=Olay Başlığı
[anchor=categories]smf_categories[/anchor]
Tablo Açıklaması = Forumunuzda bulunan kategoriler bu tabloda bulunur.
-ID_CAT=Kategori id numarası.
-catOrder=Kategorinin sırası
-name=Kategori adı
-canCollapse=Kategorinin varsayılan olarak kapalı mı açık mı olacağını bu kolonda belirleriz.
[anchor=collapsed_categories]smf_collapsed_categories[/anchor]
Tablo Açıklaması =Üye bazlı kategoriyi kapatma özelliğinin kayıtlarını tutan bir tablodur.
-ID_CAT=Kategori id si.Yani yangi kategorinin collapse yapıldığı
-ID_MEMBER=Bu collapseyi hangi üyenin yaptığı
[anchor=membergroups]smf_membergroups[/anchor]
Tablo Açıklaması = Üye gruplarının depolandığı tablodur.
-ID_GROUP=Grup id numarası.Primary key
-groupName=Grup adı.
-onlineColor=Çevrim içi kullanıcılar listesinde grüntülenecek renk kodu
-minPosts=O gruba dahil olmak için atılacak en az mesaj sayısı.
-maxMessages=
-stars=Grup yıldızının linki