4.9 KiB
4.9 KiB
🗄️ Veritabanı Kurulum Talimatları
MariaDB Kurulumu
Windows için MariaDB Kurulumu
-
MariaDB İndirme
- MariaDB resmi sitesinden Windows sürümünü indirin
- MSI installer'ı çalıştırın
-
Kurulum Adımları
- "Custom" kurulum seçin - Root şifresini belirleyin (güvenli bir şifre seçin) - Port: 3306 (varsayılan) - Character Set: UTF8 -
Servis Kontrolü
# Servisin çalışıp çalışmadığını kontrol edin net start MariaDB
MariaDB Veritabanı Oluşturma
-
MariaDB'ye Bağlanma
mysql -u root -p -
Veritabanı Oluşturma
-- HMarket veritabanını oluştur CREATE DATABASE hmarket CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Uygulama için kullanıcı oluştur CREATE USER 'hmarket_user'@'localhost' IDENTIFIED BY 'güvenli_şifre_buraya'; -- Kullanıcıya yetki ver GRANT ALL PRIVILEGES ON hmarket.* TO 'hmarket_user'@'localhost'; -- Yetkileri yenile FLUSH PRIVILEGES; -- Çıkış EXIT;
Backend Kurulumu
1. Bağımlılıkları Yükle
cd backend
npm install
2. Environment Dosyasını Ayarla
# .env.example dosyasını .env olarak kopyala
copy .env.example .env
# .env dosyasını düzenle ve veritabanı bilgilerini gir
3. .env Dosyası Örnek Konfigürasyonu
# Veritabanı bağlantısı
DATABASE_URL="mysql://hmarket_user:güvenli_şifre_buraya@localhost:3306/hmarket"
# JWT ayarları
JWT_SECRET=super-gizli-jwt-anahtari-buraya-yazin
JWT_EXPIRES_IN=7d
# Sunucu ayarları
PORT=3001
NODE_ENV=development
CORS_ORIGIN=http://localhost:3000
4. Prisma Kurulumu ve Veritabanı Migrasyonu
# Prisma client'ı oluştur
npm run db:generate
# Veritabanı şemasını uygula
npm run db:push
# Başlangıç verilerini yükle
npm run db:seed
5. Sunucuyu Başlat
# Geliştirme modu
npm run dev
# Üretim modu
npm start
Veritabanı Şeması Açıklaması
Ana Tablolar
1. users - Kullanıcılar
- Kullanıcı bilgileri, kimlik doğrulama
- Admin yetkileri
- Profil bilgileri
2. shopping_lists - Alışveriş Listeleri
- Liste bilgileri (isim, açıklama, renk)
- Sahiplik bilgisi
- Aktiflik durumu
3. list_members - Liste Üyeleri
- Çoklu kullanıcı desteği
- Rol tabanlı yetkilendirme (admin, member, viewer)
- Katılım tarihi
4. products - Ürünler
- Ürün bilgileri (isim, barkod, kategori)
- Marka bilgisi
- Resim desteği
5. list_items - Liste Öğeleri
- Listedeki ürünler
- Miktar, birim, fiyat bilgileri
- Satın alma durumu
- Öncelik seviyeleri
6. categories - Kategoriler
- Ürün kategorileri
- Icon ve renk desteği
- Sıralama
7. price_history - Fiyat Geçmişi
- Ürün fiyat takibi
- Mağaza ve konum bilgisi
- Zaman serisi verileri
8. notifications - Bildirimler
- Push notification desteği
- Bildirim türleri
- Okunma durumu
9. activities - Aktivite Logu
- Gerçek zamanlı güncellemeler için
- Kullanıcı aktiviteleri
- JSON veri desteği
İlişkiler
User (1) -----> (N) ShoppingList (sahiplik)
User (N) <----> (N) ShoppingList (üyelik - ListMember tablosu üzerinden)
ShoppingList (1) -----> (N) ListItem
Product (1) -----> (N) ListItem
Product (1) -----> (N) PriceHistory
Category (1) -----> (N) Product
User (1) -----> (N) Notification
User (1) -----> (N) Activity
ShoppingList (1) -----> (N) Activity
Performans Optimizasyonları
İndeksler
Prisma otomatik olarak aşağıdaki indeksleri oluşturur:
- Primary key'ler
- Unique constraint'ler
- Foreign key'ler
Ek Optimizasyonlar
-- Sık kullanılan sorgular için ek indeksler
CREATE INDEX idx_list_items_list_purchased ON list_items(listId, isPurchased);
CREATE INDEX idx_activities_list_created ON activities(listId, createdAt);
CREATE INDEX idx_price_history_product_created ON price_history(productId, createdAt);
Yedekleme
Otomatik Yedekleme Script'i
# Günlük yedekleme
mysqldump -u hmarket_user -p hmarket > backup_$(date +%Y%m%d).sql
# Haftalık tam yedekleme
mysqldump -u hmarket_user -p --all-databases > full_backup_$(date +%Y%m%d).sql
Sorun Giderme
Yaygın Hatalar
-
Bağlantı Hatası
Error: P1001: Can't reach database server- MariaDB servisinin çalıştığını kontrol edin
- Bağlantı bilgilerini doğrulayın
-
Yetki Hatası
Error: Access denied for user- Kullanıcı yetkilerini kontrol edin
- Şifrenin doğru olduğundan emin olun
-
Şema Hatası
Error: Table doesn't existnpm run db:pushkomutunu çalıştırın- Veritabanının doğru oluşturulduğunu kontrol edin
Log Kontrolü
# MariaDB loglarını kontrol et
tail -f /var/log/mysql/error.log
# Uygulama loglarını kontrol et
npm run dev