MySQL - [19] 關於個人負債為主題的資料庫設計

HOUHUILIN發表於2024-08-29

天生我材必有用,千金散盡還復來。

一、開發環境

序號 名稱 版本描述
1 JDK 1.8.0_401
2 資料庫 MySQL Community Server 8.0.37
3 資料庫客戶端 DBeaver 21.0.2.202104042040
4 開發工具 IntelliJ IDEA Community Edition 2023.3.4

二、資料庫設計

2.1、資料庫(credit_card_db)

CREATE DATABASE IF NOT EXISTS credit_card_db;
USE credit_card_db;

2.2、使用者表(Users)

儲存使用者的基本資訊

序號 欄位名稱 欄位型別 欄位約束 欄位註釋 備註
1 user_id INT PRIMARY KEY 使用者id 主鍵自增
2 username VARCHAR(255) NOT NULL 使用者名稱
3 password VARCHAR(255) NOT NULL 密碼
4 email VARCHAR(255) NOT NULL 郵箱
5 regiseter_time 註冊時間
6 login_time 登入時間
7 is_deleted 邏輯刪除標誌 0:刪除,1:未刪除
8
CREATE TABLE Users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL
);

2.3、賬戶表(Accounts)

儲存使用者的各個賬戶資訊,包括賬戶型別和名稱

序號 欄位名稱 欄位型別 欄位約束 欄位註釋 備註
1 account_id INT PRIMARY KEY 賬戶id
2 user_id INT 使用者id
3 account_type_id INT NOT NULL 賬戶型別id
4 account_name VARCHAR(255) 賬戶名稱
5
CREATE TABLE Accounts (
    account_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    account_type ENUM('信用卡', '花唄', '京東金條', '京東白條') NOT NULL,
    account_name VARCHAR(255),
    FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

2.4、額度表(Limits)

儲存每個賬戶的額度資訊,包括總額度、固定額度和臨時額度。

序號 欄位名稱 欄位型別 欄位約束 欄位註釋 備註
1 limit_id INT PRIMARY KEY 額度id AUTO_INCREMENT
2 account_id 賬戶id
3 total_limit 總額度
4 fixed_limit
5 temporary_limit 臨時額度
6 last_updated TIMESTAMP
7
CREATE TABLE Limits (
    limit_id INT AUTO_INCREMENT PRIMARY KEY,
    account_id INT,
    total_limit DECIMAL(15, 2) NOT NULL,
    fixed_limit DECIMAL(15, 2) NOT NULL,
    temporary_limit DECIMAL(15, 2),
    last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (account_id) REFERENCES Accounts(account_id)
);

2.5、交易表(Transactions)

記錄所有的交易資訊,包括消費、還款和分期。

序號 欄位名稱 欄位型別 欄位約束 欄位註釋 備註
1 transaction_id INT PRIMARY KEY
2 account_id INT 賬戶id
3 amount DECIMAL(15, 2) 交易金額
4 transaction_type INT 交易型別 1:消費;2:還款;3:消費
5 transaction_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP 交易日期
6 status INT DEFAULT 0 交易狀態 0:待處理,1:已完成
7
CREATE TABLE Transactions (
    transaction_id INT AUTO_INCREMENT PRIMARY KEY,
    account_id INT,
    amount DECIMAL(15, 2) NOT NULL,
    transaction_type ENUM('消費', '還款', '分期') NOT NULL,
    transaction_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status ENUM('已完成', '待處理') NOT NULL,
    FOREIGN KEY (account_id) REFERENCES Accounts(account_id)
);

2.6、賬單表(Bills)

序號 欄位名稱 欄位型別 欄位約束 欄位註釋 備註
1 user_id INT PRIMARY KEY 使用者id 主鍵自增
2 username VARCHAR(255) NOT NULL 使用者名稱
3 password VARCHAR(255) NOT NULL 密碼
4 email VARCHAR(255) NOT NULL 郵箱
5 regiseter_time 註冊時間
6 login_time 登入時間
7 is_deleted 邏輯刪除標誌 0:刪除,1:未刪除
8
9
CREATE TABLE Bills (
    bill_id INT AUTO_INCREMENT PRIMARY KEY,
    account_id INT,
    bill_date DATE NOT NULL,
    total_amount DECIMAL(15, 2) NOT NULL,
    amount_due DECIMAL(15, 2) NOT NULL,
    amount_paid DECIMAL(15, 2),
    status ENUM('未支付', '已支付') NOT NULL,
    FOREIGN KEY (account_id) REFERENCES Accounts(account_id)
);

2.7、分期表(Installments)

序號 欄位名稱 欄位型別 欄位約束 欄位註釋 備註
1 user_id INT PRIMARY KEY 使用者id 主鍵自增
2 username VARCHAR(255) NOT NULL 使用者名稱
3 password VARCHAR(255) NOT NULL 密碼
4 email VARCHAR(255) NOT NULL 郵箱
5 regiseter_time 註冊時間
6 login_time 登入時間
7 is_deleted 邏輯刪除標誌 0:刪除,1:未刪除
8
9

2.8、賬戶型別表(AccountsType)

序號 欄位名稱 欄位型別 欄位約束 欄位註釋 備註
1 account_type_id INT PRIMARY KEY 賬戶型別id
2 account_type VARCHAR(255) 賬戶型別
3

三、

— 業精於勤荒於嬉,行成於思毀於隨 —

相關文章