* Access: Задача за упражнение 2
Публикувано на 19 декември 2015 в раздел УКИТ.
Нужно е да се направи база от данни за споделяне на статии между голяма група от потребители. В нея за всички потребители се пази уникален номер и уникално име. Всеки потребител може да има три основни роли – обикновен потребител (може да чете информация), автор (може да споделя информация) и рецензент (преглежда статии и ги одобрява или отхвърля). Разбира се авторите и рецензентите сами по себе си са обикновени потребители. Освен това не е забранено на даден автор да бъде и рецензент на други статии.
За всяка статия се пази нейното заглавие и съдържание (голямо количество текстова информация), дата на публикуване и незадължителна заглавна картинка. Когато някой автор добави нова статия в системата тя стандартно ще отива в „опашка за рецензиране“ (moderation queue). Това означава, че трябва някой рецензент да я провери и редактира преди да бъде официално публикувана. Статии, които не успеят да преминат успешно рецензия просто ще се изтриват. За статиите, които са одобрени задължително се пази информация за това кой е бил рецензента, който ги е одобрил.
Задача 1. Направете ER диаграма на описаната горе база от данни и я създайте в Access.
Задача 2. Създайте форми за удобно въвеждане и редактиране на информация в базата от данни. Вмъкнете примерни данни в базата.
Задача 3. Направете заявка, в която изведете списък със имената на авторите и заглавията на техните статии, които все още не са рецензирани, но само за статиите публикувани преди 1.12.2015 г. Получения списък подредете по азбучен ред първо по име на автор и после по заглавие.
Задача 4. Направете Crosstab заявка, в която по редове изведете години (2012, 2013, 2014, и т.н.), а по колони имена на автори. В клетките изчислявайте общия брой статии, които авторите имат за периода. В броенето да се включват само рецензирани статии!
Решение: В тази интерпретация на условието приемаме, че ролите на потребителите са ограничителни - ако някой не е заел позиция "автор", той не може да има написана статия. Поради тази причина в таблица au
Обръщаме внимание на Validation Rule за таблица Articles:
Not (([reviewed]=True) And ([reviewer_id] Is Null))
Тоест не е възможно статия да е рецензирана и да няма рецензент. Всички други варианти са позволени - може да има назначен рецензент, но все още да не е рецензирал статията, може статия да не е рецензирана и все още да няма назначен рецензент и естествено може да има рецензент и статията да е рецензирана.
Тук е също важно да се спомене, че в Access не можем да имаме Validation Rule в една таблица, който да взима информация от друга (не и чрез стандартните контроли, които Access предлага). Затова валидацията "статия може да се публикува само от потребител, който е с роля Автор", както и "статия може да е рецензирана само от потребител, който е с роля Рецензент", ги правим във формите, а не с Validation Rule. Обърнете внимание на Row Source за контролите на автор и рецензент на формите Articles_add и Articles_edit.
Изтеглете >>> Решение на задачата <<<
Добави коментар