PROJECTCODE
Proje grup üyeleri:
Arda Karaçal 231101047
Savaş Solak 231101025
Efe Selim Sürekli 231101030
Proje Konusu:
Bireyler, girişimler ve işletmeler için kullanıma hazır, yüksek kaliteli yazılım çözümleri sunan bir web sitesi oluşturmak.
Domain Tanımı:
Bu proje, bir yazılım pazar yeri (marketplace) platformu olarak tasarlanmıştır. Platformun, Geliştiriciler ve Müşteriler olmak üzere iki temel kullanıcı türü olacaktır:
Geliştiriciler (Sellers), sisteme kaydolup, kendi geliştirdikleri projeleri (ürünleri) platforma yükleyebilen, fiyat belirleyebilen ve satabilen kullanıcılarken; Müşteriler (Buyers) platformdaki projeleri inceleyen, arayan ve satın alabilen kullanıcılardır.
Sistem, geliştiricilerin bir "yetenek havuzu" oluşturmasını ve müşterilerin bu havuzdan projeler satın almasını sağlar. Veri tabanı, bu kullanıcıları, projeleri, projelerde kullanılan teknolojileri ve bu projelerin alım-satım işlemlerini yönetmek için tasarlanmıştır.
Veri tabanının tasarım detayları:
Aşağıda, normalizasyon (özellikle Many-to-Many ilişkilerin çözülmesi) ve ilişkisel bütünlük ilkelerine göre tasarlanmış veri tabanı yapısı sunulmuştur:
- Proje Tabloları
Kullanici_Turu (User_Type): Kullanıcı rollerini (Müşteri, Geliştirici, Admin vb.) tutar.
Sütunlar:
Id (PK, int): Türün benzersiz kimliği.
Tur_Adi (varchar): Türün adı (örn: "Müşteri", "Geliştirici").
Kullanici (User): Sisteme kayıt olan tüm kullanıcıları tutar.
Sütunlar:
Id (PK, int): Kullanıcının benzersiz kimliği.
Kullanici_Adi (varchar): Kullanıcının giriş adı.
Parola_Hash (varchar): Parolanın güvenli hashlenmiş hali.
Mail_Adresi (varchar): Kullanıcının e-posta adresi.
Kullanici_Turu_Id (FK, int): Kullanici_Turu.Id tablosuna bağlanan yabancı anahtar.
Teknoloji (Technology): Projelerde kullanılan programlama dillerini veya araçları tutar (örn: 'Python', 'Java', 'React').
Sütunlar:
Id (PK, int): Teknolojinin benzersiz kimliği.
Teknoloji_Adi (varchar): Programlama dilinin/aracın adı.
Proje (Project): Geliştiriciler tarafından satışa sunulan yazılım projelerini tutar.
Sütunlar:
Id (PK, int): Projenin benzersiz kimliği.
Isim (varchar): Projenin adı.
Konu (text): Projenin detaylı açıklaması.
Fiyat (decimal): Projenin satış fiyatı.
Gelistirici_Id (FK, int): Projeyi oluşturan/satan kullanıcının Kullanici.Id'si.
Proje_Teknoloji (Project_Technology Junction Table): Proje ve Teknoloji arasındaki Many-to-Many ilişkiyi çözen ara tablodur.
Sütunlar:
Id (PK, int): Bu ilişkinin benzersiz kimliği.
Proje_Id (FK, int): Proje.Id'ye bağlanan yabancı anahtar.
Teknoloji_Id (FK, int): Teknoloji.Id'ye bağlanan yabancı anahtar.
Islem (Transaction): Başarıyla tamamlanan alım-satım işlemlerini kaydeder.
Sütunlar:
Id (PK, int): İşlemin benzersiz kimliği (eski Transaction Id).
Alan_Kullanici_Id (FK, int): Projeyi satın alan müşterinin Kullanici.Id'si.
Proje_Id (FK, int): Satın alınan projenin Proje.Id'si (eski Alınan Ürün).
Islem_Tarihi (datetime): İşlemin yapıldığı tarih ve saat.
Tutar (decimal): İşlem anındaki satış tutarı (fiyat değişebileceği için Proje tablosundan buraya da kaydedilir).
Not: PK = Primary Key (Birincil Anahtar), FK = Foreign Key (Yabancı Anahtar)
- ER Diyagramı Taslağı:
Kullanici_Turu --> Kullanici (One-to-Many): Bir kullanıcı türü (örn: 'Geliştirici') birden fazla kullanıcıya sahip olabilir.
Kullanici (Geliştirici) --> Proje (One-to-Many): Bir geliştirici birden fazla proje oluşturabilir/satabilir.
Kullanici (Müşteri) --> Islem (One-to-Many): Bir müşteri birden fazla işlem (satın alma) yapabilir.
Proje --> Islem (One-to-Many): Bir proje, birden fazla işlemde satılabilir.
Proje --> Proje_Technology --> Technology (Many-to-Many): Bir projenin birden fazla dili olabilir (örn: Python, React) ve bir teknoloji birden fazla projede kullanılabilir. (Proje_Teknoloji ara tablosu)
Menüler ve Fonksiyonlar:
Menüler: Ana Sayfa, Proje Kategorileri (Teknolojilere göre filtrelenebilir), Ürünler, Hakkımızda Sayfası.
Fonksiyonlar:
-
Ürünlerin / Popüler Projelerin Sıralanması: İşlem tablosu Proje_Id'ye göre sayılarak veya Proje tablosu fiyata göre sıralanarak yapılabilir.
-
Giriş Yapma / Kayıt Olma: Kullanıcı tablosu kullanılarak yönetilir.
-
Proje Al / Sat: Bir Geliştirici proje tablosuna kayıt ekler (Satma). Bir Müşteri ise işlem tablosuna kayıt oluşturur (Alma).
Not: Veri Tabanının tasarımı, menüler ve fonksiyonlar proje ilerledikçe değişebilir.