wiki:Design

Version 5 (modified by 163080, 2 weeks ago) ( diff )

--

Апликативен дизајн - Случаи на употреба и Сценарија за пристап до базата - SQL Погледи

Актери

  • Ненајавен корисник: Корисник кој што сѐ уште не е најавен во системот. Може да пристапи само до јавни информации (основни информации за компании и услуги).
  • Најавен корисник: Вработен кој се има најавено во системот, но има ограничени привилегии.
  • Администратор: Корисник со највисоки привилегии. Може да регистрира нови корисници, додава или модифицира компании, клиенти, или фактури.

Случаи на употреба

  1. Најава на корисник: Корисникот внесува корисничко име и лозинка за пристап до системот.
  2. Регистрација на нов вработен: Администратор регистрира нов вработен и му доделува улога (на пример: HR, финансии, програмер).
  3. Приказ на сите вработени во една компанија: Администратор или HR може да види листа на сите вработени во одредена компанија.
  4. Приказ на сите клиенти: Корисникот може да ги види сите клиенти регистрирани во системот.
  5. Детален приказ на клиент: Приказ на сите информации за одреден клиент (на пример: адреса, контакт лице, фактури).
  6. Креирање и уредување на фактура: Администратор или финансиски менаџер додава нова фактура или модифицира постоечка.
  7. Филтрирање на клиенти по град: Корисникот може да ги филтрира клиентите според локација.
  8. Приказ на сите фактури за одреден клиент: Корисникот ги прегледува сите фактури поврзани со избран клиент.
  9. Приказ на детали за одредена фактура: Детален приказ на содржината на фактурата (линиски ставки, износ, статус).

Најважни случаи на употреба

  1. Регистрација на нов вработен од страна на администратор
CREATE TABLE Employee (
    employee_id BIGSERIAL PRIMARY KEY,
    first_name VARCHAR(255) NOT NULL,
    last_name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    role VARCHAR(50) CHECK (role IN ('Admin', 'Manager', 'Accountant')) NOT NULL,
    date_of_employment DATE NOT NULL DEFAULT CURRENT_DATE
);
  1. Приказ на сите клиенти и деталите за одреден клиент

All

SELECT 
    client_id, 
    name, 
    contact_person, 
    email, 
    phone, 
    city, 
    country 
FROM 
    Client
ORDER BY 
    name;

{{{

Specific Client

{{{
SELECT 
    cl.*, 
    COUNT(i.invoice_id) AS total_invoices, 
    SUM(i.total_amount) AS total_amount_due
FROM 
    Client cl
LEFT JOIN 
    Invoice i ON cl.client_id = i.client_id AND i.status = 'Unpaid'
WHERE 
    cl.client_id = 5  -- Replace 5 with the specific client ID
GROUP BY 
    cl.client_id;

}}}


3. **Креирање и уредување на фактури**
All
{{{
SELECT 
    i.invoice_id, 
    c.name AS client_name, 
    i.issue_date, 
    i.due_date, 
    i.total_amount, 
    i.status
FROM 
    Invoice i
JOIN 
    Client c ON i.client_id = c.client_id
ORDER BY 
    i.issue_date DESC;

}}}


New Invoice
{{{
INSERT INTO Invoice (client_id, issue_date, due_date, total_amount)
VALUES 
(3, CURRENT_DATE, CURRENT_DATE + INTERVAL '30 days', 1250.00);

}}}

UPDATE Invoice 
{{{
SET 
    total_amount = 1350.00,
    due_date = '2025-03-01',
    status = 'Paid'
WHERE 
    invoice_id = 2; -- Replace 2 with the actual invoice ID

}}}


}}}
Note: See TracWiki for help on using the wiki.