Tarih: 2009-04-13, 13:24:59 Mesaj konusu: Veritabanı Eğitim Dökümanı
Kod:
1.:.Veritabanı Nedir?
Veritabanıadından da anlaşılacağı gibi verilerin saklandığı bir alandır.Kodlamadillerini kalem ve hesap makinası gibi düşünürseniz veritabanı birdefterdir.Aynı zamanda kodlama dilleri veritabanında aldıklarıbilgileri dizin ekrana yansıtmak istediğiniz gibi yansıtırlar.Yanigenel 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.
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
Webkullanıcıların ilk sıradaki tercihleri kuşkusuz kihızlı,güvenilir,yüksek veri kapasiteli ve ücretsiz olması nedeni ileMYSQL 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 kullanmakisteyenler için ayrı bir lisansa sahiptir.GPL lisansına sahip olduğuiçinde ücretsiz dağıtılmaktadır.Lakin ücretsiz olmasına rağmen çokhızlıdır ve veri kapasitesi oldukça gelişmiştir.Bunu rakamlarlaanlatacak 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)
SQLbir veritabanı sorgulama dilidir.Size şöyle bir örnek vereyim,Çoğunuziletişim ile ilgili NPL kitapları okumuşsunuzdur.İletişimin sırrı nedirveya 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';
Yukardabir cümle kurulmuştur.Select ile email kolonlardaki veriler seçmemizistenmiş,From dan sonra da bunları hangi tablo bulabileceğimizyazılmıştır.Where ise koşul yerine getirir,bizim verdiğimiz koşul iseusername ' 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.
Primarykey satırların anahtarıdır yani sıra numarası da diyebiliriz.Primarykey olan kolondaki veri tekrar etmez ve boş(null) değer almaz.Yani 2tane 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.
*Logtabloları ve önemli olmayan tablolar atlanmıştır.Ayrıca önemli olmayankolonlar ve bizim bilmediğimiz kolonlar için açıklamayazı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 mesajaeklendiğ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 oavatarı 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 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ığı
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ünmemesiistediğ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 burayakaydedilir.Mesela duyuru eklediğinizde buraya kaydedilir veya "Üyelerinduyuruları devre dışı bırakmasına izin ver" seçeneğiniişaretlediğinizde o ayar adına ait kayıt 1 yani etkin olur varsayılanhali 0 yani pasif dir.
-variable=Ayarın adı.
-value=Ayarın değeri
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
Örnek2 : 1 id li kategorinin bölümlerini bulalım ve o bölümdeki konu vemesaj 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
Bu forumda yeni başlıklar açamazsınız Bu forumdaki başlıklara cevap veremezsiniz Bu forumdaki mesajlarınızı değiştiremezsiniz Bu forumdaki mesajlarınızı silemezsiniz Bu forumdaki anketlerde oy kullanamazsınız