Database
Database
DATA REQUIREMENTS
This database is designed to manage the relationships
among employees, departments, projects, and dependents
within a company.
Each Employee is identified by a unique SSN and has
attributes such as name, address, salary, and birth date.
Every employee works for one Department and may DATA REQUIREMENTS DEVAMI
optionally be supervised by another employee. Each
Department has a unique name and number, one
manager, and can have multiple locations. Every Project is
controlled by a specific department, has a location, and can
involve multiple employees.
The Works_on relationship records which employees work
on which projects and the number of hours they spend.
The Dependent entity stores information about each → Total participation (her çalışan bu alt türlerden
employee’s dependents, such as their name, birth date, sex, birine ait olmalıdır)
and relationship to the employee. The Supervision
relationship represents the hierarchy between managers 2. MANAGER (Yönetici) Sub-Entity
and subordinates.
Manager_ID = Employee_ID
Overall, this structure provides a complete representation of
a company’s organizational hierarchy, projects, and Ek öznitelikler: Bonus, Level.
employee-dependent relationships.
Her yönetici en az bir departmandan sorumludur.
→ MANAGER ↔ DEPARTMENT arasında 1-to-M relationship
(Manages)
→ Total participation by MANAGER, Partial by
Yeni Requirement Ekleme DEPARTMENT
“Her çalışanın şirkette çalıştığı pozisyon (Job Position) Her yönetici ayrıca bazı çalışanları denetleyebilir.
bilgisi tutulmalıdır. → Bu durum recursive relationship (Supervises) ile
Her pozisyonun bir adı (Title), bir maaş aralığı modellenir:Bir manager, bir veya birden fazla employee’ı
(Min_Salary–Max_Salary) ve departmanla ilişkisi [Link] employee, sıfır veya bir manager
bulunmalıdır. tarafından denetlenebilir.
Bir pozisyonda birden fazla çalışan olabilir.”
3. ENGINEER (Mühendis) Sub-Entity
İlişki:Her departman, birden fazla job tanımlayabilir.
Engineer_ID = Employee_ID
→ 1:N (DEPARTMENT → JOB)
Ek öznitelikler: Skill_Set, Certification
Her çalışan, bir job’da çalışır.
→ N:1 (EMPLOYEE → JOB) Her mühendis bir veya daha fazla projede ve
departmanda çalışabilir.
Bu durumda department atamaları sadece job üzerinden
→ ENGINEER ↔ PROJECT arasında M:N relationship
yönetilecekse Works for ilişkisini kaldı[Link]ğer türlü
(Works_On)
Works for ilişkisinin kalması gerekir bu durumda tasarımı iyi
ayarlamak lazım. Her mühendis en az bir projede yer almalıdır (Total
participation by ENGINEER).Her proje mühendis
Bir employee kaydı eklersek nerelere kesinlikle kayıt
içermek zorunda değildir (Partial by PROJECT)
eklememiz gerekir?
4. TECHNICIAN (Teknisyen) Sub-Entity
Öncelikle Employee tablosuna eklememiz gerekir.
Technician_ID = Employee_ID
Eğer çalışan kişinin çalışacağı departman halihazırda
mevcutsa yeni bir departman kaydı eklememize gerek yok Ek öznitelikler: Expertise_Area, Experience_Years
yeni bir departman açılacaksa departman kaydı eklememiz
gerekir. Teknisyenler yalnızca projelerde çalışabilir.
→ TECHNICIAN ↔ PROJECT arasında M:N relationship
Aynı şekilde yeni çalışan halihazırda bir projeye atanıyorsa (Assigned_To_Project)
proje kaydı eklememiz gerekmez. → Teknisyenlerin department ile doğrudan ilişkisi
yoktur, sadece projeler aracılığıyla görev alırlar.
Dependents tablosuna kayıt ekleme mecbur değildir ailesi
olmayabilir. 5. DEPARTMENT (Departman) Entity
Works on tablosuna bir kayıt eklememiz gerekir burda Dept_ID primary key.Öznitelikler: Dept_Name, Location
relationship gibi gözüksede attributea sahip olduğu için bir
tablodur aslında ve employee ve proje arasında çift çizgi Her departman bir manager tarafından yönetilir.
yani mecburiyet olduğu için çalışanın bir projede çalışması → Total participation by DEPARTMENT and MANAGER
[Link] yüzden Works on tablosuna çalışanın hangi
projede kaç saat çalıştığı eklenmelidir. Her departman bir veya daha fazla çalışana sahip
olabilir.
ERDAN EER ÇEVİRMEK İÇİN YENİ DATA
REQUIREMENTLAR Bazı projeler birden fazla departman tarafından
yürütülebilir.
1. EMPLOYEE (Çalışan) Entity
PROJECT ile DEPARTMENT arasında M:N
Her çalışanın benzersiz bir Employee_ID’si vardır (Primary
Key).Öznitelikler: Name, Address, Salary, Hire_Date 6. PROJECT (Proje) Entity
Her çalışan bir veya birden fazla departmanda görev alabilir. Project_ID primary key.
→ Bu durum M:N relationship (Assigned_To) ile temsil
Öznitelikler: Project_Name, Budget, Start_Date,
edilir.
End_Date
→ Bir çalışan en az bir departmanda görev almalıdır
(Total participation by Employee). Her proje bir veya daha fazla departman tarafından
Çalışanlar, specialization (özelleştirme) yoluyla alt Her proje bir proje sorumlusuna sahip olabilir.
türlere ayrılır: → PROJECT ↔ EMPLOYEE arasında 1-to-1 relationship
(Project_Leader)
Manager, Engineer, Technician
→ Disjoint specialization (bir çalışan yalnızca bir alt Proje sorumlusu herhangi bir çalışan olabilir, yönetici
türdedir) olmak zorunda değildir.
Partial participation by PROJECT, Partial by arasında Works for ilişkisi yok.
EMPLOYEE
Relational model
discovery/ER model discovery
MANAGES(SSN, DNUMBER)
Step 2:
FOREIGN KEY (SSN) REFERENCES EMPLOYEE(SSN)
Zayıf varlığın tüm basit öznitelikleri (veya bileşik
özniteliklerin basit bileşenleri) eklenir. FOREIGN KEY (DNUMBER) REFERENCES
Ayrıca, sahip varlık (owner entity) olan güçlü varlığın DEPARTMENT(DNUMBER)
primary key’i, bu tabloya foreign key olarak eklenir.
Step 4:
Bu tablonun primary key’i,
Sahip varlığın primary key’i + zayıf varlığın partial Bir ER diyagramında iki varlık arasında 1:N ilişkisi
key’inden oluşur. varsa (örneğin bir departmanda birçok çalışan vardır),
bu durumda ilişki “çok” tarafında gösterilir.
DEPENDENT(ESSN, DEPENDENT_NAME, BIRTHDATE,
RELATIONSHIP) Adımlar:
PRIMARY KEY (ESSN, DEPENDENT_NAME) 1. “N tarafındaki” (çok tarafındaki) varlığı temsil
FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN) eden tabloyu bul.
(örneğin: EMPLOYEE çok taraf)
Step 3:
2. “1 tarafındaki” varlığın (örneğin
1. Yöntem: Foreign Key (2 tablo DEPARTMENT) birincil anahtarını (primary
kullanılarak) key),
“çok tarafındaki” tabloya foreign key (yabancı
Bir tablo (örneğin S) seçilir ve diğer tablonun
anahtar) olarak ekle.
(T) primary key’i, S tablosuna foreign key olarak
eklenir. 3. Eğer ilişkinin kendi basit nitelikleri (örneğin
Eğer ilişkiye tam katılım (total participation) gösteren tarih, ücret gibi) varsa,
bir varlık varsa, foreign key o varlık tablosuna bunları da çok tarafındaki tabloya ekle.
eklenmelidir.
Örnek:
Örnek:
MANAGES adlı 1:1 ilişkisinde, her DEPARTMENT bir İlişki: WORKS_FOR (EMPLOYEE → DEPARTMENT)
MANAGER tarafından yönetilir (ve her departmanın
DEPARTMENT tablosunun primary key’i:
mutlaka bir yöneticisi vardır → total participation).
DNUMBER
EMPLOYEE tablosuna eklenir: DNO (foreign DEPT_LOCATIONS(DNUMBER, DLOCATION)
key olarak)
Yani: Primary key: {DNUMBER, DLOCATION}
Step 6:
Açıklama:
Adımlar:
2. Bu tabloya:
Örnek:
Meta-data table
Attribute türleri
Simple (Basit): Tek bir atomik değeri vardır.
Örnek: SSN, Cinsiyet.
CARDINALITY
EER MODELLERİ
COVERAGE
4. PK’yi referans alan sütunları listele → bunlar Relationship: Entity’ler arası bağlantı.
FK olur. Örnek: Enrollment(Student, Course)
Role: Entity’nin relationship içindeki
5. Tüm tablolar tarandıktan sonra FK listesi
hazır. fonksiyonu. Örnek: Employee is
“Manager” in Manages
GENEL TERİMLER Weak Entity: Kendi başına benzersiz
olmayan entity. Örnek: Dependent →
Database Concepts Employee
Database: Düzenli veri koleksiyonu. Örnek: Higher Degree Relationship: 2’den fazla
Üniversite öğrenci ve ders bilgileri entity içeren ilişki. Örnek:
DBMS: Veritabanını yönetmek için yazılım. Project(Employee, Department, Client)
Örnek: MySQL, PostgreSQL
Schema: Veritabanının yapısı, tablolar ve
ilişkiler. Örnek: Student(StudentID, Name) ER & EER Concepts
Instance: Belirli zamandaki veritabanı
ER Diagram: Entity ve relationship
verisi. Örnek: Bugünkü kayıtlı öğrenciler
diyagramı
State: Veritabanının güncel durumu
EER: Gelişmiş ER modeli
Three-Schema Architecture: Internal
Subclass/Superclass: Alt ve üst entity tipi
(fiziksel), Conceptual (mantıksal), External
Specialization/Generalization: Alt sınıf
(kullanıcı görünümü)
oluşturma/üst sınıfa bağlama
Data Independence: Yapı değişse
Category/Union Types: Entity birden fazla
uygulama etkilenmez
üst türle bağlanabilir
Logical Independence: Mantıksal değişiklik
Attribute/Relationship Inheritance: Alt
uygulamayı etkilemez
entity üst entity’den özellik alır
Physical Independence: Fiziksel değişiklik
Constraints on
uygulamayı etkilemez
Specialization/Generalization: Kurallar
Entity & Attribute Ontology/Knowledge Representation:
Kavram ve ilişkilerin formel tanımı
Entity: Gerçek dünya nesnesi. Örnek:
Student, Course Design & Normalization
Attribute: Entity’nin özelliği. Örnek: Name,
Normalization: Tekrar ve tutarsızlığı
Age
azaltma (1NF, 2NF, 3NF)
Primary Key: Benzersiz tanımlayıcı. Örnek:
Denormalization: Performans için bilinçli
StudentID
veri tekrarı
Foreign Key: Tablolar arası ilişki. Örnek:
[Link] → [Link] Transactions & ACID
Unique: Tekrarlanan değer engeli. Örnek:
CourseCode Transaction: Veritabanı işlemi
Not Null: Boş değer olamaz Atomicity: İşlem tamamen başarılı veya
Check: Alan koşulunu kontrol eder. Örnek: başarısız
ECTSCredits 1–10 Consistency: Veri tutarlı kalmalı
Default: Varsayılan değer. Örnek: Isolation: İşlemler birbirini etkilemez
Semester=1 Durability: İşlem tamamlandıktan sonra
Composite Key: Birden fazla alan veri kalıcı
birleşerek benzersizlik sağlar. Örnek: DBMS Features
CourseID+Semester
Derived Attribute: Hesaplanan değer.
DDL: Tablo ve yapı tanımı
DML: Veri ekleme/silme/güncelleme
DCL: Yetkilendirme, izin
Index: Arama hızını artırır
Database Utilities: Yedekleme, geri
yükleme, veri taşıma
Architecture
History