Gönderen Konu: Smf Veritabanı Eğitim Dökümanı  (Okunma sayısı 526 defa)

Çevrimiçi cakal

  • Vip Üye
  • *
  • İleti: 103
  • Karma +1/-0
  • Cinsiyet: Bay
    • Profili Görüntüle
Smf Veritabanı Eğitim Dökümanı
« : 14 Mar 2016, 10:26:42 »
1.:.Veritabanı Nedir?

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.

2.:.Veritabanı Çeşitleri

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.

3.:.MySQL Veri Tabanı

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.


4.:.SQL (Structured Query Language)


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.


5.:.SMF de Veritabanı Yapılısı


Ş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

*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.


smf_attachments
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

smf_ban_groups
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

smf_ban_items
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= 

smf_boards
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.


smf_calendar
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

smf_calendar_holidays
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ığı

smf_categories
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.

smf_collapsed_categories
Tablo Açıklaması =Üye bazlı kategoriyi kapI ö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ığı

smf_membergroups
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

smf_members
Tablo Açıklaması = Üyelerinin kayıtlarının tutulduğu tablo.
     -ID_MEMBER= Üyenin id numarası.Primary key
     -memberName=Üyenin kullanıcı adı.
     -dateRegistered=Üyenin kayıt olduğu tarih.
     -posts=Üyenin mesajları
     -ID_GROUP=Üyenin hangi üye grubuna dahil olduğu
     -lngfile=Üyenin hangi dil dosyalarını kullandığı.
     -lastLogin=Üyenin son login olma tarihi
     -realName=Üyenin görünen adı.Değiştirmediği müddetçe kullanıcı adı ile aynı değerdir.
     -instantMessages=
     -unreadMessages=
     -buddy_list=arkadaş listesi,arkadaş id numaraları virgüllerle ayrılmış olarak kayıt edilir.
     -pm_ignore_list=özel mesaj göndermesini istemediğiniz üyelerin id numaraları yine virgüllerle ayrılmış olarak kayıt edilir.
     -messageLabels=Özel mesajlarda etiket oluşturduğunuzda bu kolonda tutulur.
     -passwd=Üyenin passwordu criptolanmış bir şekilde bu kolonda tutulur.Çözülmesi imkansızdır.
     -emailAddress=Üyenin e-mail adresi.
     -personalText=Üyenin kişisel mesajı.
     -gender=Üyenin cinsiyeti
     -birthdate=Üyenin doğum tarihi.
     -websiteTitle=Üyenin web site başlığı.
     -websiteUrl=Üyenin web site adresi.
     -location=Üyenin bulunduğu yer.
     -ICQ=Üyenin Icq numarası
     -AIM=Üyenin Aim adresi
     -YIM=Üyenin Yim adresi
     -MSN=Üyenin Msn adresi
     -hideEmail=Üyenin profilinden email adresinin görünmemesi istediğinde işaretlediği checkbox un kayıtlaırı bu kolonda tutulur.
     -showOnline=Üyenin online durumunun gösterilip gösterilmeceği.
     -timeFormat=Üyenin profilden ayarladığı zaman formatı.
     -signature=Üyenin imzası
     -timeOffset=
     -avatar=Üyenin avatar linki
     -pm_email_notify=
     -karmaBad=Eksi karma puanı
     -karmaGood=Artı karma puanı
     -usertitle=Üyenin başlığı yani kullanıcı adının altında görünene kısım.
     -notifyAnnouncements=Duyuruları alıp alamauacağı.
     -notifyOnce=
     -notifySendBody=
     -notifyTypes=
     -memberIP=Üyenin ip adresi.Son giriş için
     -memberIP2=Üyenin 2. ip adresi 2.son giriş için
     -secretQuestion=Üyenin gizli sorusu
     -secretAnswer=Üyenin gizli soruya cevabı
     -ID_THEME=Üyenin hangi temayı seçtiği
     -is_activated=Üyenin profilinin aktif olup olmadığı
     -validation_code=Üyenin aktivasyon numarası
     -ID_MSG_LAST_VISIT=Son ziyaret ettiği mesajın id numarası.
     -additionalGroups=Ek üye grubun id numarası.
     -smileySet=Üyenin profilinden seçtiği gülümseme paketi.
     -ID_POST_GROUP=Üye eğer mesaja bağlı üye grubuna dahil ise o grubun id numarası
     -totalTimeLoggedIn=Toplam forumda bulunduğu zaman.
     -passwordSalt=

smf_message_icons
Tablo Açıklaması =Konu açarken seçilen ikon.
     -ID_ICON=İkonun id numarası.Primary key
     -title=İkonun başlığı
     -filename=İkonun adı ve uzantısı
     -ID_BOARD=İkonların hangi bölümde görüneceği.Boş ise tüm bölümlerde görünür.
     -iconOrder=İkon sıralaması.

smf_messages
Tablo Açıklaması = Tüm mesajların bulunduğu tablodur
     -ID_MSG=Mesajın id numarası primary key.
     -ID_TOPIC=Mesajın hangi konuda olduğu.
     -ID_BOARD=Mesajın hangi bölümde olduğu.
     -posterTime=Mesaj atılma tarihi.
     -ID_MEMBER=Mesajı hangi üyenin attığı.
     -ID_MSG_MODIFIED=
     -subject=Mesajın başlığı
     -posterName=Mesajı kimin attığı.Kullanıcı adı.
     -posterEmail=Mesajı gönderenin e-mail adresi.
     -posterIP=Mesaj atıldığı anda üyenin ip adresi.
     -smileysEnabled=Yeni konu açılırken ek seçeneklerde bulunan mesajda gülümsemelere izin ver checkinin kaydı.
     -modifiedTime=Düzenleneme zamanı.
     -modifiedName=Düzenleyenin adı.
     -body=Mesajın içeriği.
     -icon=Mesaja ait ikon.

smf_moderators
Tablo Açıklaması = Bölüm moderatörlerinin kayıtlarının tutulduğu tablo.
     -ID_BOARD=Bölüm id_si
     -ID_MEMBER=O bolumde moderatör olan üyenin id numarası

smf_package_servers
Tablo Açıklaması = Bu tablo sizin için önemli değildir.Eklenti indirebileceğiniz adreslerin kayıtlı tutulduğu tablodur.
     -ID_SERVER=Primary key.
     -name=Eklenti serverının adı.
     -url=Eklenti serverinin adresi.

smf_permissions
Tablo Açıklaması = Bütün izinlerin tutulduğu tablodur.
     -ID_GROUP= Yetkilendirme yapılacak id grubu.
     -permission= Yetki adı.
     -addDeny= Yasaklanıp yasaklanmayacağı.


smf_poll_choices
Tablo Açıklaması = Anketlere Verilen cevapların tutulduğu tablo
     -ID_POLL= Anketin id numarası
     -ID_CHOICE=Çekeneğin id numarası
     -label=
     -votes= Kaç oy aldığı

smf_polls
Tablo Açıklaması = Anketler tablosu
     -ID_POLL=Anketin id numarası.
     -question=Anket sorusu
     -votingLocked=Anketin kilitli olup olmadığı
     -maxVotes=
     -expireTime=Anketin bitiş tarihi
     -hideResults=Sonuçların gizlenip gizlenmeyeceği
     -changeVote= Oylamayı değiştirme imkanı
     -ID_MEMBER=Anketi açan üyenin id numarası.
     -posterName=Anketi açan üyenin kullanıcı adı.

smf_sessions
Tablo Açıklaması = Siteye giren üyeye üye girişi yaptıktan sonra bir session id verilir.Bu session id lerin tutulduğu tablodu.
     -session_id=Primary key.
     -last_update=Sayfanın son yenilenme zamanı.
     -data=

smf_settings
Tablo Açıklaması = Burası ayarlar tablosudur.Admin panelinden yaptıgınız her ayar buraya kaydedilir.Mesela duyuru eklediğinizde buraya kaydedilir veya "Üyelerin duyuruları devre dışı bırakmasına izin ver" seçeneğini işaretlediğinizde o ayar adına ait kayıt 1 yani etkin olur varsayılan hali 0 yani pasif dir.
     -variable=Ayarın adı.
     -value=Ayarın değeri

smf_smileys
Tablo Açıklaması = Gülümseme paketlerinin tutulduğu tablo
     -ID_SMILEY=Primary Key
     -code= Gülümsemenin kodu Örn :  : ) 
     -filename=Gülümsemenin dosya adı
     -description=Gülümsemenin açıklaması
     -smileyRow=
     -smileyOrder= Gülümsemenin sırası
     -hidden= Gizlilik düzeyi

smf_themes
Tablo Açıklaması = Temaların tutulduğu tablodur.
     -ID_MEMBER=Eğer kullanıcı profilinden farklı bir tema seçmiş ise o üyenin id numarası
     -ID_THEME=Hangi temayı seçmiş ise o temanın id numarası
     -variable= Temaya ait ayar açıklamaları
     -value=Temaya ait ayar değerleri.

smf_topics
Tablo Açıklaması = Konular tablosu
     -ID_TOPIC=Konunun id numrası.Primary Key
     -isSticky=Konunun sabit olup olmadığı
     -ID_BOARD=Konunun hangi bölümde olduğu
     -ID_FIRST_MSG=Konun ilk mesajı
     -ID_LAST_MSG=Konunun o anki son mesajı.O konuya yeni bir cevap atıldığında bu değer değişir.
     -ID_MEMBER_STARTED=Konuyu hangi üyenin başlattığı
     -ID_MEMBER_UPDATED=Konuya en son hangi üyenin mesaj yazdığı
     -ID_POLL=konuda bir anket var ise o anketin id numarası
     -numReplies=O konuya verilen toplam cevap sayısı
     -numViews=O konunun toplam görüntülenme sayısı
     -locked=Konun kilitli olup olmadığı


Örnek SQLler

Örnek 1 : 1 İd li üyenin mesaj sayısını bulalım.

SELECT posts FROM smf_members WHERE ID_MEMBER=1

Örnek 2 : 1 id li kategorinin bölümlerini bulalım ve o bölümdeki konu ve mesaj sayılarını bulalım.Ve bunu yaparken birleşik bir sql kullanalım.

Select b.ID_CAT AS Kategori_idsi,b.name AS Kategori_Adi,a.ID_BOARD AS Bolum_idsi,a.name as
Bolum_Adi,a.numTopics AS Konular,a.numPosts AS Mesajlar FROM smf_messages AS a
INNER JOIN smf_topics AS b ON(b.ID_CAT=a.ID_CAT)
WHERE b.ID_CAT=1
ORDER BY boardOrder