Middle
Hozzon létre egy fizikai adatmodellt a feladatkezelő rendszerhez. Emelje ki az összes fizikai táblát a primer (PK) és idegen (FK) kulcsok megjelölésével. A modellnek lefednie kell az összes korábban azonosított felhasználási esetet.
sobes.tech MI
Válasz az MI-től
A feladatkezelő rendszerhez az alábbi fő táblákat lehet kiemelni:
- Felhasználók — a rendszer felhasználói
- PK: user_id
- Mezők: username, email, password_hash, created_at
- Feladatok — feladatok
- PK: task_id
- FK: assigned_to (felhasználói azonosító a Felhasználók táblából) — a felhasználó, akinek a feladat van kijelölve
- FK: created_by (felhasználói azonosító a Felhasználók táblából) — a felhasználó, aki létrehozta a feladatot
- Mezők: title, description, status, priority, due_date, created_at, updated_at
- Projektek — projektek, amelyek csoportosítják a feladatokat
- PK: project_id
- FK: owner_id (felhasználói azonosító a Felhasználók táblából) — a projekt tulajdonosa
- Mezők: name, description, created_at
- Feladat_Hozzászólások — hozzászólások a feladatokhoz
- PK: comment_id
- FK: task_id (a Feladatokból)
- FK: author_id (felhasználói azonosító a Felhasználók táblából)
- Mezők: content, created_at
- Feladat_Történet — a feladatok változásainak története
- PK: history_id
- FK: task_id (a Feladatokból)
- FK: changed_by (felhasználói azonosító a Felhasználók táblából)
- Mezők: change_type, old_value, new_value, changed_at
- Projekt_Tagok — a projekt résztvevői
- PK: (project_id, user_id)
- FK: project_id (a Projektekből)
- FK: user_id (a Felhasználók táblából)
- Mezők: role
Ez a modell lefedi a főbb felhasználási eseteket:
- Feladatok létrehozása és kijelölése
- Projektek és résztvevők kezelése
- Feladatok hozzászólásai
- A változások történetének nyomon követése
Példa a Feladatok tábla definíciójára:
CREATE TABLE Tasks (
task_id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
status VARCHAR(50) NOT NULL,
priority INT,
due_date DATE,
assigned_to INT REFERENCES Users(user_id),
created_by INT REFERENCES Users(user_id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP
);