ERD - boostcampwm2023/web04-ALGOCEAN GitHub Wiki

image

CREATE TABLE Users (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    UserId VARCHAR(255) UNIQUE,
    Password VARCHAR(255),
    Nickname VARCHAR(255),
    ProfileImage VARCHAR(255),
    Points INT DEFAULT 0,
    IsAdopted BOOLEAN DEFAULT FALSE,
    CreatedAt DATETIME,
    UpdatedAt DATETIME,
    DeletedAt DATETIME,
);
CREATE TABLE Questions (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    UserId INT,
    Title VARCHAR(255),
    Content TEXT,
    Tag VARCHAR(255),
		ProgrammingLanguage VARCHAR(255),
    OriginalLink VARCHAR(255),
    IsAdopted BOOLEAN DEFAULT FALSE,
    CreatedAt DATETIME,
    UpdatedAt DATETIME,
    ViewCount INT DEFAULT 0,
		LikeCount INT DEFAULT 0,
    DeletedAt DATETIME,
    FOREIGN KEY (UserId) REFERENCES Users(Id)
);

CREATE TABLE Answers (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    UserId INT,
    QuestionId INT,
    Content TEXT,
    VideoLink VARCHAR(255),
    IsAdopted BOOLEAN DEFAULT FALSE,
    CreatedAt DATETIME,
    UpdatedAt DATETIME,
    DeletedAt DATETIME,
		LikeCount INT DEFAULT 0,
    FOREIGN KEY (UserId) REFERENCES Users(Id),
    FOREIGN KEY (QuestionId) REFERENCES Questions(Id)
);


CREATE TABLE Items (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    Name VARCHAR(255),
    Description TEXT,
    Price INT,
		Quantity INT
);

CREATE TABLE User_Items (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    UserId INT,
    ItemId INT,
    PurchaseDate DATETIME,
    FOREIGN KEY (UserId) REFERENCES Users(Id),
    FOREIGN KEY (ItemId) REFERENCES Items(Id)
);

CREATE TABLE Likes (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    UserId INT,
    LikedEntityId INT,
    LikedEntityType VARCHAR(255),
    IsLiked BOOLEAN DEFAULT FALSE,
    FOREIGN KEY (UserId) REFERENCES Users(Id)
);

CREATE TABLE Point_History (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    UserId INT,
    PointChange INT,
    Reason VARCHAR(255),
    ChangeDate DATETIME,
    FOREIGN KEY (UserId) REFERENCES Users(Id)
);

CREATE TABLE Delete_History (
    Id INT PRIMARY KEY AUTO_INCREMENT,
    OriginalTableName VARCHAR(255),
    OriginalDataId INT,
    DeleteDate DATETIME,
    DeletedBy INT,
    FOREIGN KEY (DeletedBy) REFERENCES Users(Id)
);