SQL ile Öğrenci Not Veritabanı Oluşturma
Basitten gelişmiş yapıya kadar öğrenci notları yönetimi için kapsamlı SQL örneği
Önemli Noktalar
- Tablo Tasarımları: Öğrenci, ders ve not bilgilerini tutacak tabloların oluşturulması.
- Veri Bütünlüğü: Birincil anahtarlar, yabancı anahtarlar ve kontrol kısıtlamaları ile verilerin doğru ilişkilendirilmesi.
- Örnek Veri ve Sorgular: Veri ekleme örnekleri ve not ortalaması hesaplaması gibi örnek SQL sorguları.
Veritabanı Tasarımına Genel Bakış
Bir öğrenci not veritabanı oluştururken, veritabanı şemasını doğru şekilde tasarlamak çok önemlidir. Bu şema öğrenci, ders ve not bilgilerini saklayacak farklı tablolardan oluşur. İyi tasarlanmış bir şema, verilerin tutarlı, güvenilir ve ilişkisel olarak mantıklı bir biçimde depolanmasını sağlar.
İlk aşamada, temel tabloların neler olacağına karar verilir. Genellikle, aşağıdaki tablolar kullanılır:
- Öğrenci Tablosu: Öğrencilerin temel bilgilerini (ID, ad, soyad, kimlik/öğrenci numarası gibi) saklar.
- Ders Tablosu: Derslerin adları, ders kimlik numaraları ve kredi bilgileri gibi dersle ilgili bilgileri içerir.
- Öğrenci Not Tablosu: Hangi öğrencinin hangi dersten hangi notları aldığını saklar. Bu tabloda ayrıca sınav türleri (vize, final) veya diğer sınav türleri için sütunlar bulunabilir.
- Bölüm Tablosu (Opsiyonel): Eğer öğrencilerin farklı bölümlerde yer aldığı durumlarda, bölümleri tutarak okul organizasyonunu daha iyi yönetmek mümkündür.
SQL Kodları ile Tabloların Oluşturulması
Aşağıda, öğrenci not veritabanı için örnek SQL kodları yer almaktadır. Bu örnek, dört temel tablo içermektedir: Bölüm, Ders, Öğrenci ve ÖğrenciDers tablosu. Bu yapı, öğrencilerin birden fazla derse kayıt olabilecekleri ve her dersin birden fazla öğrenci tarafından alınabileceği ilişkiyi destekler.
Bölüm Tablosu
Öğrencilerin ait olduğu bölümlerin bilgilerini tutmak amacıyla oluşturulan bölüm tablosu, bölüm kimliği ve bölüm adını içerecek şekilde tasarlanır. Bu tablo, ders ve öğrenci tablosunda yabancı anahtar ilişkileri ile kullanılacaktır.
-- Bölüm tablosunu oluştur
CREATE TABLE Bolum (
BolumID INT PRIMARY KEY,
BolumAdi VARCHAR(50) NOT NULL
);
Ders Tablosu
Ders tablosu, her dersin benzersiz ID'sini, ders adını ve ihtiyaç duyulursa dersin hangi bölüme ait olduğunu belirtmek için BölümID sütununu içerir.
-- Ders tablosunu oluştur
CREATE TABLE Ders (
DersID INT PRIMARY KEY,
DersAdi VARCHAR(100) NOT NULL,
BolumID INT,
FOREIGN KEY (BolumID) REFERENCES Bolum(BolumID)
);
Öğrenci Tablosu
Öğrenci tablosu, öğrencilerin benzersiz ID'sini ve ad-soyad bilgilerini içerir. Ayrıca öğrencinin hangi bölüme kayıtlı olduğunu belirtmek için BölümID de eklenmiştir.
-- Öğrenci tablosunu oluştur
CREATE TABLE Ogrenci (
OgrenciID INT PRIMARY KEY,
AdSoyad VARCHAR(100) NOT NULL,
BolumID INT,
FOREIGN KEY (BolumID) REFERENCES Bolum(BolumID)
);
ÖğrenciDers (Notlar) Tablosu
ÖğrenciDers tablosu, öğrencilerin aldıkları dersler ile not bilgilerini tutar. Tabloda, bir öğrencinin aynı dersten birden fazla kayıt girişiyle karşılaşmamak için bir bileşik birincil anahtar kullanılmaktadır. Ayrıca, vize ve final sınav notları gibi alanlar kontrol kısıtlamaları ile sınırlandırılmıştır.
-- ÖğrenciDers (Notlar) tablosunu oluştur
CREATE TABLE OgrenciDers (
OgrenciID INT,
DersID INT,
Vize INT CHECK (Vize >= 0 AND Vize <= 100),
Final INT CHECK (Final >= 0 AND Final <= 100),
PRIMARY KEY (OgrenciID, DersID),
FOREIGN KEY (OgrenciID) REFERENCES Ogrenci(OgrenciID),
FOREIGN KEY (DersID) REFERENCES Ders(DersID)
);
Örnek Veri Girişi
Oluşturulan tabloları test etmek ve örnek çalışmalar yapmak adına, aşağıda bazı örnek veri girişlerini bulabilirsiniz. Bu veri seti, çeşitli bölümleri, dersleri ve öğrencileri kapsar ve her öğrencinin farklı derslerden notlarını içerir.
Bölüm Verilerinin Eklenmesi
İlgili bölümlerin tablomuza eklenmesi aşağıdaki SQL komutlarıyla yapılır:
-- Bölüm verilerinin eklenmesi
INSERT INTO Bolum (BolumID, BolumAdi) VALUES
(1, 'Bilgisayar Mühendisliği'),
(2, 'Elektrik-Elektronik Mühendisliği');
Ders Verilerinin Eklenmesi
Ders tablosuna, her dersin benzersiz kimliği, ders adı ve eğer varsa hangi bölümle ilişkili olduğunu belirten bilgiler ekleyebilirsiniz:
-- Ders verilerinin eklenmesi
INSERT INTO Ders (DersID, DersAdi, BolumID) VALUES
(1, 'Veri Yapıları', 1),
(2, 'Mikroişlemciler', 2),
(3, 'Algoritma Analizi', 1);
Öğrenci Verilerinin Eklenmesi
Öğrenci bilgilerini eklemek için aşağıdaki komutlar kullanılabilir. Her öğrenci, kendi bölümüne göre ilişkilendirilir:
-- Öğrenci verilerinin eklenmesi
INSERT INTO Ogrenci (OgrenciID, AdSoyad, BolumID) VALUES
(1, 'Ali Can', 1),
(2, 'Mehmet Başaran', 2),
(3, 'Utku Bolat', 1);
ÖğrenciDers (Notlar) Verilerinin Eklenmesi
Öğrencilerin ders kaydı ve not bilgilerini eklemek için aşağıdaki komutları kullanabilirsiniz. Burada, vize ve final notları girilmiş olup, notların 0 ile 100 arasında olması için kontrol kısıtlamaları mevcuttur.
-- ÖğrenciDers verilerinin eklenmesi
INSERT INTO OgrenciDers (OgrenciID, DersID, Vize, Final) VALUES
(1, 1, 80, 90),
(1, 3, 70, 85),
(2, 2, 90, 95),
(3, 1, 85, 92);
Gelişmiş Sorgular ve Not Hesaplama
Veritabanınız oluşturulduktan ve test verileri yerleştirildikten sonra, öğrenci notlarının hesaplanması ve detaylı sorgulama işlemlerini gerçekleştirmek mümkün olur. Örneğin, öğrencilerin aldıkları notların ağırlıklı ortalamasını hesaplamak, dersler arası karşılaştırma yapmak gibi işlemler yapılabilir.
Aşağıdaki sorgu, her öğrenci ve ders için vize ve final notlarının ağırlıklı ortalamasını hesaplamaktadır. Genellikle vize notuna %40, final notuna %60 ağırlık verilir:
-- Öğrenci not ortalaması hesaplama sorgusu
SELECT
O.AdSoyad,
D.DersAdi,
OD.Vize,
OD.Final,
(OD.Vize * 0.4 + OD.Final * 0.6) AS GenelNot
FROM
Ogrenci O
INNER JOIN
OgrenciDers OD ON O.OgrenciID = OD.OgrenciID
INNER JOIN
Ders D ON OD.DersID = D.DersID;
Bu sorgu sayesinde her öğrencinin hangi dersten hangi notları aldığı ve genel not hesaplamasıyla birlikte ekranda gösterilmesi sağlanır. Kullanılan JOIN işlemleri veritabanı tabloları arasındaki ilişkileri sağlıklı bir biçimde birleştirirken, not hesaplaması formülü de SQL içerisinde basit matematiksel hesaplama örneği olarak yer almaktadır.
Tablo İlişkilerinin Görselleştirilmesi
Veritabanının tabloları ve bunlar arasındaki ilişkileri anlamak için basit bir tablo görselleştirmesi yapmak faydalıdır. Aşağıdaki tablo, ilgili tablolar ve onların anahtar ilişkilerini özetlemektedir:
| Tablo Adı | Anahtar Sütunlar | Yabancı Anahtarlar |
|---|---|---|
| Bolum | BolumID | – |
| Ders | DersID | BolumID (Bolum tablosuna bağlı) |
| Ogrenci | OgrenciID | BolumID (Bolum tablosuna bağlı) |
| OgrenciDers | (OgrenciID, DersID) | OgrenciID (Ogrenci tablosuna bağlı), DersID (Ders tablosuna bağlı) |
Yukarıdaki tablo, veritabanı şemanızdaki tabloların anahtar ilişkilerini basitçe özetlemektedir. Bu yapı, veritabanında tutarlılık ve referans bütünlüğünün korunması adına önemli roller üstlenmektedir.
Veritabanı Yönetimi ve İleri Düzey İşlemler
Temel tablo ve veri ekleme işlemlerinin ardından, SQL ile daha ileri düzey veri yönetimi odaklı işlemler gerçekleştirilebilir. Bu işlemler arasında:
Veri Güncelleme
Öğrencinin not verilerini güncellemek için UPDATE komutu kullanılır. Örneğin, bir öğrenciye ait final notunu güncellemek için aşağıdaki sorgu örneği kullanılabilir:
-- Bir öğrencinin final notunu güncelleme
UPDATE OgrenciDers
SET Final = 95
WHERE OgrenciID = 2 AND DersID = 2;
Veri Silme
Belirli bir ders kaydını veya öğrenci notunu silmek için DELETE komutu kullanılabilir. Örneğin, yanlışlıkla girilmiş bir not kaydını silmek için:
-- Yanlış girilmiş not kaydını silme
DELETE FROM OgrenciDers
WHERE OgrenciID = 3 AND DersID = 1;
Veritabanı Yedekleme ve Geri Yükleme
Veritabanınızın güvenliği için düzenli yedekleme işlemleri yapmak gereklidir. SQL Server, MySQL ya da PostgreSQL gibi popüler veritabanı yönetim sistemlerinde farklı yedekleme komutları mevcuttur. Bu komutlar sayesinde verilerinizin kaybolması durumunda yedekten geri yükleme imkanı sağlanır.
Gelişmiş Sorgu Teknikleri
Öğrenci not veritabanında sorgularınızı daha detaylı hale getirmek için gruplama, alt sorgular ve birleştirme tekniklerini kullanabilirsiniz. Aşağıda, bölüm bilgilerine göre öğrencilerin aldığı derslerin ortalaması bilgisini gruplandırmalı bir sorgu örneği verilmiştir:
-- Bölüm bazında ders notlarını ortalama hesaplama
SELECT
B.BolumAdi,
D.DersAdi,
AVG(OD.Vize * 0.4 + OD.Final * 0.6) AS OrtalamaNot
FROM
Ogrenci O
INNER JOIN
Bolum B ON O.BolumID = B.BolumID
INNER JOIN
OgrenciDers OD ON O.OgrenciID = OD.OgrenciID
INNER JOIN
Ders D ON OD.DersID = D.DersID
GROUP BY
B.BolumAdi, D.DersAdi;
Bu sorgu, her bölüm ve ders için not ortalamalarını hesaplamakta ve bu bilgiler sayesinde hangi bölümdeki öğrencilerin hangi derslerde daha başarılı olduğunu analiz etme imkanı sunmaktadır.
SQL ile Çalışırken Dikkat Edilmesi Gerekenler
SQL kodlamasında başarılı ve güvenilir sonuçlar elde edebilmek için dikkat edilmesi gereken bazı önemli noktalar bulunmaktadır:
- Tutarlılık: Tablolar arasında oluşturduğunuz yabancı anahtar kısıtlamaları, veri bütünlüğünün korunması adına hayati öneme sahiptir.
- Performans: Özellikle büyük veri kümelerinde sorgu performansını artırmak için indeksleme stratejileri düşünülmelidir.
- Güvenlik: SQL enjeksiyonu gibi güvenlik açıklarından kaçınmak ve veritabanını yetkisiz erişime karşı korumak için uygun önlemleri almak gereklidir.
- Yedekleme: Veritabanı üzerinde yapılan işlemler öncesinde ve sonrasında yedek almaya özen gösterilmelidir. Böylece veri kaybı riskine karşı önlem alınır.
Yukarıda verilen örnekler, tipik bir öğrenci not veritabanı uygulamasının SQL tarafı için oldukça kapsamlı çözümler sunmaktadır. Bu yapı, hem basit hem de ileri düzey veritabanı kullanıcıları için uygun bir başlangıç noktasıdır.
SQL Yönetim Sistemleri ve Alternatif Kullanımlar
SQL dilini kullanırken, uygulayacağınız veritabanı yönetim sistemi (DBMS) önemlidir. MySQL, PostgreSQL, SQL Server ve Oracle gibi popüler DBMS'lerde ufak farklılıklar bulunmaktadır. Bu örneklerde temel SQL komutları kullanılmakta olup, çoğu modern DBMS tarafından desteklenmektedir.
Örneğin, MySQL kullanıyorsanız veri türleri ve kısıtlamalar konusunda daha esnek yapılar bulunabilir. PostgreSQL, gelişmiş sorgu özellikleri ve JSON veri tipleri ile dinamik veri yönetimi konusunda avantaj sağlar. SQL Server ise kapsamlı yönetim araçları sayesinde büyük ölçekli kurumsal uygulamalarda tercih edilmektedir.
DBMS Seçimi
Veritabanı yönetim sisteminizin seçimi, projenizin gereksinimlerine, ölçeğine ve ekibinizin deneyimine bağlı olarak değişebilir. Yukarıda sunduğumuz SQL kodları, genel kabul görmüş standartları desteklemekte olup, belirli durumlara göre küçük ayarlamalar gerekebilir.
Son Kullanıcı İçin Uygulama Senaryoları
Bu veritabanı yapısı, sadece öğrenci notlarını saklamakla kalmayıp, eğitim kurumları için kapsamlı raporlama, analiz ve yönetim işlemlerini de destekleyebilir. Örneğin:
- Her dersin genel başarı oranının hesaplanması
- Bölümler bazında başarı oranlarının karşılaştırılması
- Öğrenci performansının izlenmesi ve geçmişe dönük analiz yapılması
- Veritabanı üzerinden dinamik raporlar oluşturulması ve veri görselleştirmesi
Bu senaryolar, eğitim verilerinin etkin yönetimi sayesinde, hem öğrencilerin bireysel başarısını hem de kurumun genel performansını artırma amacı taşımaktadır.
Genişletilebilirlik ve Gelecekteki İyileştirmeler
SQL veritabanı tasarımı, başlangıçta oldukça esnek bir yapı sunar. Proje ilerledikçe, yeni ihtiyaçlar ortaya çıkabilir. Örneğin, öğrenci davranış analizi, sınav tarihleri, öğretmen bilgileri gibi ek tablolar eklenebilir. Mevcut yapı, kolayca yeni tablo ve ilişkilere genişletilebilir.
Genişletilebilirlik açısından düşünülmesi gereken bazı noktalarda şunlardır:
- Yeni Sütunlar: Öğrencilerin ek bilgi talepleri ortaya çıktığında, tablolarınıza yeni sütunlar ekleyerek veri yapınızı güncelleyebilirsiniz.
- Ek Tablolar: Öğrencilerin ders dışı etkinlikleri, sınav takvimi veya danışmanlık bilgileri gibi verileri saklamak için yeni tablolar oluşturulabilir.
- Stored Procedures ve Fonksiyonlar: Oluşturulan veritabanı üzerinde daha hızlı ve optimize sorgular çalıştırabilmek için stored procedures ve user-defined functions kullanılabilir.
- Veritabanı Güvenliği: İlerleyen dönemlerde kullanıcı erişim haklarının ayarlanması ve denetim logları eklenmesi, veri ihlallerini önlemede önemli rol oynar.
Kaynaklar ve İleri Okumalar
SQL veritabanı tasarımı ve öğrenci not sistemleri hakkında daha detaylı bilgi edinmek isteyenler için aşağıdaki kaynaklar yararlı olabilir. Bu kaynaklar, hem temel SQL komutlarını hem de ileri düzey veritabanı yönetimi tekniklerini kapsamaktadır:
Referans Tablosu
- SQL Ders Notları - BT Defteri
- SQL Komutları - Ishakkutlu
- Okul Veritabanı Örnekleri - Hrzafer
- SQL Yapısal Sorgulama - OMU Avys
- Veri Tabanı Ders - Ali Osmangokcan
Önerilen İlgili Sorgular
Last updated March 11, 2025