= Креирање на База на Податоци = == Структура на Базата == Базата се состои од 22 табели организирани во следните групи: === Образование === * '''University''' - Складира информации за универзитети (име, адреса, веб страна, контакт) * '''Faculty''' - Факултети кои припаѓаат на универзитети * '''!StudyProgram''' - Студиски програми понудени од факултети (bachelor, master, phd) * '''Studies''' - Следи кои корисници се запишани на кои студиски програми * '''Diploma''' - Записи за дипломирање на завршени студии === Корисници === * '''User''' - Главна табела за корисници со лични информации (име, датум на раѓање, просек, контакт) * '''Skill''' - Достапни вештини со типови (технички, меки, јазици, итн.) * '''User_Skill''' - Врска many-to-many помеѓу корисници и вештини === Вработување === * '''Industry''' - Категории на индустрии * '''Company''' - Компании со број на вработени и индустрија * '''Employment''' - Записи за вработување кои ги поврзуваат корисниците со компании * '''Position''' - Работни позиции за време на вработувањето * '''Promotion''' - Записи за унапредување со стари/нови нивоа * '''!SalaryHistory''' - Промени на плата со текот на времето === Останати Активности === * '''Internship''' - Записи за пракси кои ги поврзуваат корисниците со компании * '''!AdditionalCourse''' - Курсеви за професионален развој * '''AdditionalCourse_User''' - Записи за завршени курсеви по корисник * '''Startup''' - Стартап компании * '''Founder''' - Ги поврзува корисниците со стартапите кои ги основале * '''Event''' - Професионални настани организирани од компании * '''Event_User''' - Записи за присуство на настани * '''Award''' - Награди добиени од корисници == Ограничувања == Структурата ги наметнува следните правила за интегритет на податоците: * Валидација на формат на е-пошта преку regex на табелите University, Faculty и User * Валидација на формат на телефон (6-15 цифри, опционален + префикс) * Валидација на формат на веб страна (мора да започнува со http:// или https://) * Просек опсег 5-10 * Тип на диплома ограничен на: bachelor, master, phd * Тип на вработување ограничен на: full-time, part-time, contract, internship * Ограничувања за статус на студии/вработување * Валидација на опсег на датуми (end_date >= start_date) * Каскадни ажурирања и ограничени бришења на foreign keys == Генерирање на Податоци == Податоците беа генерирани со комбинација на: * '''CSV датотеки''' - 14 CSV датотеки кои содржат референтни податоци (имиња, градови, универзитети, факултети, студиски програми, индустрии, компании, вештини, работни позиции, настани, курсеви, стартапи, награди) * '''SQL скрипта за генерирање''' - Големите табели се генерирани со користење на PostgreSQL функцијата `generate_series()` со детерминистички формули за да се обезбеди референцијален интегритет === Стратегија на Генерирање === * Референтните податоци (University, Faculty, Industry, Skill, итн.) вметнати од CSV датотеки * Големите табели (User, Studies, Employment, итн.) генерирани во серии од 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 ||