Sobes.tech
Middle

Σχεδιάστε ένα φυσικό μοντέλο δεδομένων για το σύστημα διαχείρισης εργασιών. Επισημάνετε όλους τους φυσικούς πίνακες με την ένδειξη των πρωτεύοντων (PK) και ξένων (FK) κλειδιών. Το μοντέλο πρέπει να καλύπτει όλους τους περιπτώσεις χρήσης που έχετε εντοπίσει προηγουμένως.

sobes.tech AI

Απάντηση από AI

Για το σύστημα διαχείρισης εργασιών, μπορούν να διακριθούν οι ακόλουθοι βασικοί πίνακες:

  1. Χρήστες — χρήστες του συστήματος
  • PK: user_id
  • Πεδία: username, email, password_hash, created_at
  1. Εργασίες — εργασίες
  • PK: task_id
  • FK: assigned_to (user_id από τους Χρήστες) — χρήστης στον οποίο έχει ανατεθεί η εργασία
  • FK: created_by (user_id από τους Χρήστες) — χρήστης που δημιούργησε την εργασία
  • Πεδία: title, description, status, priority, due_date, created_at, updated_at
  1. Έργα — έργα που ομαδοποιούν εργασίες
  • PK: project_id
  • FK: owner_id (user_id από τους Χρήστες) — ιδιοκτήτης του έργου
  • Πεδία: name, description, created_at
  1. Σχόλια_Εργασίας — σχόλια στις εργασίες
  • PK: comment_id
  • FK: task_id (από τις Εργασίες)
  • FK: author_id (user_id από τους Χρήστες)
  • Πεδία: content, created_at
  1. Ιστορικό_Εργασίας — ιστορικό αλλαγών στις εργασίες
  • PK: history_id
  • FK: task_id (από τις Εργασίες)
  • FK: changed_by (user_id από τους Χρήστες)
  • Πεδία: change_type, old_value, new_value, changed_at
  1. Μέλη_Έργου — μέλη του έργου
  • PK: (project_id, user_id)
  • FK: project_id (από τα Έργα)
  • FK: user_id (από τους Χρήστες)
  • Πεδία: role

Αυτό το μοντέλο καλύπτει τις βασικές περιπτώσεις χρήσης:

  • Δημιουργία και ανάθεση εργασιών
  • Διαχείριση έργων και μελών
  • Σχολιασμός εργασιών
  • Παρακολούθηση ιστορικού αλλαγών

Παράδειγμα ορισμού πίνακα Εργασιών:

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
);