-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
49 lines (44 loc) · 1.59 KB
/
schema.sql
File metadata and controls
49 lines (44 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
-- PostgreSQL schema for ilan platform
-- 1. USERS TABLE (Kullanıcılar)
CREATE TABLE IF NOT EXISTS Users (
UserID SERIAL PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE NOT NULL,
PhoneNumber VARCHAR(15),
RegistrationDate DATE DEFAULT CURRENT_DATE
);
-- 2. CATEGORIES TABLE (Kategoriler)
CREATE TABLE IF NOT EXISTS Categories (
CategoryID SERIAL PRIMARY KEY,
CategoryName VARCHAR(100) UNIQUE NOT NULL
);
-- 3. LISTINGS TABLE (İlanlar)
-- Foreign Keys (FK) ile Users ve Categories tablolarına bağlanır
CREATE TABLE IF NOT EXISTS Listings (
ListingID SERIAL PRIMARY KEY,
UserID INT REFERENCES Users(UserID) NOT NULL,
CategoryID INT REFERENCES Categories(CategoryID) NOT NULL,
Title VARCHAR(255) NOT NULL,
Description TEXT,
Price NUMERIC(15, 2) NOT NULL,
City VARCHAR(50) NOT NULL,
IsActive BOOLEAN DEFAULT TRUE,
PublicationDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 4. LISTINGPHOTOS TABLE (İlan Fotoğrafları)
CREATE TABLE IF NOT EXISTS ListingPhotos (
PhotoID SERIAL PRIMARY KEY,
ListingID INT REFERENCES Listings(ListingID) NOT NULL,
PhotoURL VARCHAR(255) NOT NULL
);
-- 5. FAVORITES TABLE (Favoriler)
-- Many-to-Many ilişkiyi yönetir
CREATE TABLE IF NOT EXISTS Favorites (
FavoriteID SERIAL PRIMARY KEY,
UserID INT REFERENCES Users(UserID) NOT NULL,
ListingID INT REFERENCES Listings(ListingID) NOT NULL,
FavoriteDate DATE DEFAULT CURRENT_DATE,
-- Bir kullanıcının aynı ilanı birden fazla favorilemesini engeller:
UNIQUE (UserID, ListingID)
);