wiki:DatabaseCreation

Version 8 (modified by 231108, 4 hours ago) ( diff )

--

Фаза 2Б - Полнење на табелите и погледи

Полнење на табелите

Податоците беа генерирани со комбинација на CSV датотеки за референтни податоци и SQL скрипта која користи generate_series() за големите табели. Табелите се полнети во серии од 500.000 редови за да се избегнат проблеми со дисковен простор на серверот. Генерираните податоци се што е можно пореалистични — имиња од македонски именски пул, реални адреси, валидни формати за е-пошта и телефон.

Број на Редови по Табела

Табела Број на Редови
User 10,098,000
Studies 20,647,814
Diploma 10,323,907
User_Skill 21,746,369
Employment 21,971,721
SalaryHistory 21,971,721
Position 3,000,000
Promotion 7,323,907
Internship 1,464,782
AdditionalCourse_User 3,661,954
Startup 30
Founder 116,196
Event 3,000
Event_User 107,969
Award 1,009,800
University 10
Faculty 15
StudyProgram 150
Industry 44
Company 5,000
Skill 65
AdditionalCourse 20

Погледи (Views)

v_companies_by_industry

Прикажува листа на компании збогатена со информации за индустријата и секторот на кој припаѓаат. Се користи при пребарување и филтрирање на компании по индустрија, на пример кога корисникот бара вработување во одреден сектор или кога системот генерира статистики за застапеноста на alumni по индустрии.

CREATE OR REPLACE VIEW public.v_companies_by_industry AS
SELECT c.company_id,
       c.name AS company_name,
       c.number_employees,
       i.industry_name,
       i.sector_category
FROM company c
JOIN industry i ON i.industry_id = c.industry_id;

v_employment_history

Прикажува целосна историја на вработувања на корисниците — компанија, период, тип на вработување и дали е тековно. Се користи при приказ на работното CV на alumni, каде апликацијата треба да прикаже хронолошки список на сите претходни и тековни вработувања.

CREATE OR REPLACE VIEW public.v_employment_history AS
SELECT u.user_id,
       u.first_name,
       u.last_name,
       c.name AS company_name,
       e.start_date,
       e.end_date,
       e.employment_type,
       e.is_current
FROM employment e
JOIN "User" u ON u.user_id = e.user_id
JOIN company c ON c.company_id = e.company_id;

v_event_participants

Прикажува листа на учесници за секој настан, заедно со нивната улога. Се користи при управување со настани — организаторите можат да го видат списокот на пријавени alumni, а корисниците можат да ги прегледаат настаните на кои присуствувале.

CREATE OR REPLACE VIEW public.v_event_participants AS
SELECT e.event_id,
       e.name AS event_name,
       e.date,
       u.user_id,
       u.first_name,
       u.last_name,
       eu.role
FROM event e
JOIN event_user eu ON eu.event_id = e.event_id
JOIN "User" u ON u.user_id = eu.user_id;

v_faculty_programs

Прикажува студиски програми збогатени со информации за факултетот и универзитетот на кој припаѓаат. Се користи при приказ на каталогот на студиски програми во апликацијата, каде нов корисник може да ја избере програмата на која студирал или студира.

CREATE OR REPLACE VIEW public.v_faculty_programs AS
SELECT f.faculty_id,
       f.name AS faculty_name,
       u.name AS university_name,
       sp.study_program_id,
       sp.program_name,
       sp.degree_type,
       sp.duration_years
FROM faculty f
JOIN university u ON u.university_id = f.university_id
JOIN studyprogram sp ON sp.faculty_id = f.faculty_id;

v_startups_with_founders

Прикажува стартапи заедно со нивните основачи (корисниците кои ги основале). Се користи при приказ на претприемачката активност на alumni — корисниците можат да ги прегледаат стартапите на своите колеги или да го промовираат сопствениот стартап.

CREATE OR REPLACE VIEW public.v_startups_with_founders AS
SELECT st.startup_id,
       st.name AS startup_name,
       st.status,
       u.user_id,
       u.first_name,
       u.last_name
FROM startup st
JOIN founder f ON f.startup_id = st.startup_id
JOIN "User" u ON u.user_id = f.user_id;

v_student_academic_profile

Прикажува целосен академски профил на корисник — студиска програма, факултет, универзитет, период и статус на студии. Се користи при приказ на академскиот дел од профилот на alumni, каде другите корисници или работодавачи можат да ги видат образовните квалификации.

CREATE OR REPLACE VIEW public.v_student_academic_profile AS
SELECT u.user_id,
       u.first_name,
       u.last_name,
       sp.program_name,
       f.name AS faculty_name,
       uni.name AS university_name,
       s.start_date,
       s.end_date,
       s.status
FROM "User" u
JOIN studies s ON s.user_id = u.user_id
JOIN studyprogram sp ON sp.study_program_id = s.study_program_id
JOIN faculty f ON f.faculty_id = sp.faculty_id
JOIN university uni ON uni.university_id = f.university_id;

v_students_per_program

Прикажува вкупниот број на студенти запишани на секоја студиска програма. Се користи за административни извештаи и статистики — администраторите можат да ја следат популарноста на студиските програми и бројот на alumni по програма.

CREATE OR REPLACE VIEW public.v_students_per_program AS
SELECT sp.study_program_id,
       sp.program_name,
       COUNT(s.user_id) AS total_students
FROM studyprogram sp
LEFT JOIN studies s ON s.study_program_id = sp.study_program_id
GROUP BY sp.study_program_id, sp.program_name;

v_user_skills

Прикажува листа на вештини (ime и тип) кои ги поседува секој корисник. Се користи при приказ на профилот на alumni и при пребарување на кандидати по специфични вештини — на пример работодавач бара alumni со Python и Machine Learning вештини.

CREATE OR REPLACE VIEW public.v_user_skills AS
SELECT u.user_id,
       u.first_name,
       u.last_name,
       s.skill_name,
       s.type
FROM "User" u
JOIN user_skill us ON us.user_id = u.user_id
JOIN skill s ON s.skill_id = us.skill_id;

v_user_full_career

Прикажува целосен преглед на кариерата на корисник — студии, вработувања и компании на едно место. Се користи при генерирање на целосен профил на alumni за работодавачи, каде на еден поглед се гледаат и образованието и работното искуство на кандидатот.

CREATE OR REPLACE VIEW public.v_user_full_career AS
SELECT u.user_id,
       u.first_name,
       u.last_name,
       sp.program_name,
       s.status AS study_status,
       e.start_date AS employment_start,
       e.end_date AS employment_end,
       e.employment_type,
       c.name AS company_name
FROM "User" u
LEFT JOIN studies s ON s.user_id = u.user_id
LEFT JOIN studyprogram sp ON sp.study_program_id = s.study_program_id
LEFT JOIN employment e ON e.user_id = u.user_id
LEFT JOIN company c ON c.company_id = e.company_id;
Note: See TracWiki for help on using the wiki.