| | 1 | = Креирање на База на Податоци = |
| | 2 | |
| | 3 | == Структура на Базата == |
| | 4 | Базата се состои од 22 табели организирани во следните логички групи: |
| | 5 | |
| | 6 | === Образование === |
| | 7 | * '''University''' - Складира информации за универзитети (име, адреса, веб страна, контакт) |
| | 8 | * '''Faculty''' - Факултети кои припаѓаат на универзитети |
| | 9 | * '''!StudyProgram''' - Студиски програми понудени од факултети (bachelor, master, phd) |
| | 10 | * '''Studies''' - Следи кои корисници се запишани на кои студиски програми |
| | 11 | * '''Diploma''' - Записи за дипломирање на завршени студии |
| | 12 | |
| | 13 | === Корисници === |
| | 14 | * '''User''' - Главна табела за корисници со лични информации (име, датум на раѓање, просек, контакт) |
| | 15 | * '''Skill''' - Достапни вештини со типови (технички, меки, јазици, итн.) |
| | 16 | * '''User_Skill''' - Врска many-to-many помеѓу корисници и вештини |
| | 17 | |
| | 18 | === Вработување === |
| | 19 | * '''Industry''' - Категории на индустрии |
| | 20 | * '''Company''' - Компании со број на вработени и индустрија |
| | 21 | * '''Employment''' - Записи за вработување кои ги поврзуваат корисниците со компании |
| | 22 | * '''Position''' - Работни позиции за време на вработувањето |
| | 23 | * '''Promotion''' - Записи за унапредување со стари/нови нивоа |
| | 24 | * '''!SalaryHistory''' - Промени на плата со текот на времето |
| | 25 | |
| | 26 | === Останати Активности === |
| | 27 | * '''Internship''' - Записи за пракси кои ги поврзуваат корисниците со компании |
| | 28 | * '''!AdditionalCourse''' - Курсеви за професионален развој |
| | 29 | * '''!AdditionalCourse_User''' - Записи за завршени курсеви по корисник |
| | 30 | * '''Startup''' - Стартап компании |
| | 31 | * '''Founder''' - Ги поврзува корисниците со стартапите кои ги основале |
| | 32 | * '''Event''' - Професионални настани организирани од компании |
| | 33 | * '''Event_User''' - Записи за присуство на настани |
| | 34 | * '''Award''' - Награди добиени од корисници |
| | 35 | |
| | 36 | == Ограничувања == |
| | 37 | Структурата ги наметнува следните правила за интегритет на податоците: |
| | 38 | |
| | 39 | * Валидација на формат на е-пошта преку regex на табелите University, Faculty и User |
| | 40 | * Валидација на формат на телефон (6-15 цифри, опционален + префикс) |
| | 41 | * Валидација на формат на веб страна (мора да започнува со http:// или https://) |
| | 42 | * Просек опсег 5-10 |
| | 43 | * Тип на диплома ограничен на: bachelor, master, phd |
| | 44 | * Тип на вработување ограничен на: full-time, part-time, contract, internship |
| | 45 | * Ограничувања за статус на студии/вработување |
| | 46 | * Валидација на опсег на датуми (end_date >= start_date) |
| | 47 | * Каскадни ажурирања и ограничени бришења на foreign keys |
| | 48 | |
| | 49 | == Генерирање на Податоци == |
| | 50 | Податоците беа генерирани со комбинација на: |
| | 51 | * '''CSV датотеки''' - 14 CSV датотеки кои содржат референтни податоци (имиња, градови, универзитети, факултети, студиски програми, индустрии, компании, вештини, работни позиции, настани, курсеви, стартапи, награди) |
| | 52 | * '''SQL скрипта за генерирање''' - Големите табели се генерирани со користење на PostgreSQL функцијата `generate_series()` со детерминистички формули за да се обезбеди референцијален интегритет |
| | 53 | |
| | 54 | === Стратегија на Генерирање === |
| | 55 | * Референтните податоци (University, Faculty, Industry, Skill, итн.) вметнати од CSV датотеки |
| | 56 | * Големите табели (User, Studies, Employment, итн.) генерирани во серии од 500.000 редови за да се избегнат проблеми со истекување на времето |
| | 57 | * Користени процедури за сериско вметнување |
| | 58 | |
| | 59 | == Број на Редови по Табела == |
| | 60 | || Табела || Број на Редови || |
| | 61 | || User || [ДОДАДИ БРОЈ] || |
| | 62 | || Studies || [ДОДАДИ БРОЈ] || |
| | 63 | || Diploma || [ДОДАДИ БРОЈ] || |
| | 64 | || User_Skill || [ДОДАДИ БРОЈ] || |
| | 65 | || Employment || [ДОДАДИ БРОЈ] || |
| | 66 | || !SalaryHistory || [ДОДАДИ БРОЈ] || |
| | 67 | || Position || [ДОДАДИ БРОЈ] || |
| | 68 | || Promotion || [ДОДАДИ БРОЈ] || |
| | 69 | || Internship || [ДОДАДИ БРОЈ] || |
| | 70 | || !AdditionalCourse_User || [ДОДАДИ БРОЈ] || |
| | 71 | || Startup || [ДОДАДИ БРОЈ] || |
| | 72 | || Founder || [ДОДАДИ БРОЈ] || |
| | 73 | || Event || [ДОДАДИ БРОЈ] || |
| | 74 | || Event_User || [ДОДАДИ БРОЈ] || |
| | 75 | || Award || [ДОДАДИ БРОЈ] || |
| | 76 | || University || [ДОДАДИ БРОЈ] || |
| | 77 | || Faculty || [ДОДАДИ БРОЈ] || |
| | 78 | || !StudyProgram || [ДОДАДИ БРОЈ] || |
| | 79 | || Industry || [ДОДАДИ БРОЈ] || |
| | 80 | || Company || [ДОДАДИ БРОЈ] || |
| | 81 | || Skill || [ДОДАДИ БРОЈ] || |
| | 82 | || !AdditionalCourse || [ДОДАДИ БРОЈ] || |