Четвер, 08.12.2016
Ви увійшли як Гість| Група "Гости| RSS| Головна | Блог | Реєстрація | Вхід


Реєстрація | Інструкція



















Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0

Форма входу
Логін:
Пароль:

Головна » 2016 » Лютий » 22 » Задача "Ліга Європи УЄФА" (ACCESS) І частина
16:15
Задача "Ліга Європи УЄФА" (ACCESS) І частина

Ліга Європи УЄФА (англ. UEFA Europa League) — щорічний європейський футбольний кубковий турнір, що проводиться під егідою УЄФА, другий за престижністю європейський клубний турнір. Заснований в 1971 році, реорганізований в 2009 році. В сезоні 2014/15 українська команда «Дніпро» (Дніпропетровськ) виборола право змагатися у фіналі змагання з іспанською «Севільєю». Фінал відбувся 27 травня на стадіоні «Народовий» у Варшаві. 

На основі даних, поданих у файлі-додатку, Вам пропонується за допомогою системи управління базами даних виконати наступні завдання:

І. Створіть запит Груповий етап, який на основі поданої у таблиці Команди інформації про футбольні команди-учасниці Ліги Європи генерує усі матчі групового етапу.
В груповому етапі Ліги Європи кожна команда повинна двічі зіграти з кожною іншою командою своєї групи, причому один раз вдома, а один – на виїзді. Кожна група складається з чотирьох команд. Команду, що приймає матч, помістіть в поле з назвою Команда1, команду-гостя – в поле з назвою Команда2.

ІІ. Створіть таблицю Результати результатів групового етапу з полями Команда1 (назва команди, що приймає матч), Команда2 (назва команди-гостя), Забила1 (кількість голів, забитих командою, що приймає матч), Забила2 (кількість голів, забитих командою-гостем). До таблиці заносяться дані про завершені матчі групового етапу. Для зручності можете заповнити її, використовуючи дані, отримані в результаті виконання запиту Груповий етап. Заповнення таблиці не оцінюється, система власноруч очищуватиме та заповнюватиме таблицю.
Створіть необхідні зв’язки та забезпечте перевірку обмежень цілісності для побудованої бази даних. Назву команди в межах бази даних вважайте унікальною.

ІІІ. На основі даних таблиць Команди та Результати створіть запит Таблиця, в якому відобразіть поточну турнірну таблицю змагання з наступними полями:

  • Група – літера групи, до якої належить команда;
  • Назва – назва команди;
  • І – кількість зіграних матчів;
  • В – кількість перемог команди;
  • П – кількість поразок команди;
  • Н – кількість матчів, зіграних командою в нічию;
  • О – кількість очок (за кожен переможний матч дається 3 очка, за кожну нічию – по 1);
  • М – кількість забитих командою м’ячів.

Команди в турнірній таблиці відсортуйте за групою, а в межах групи – за спаданням кількості набраних очок. Якщо дві команди мають однакову кількість очок, вище повинна стояти та команда, яка забила більшу кількість м’ячів. Вважайте, що ситуація, коли рівні і кількість очок, і кількість забитих м’ячів неможлива.

IV. Створіть запит Перший матч, в якому виведіть дві команди, які першими зіграють в 1/16 фіналу: переможця групи A (поле Команда1) та переможця групи B (поле Команда2). Переможець – команда, що стоїть найвище серед команд групи в запиті з пункту ІІІ.

 

Для початку розберемося з файлом-додатком. Відкривши його в застосунку MS ACCESS 2010 побачимо табличку Команди (мал.1)

 
мал.1

Як видно з навігаційної стрічки знизу, всіх записів у таблиці "Команди" - 48. При цьому у полі "Група" ми бачимо 12 різних букв A, B, C, D, E, F, G, H, I, J, K, L. Це означає, що всі команди за результатами жеребкування розподілилися по 12 групам. Зрозуміло, в кожній групі по 4 команди.
Тепер перейдемо в режим конструктора за допомогою кнопки (на мал.1 вона виділена червоним) і подивимось на структуру таблиці Команди (Див мал.2)
 
мал.2

Як бачимо перше поле "Назва" - має текстовий тип і є ключовим.
- А так можна!?
- Можна, можна, заспокойтесь! Якщо імена команд не повторюються то навіть це текстове поле може бути унікальним ідентифікатором таблиці (ключовим). А імена команд справді не повторюються. Так наприклад є чотири команди з назвою "Динамо", але за допомогою добавок їх назви роблять унікальними "Динамо", "Динамо Київ", "Динамо Мінськ", "Динамо Москва".
 
Тепер читаємо першу частину задачі
І. Створіть запит Груповий етап, який на основі поданої у таблиці Команди інформації про футбольні команди-учасниці Ліги Європи генерує усі матчі групового етапу.
В груповому етапі Ліги Європи кожна команда повинна двічі зіграти з кожною іншою командою своєї групи, причому один раз вдома, а один – на виїзді. Кожна група складається з чотирьох команд. Команду, що приймає матч, помістіть в поле з назвою Команда1, команду-гостя – в поле з назвою Команда2.

Зрозуміло, що матчі на цьому етапі проходять тільки між командами з одної групи. Наприклад в групі А  є 4 команди.
 
Назва Країна Група
Аполлон Кіпр A
Боруссія М Німеччина A
Вільярреал Іспанія A
Цюрих Швейцарія A

Перечислимо всі можливі матчі в цій групі - їх 12.

  1. Аполлон - Боррусія М
  2. Аполлон - Вільяреал
  3. Аполлон - Цюріх
  4. Боррусія М - Аполлон
  5. Боррусія М - Вільяреал
  6. Боррусія М - Цюріх
  7. Вільяреал - Аполлон
  8. Вільяреал - Цюріх
  9. Вільяреал - Боррусія М
  10. Цюріх - Аполлон
  11. Цюріх - Вільяреал
  12. Цюріх - Боррусія М

Тому очікуємо, що сумарна кількість матчів у отриманій таблиці Груповий етап буде 12 х 12 = 144.

Що ж почнемо!

Для початку зробимо екскурс в шкільний курс інформатики. «Галопом по Європах» ми вивчаємо лише те, що база даних створюється в СКБД ACCESS і являє собою набір таблиць пов’язаних між собою, форм та якихось звітів. Наприклад, що таке зв’язок сутностей (читаємо, таблиць). Поглянемо на малюнок 3

 
мал.3
 

Тут реалізований простенький зв’язок 1 до багатьох між табличками А і Б. Йому відповідають такі пари записів.

  1. Петро – Механік
  2. Петро – Військовий
  3. Іван – Військовий
  4. Іван – Педагог
Всього 4 пари

Але задамось метою знайти всі можливі пари що пов’яжуть ці таблиці. Тоді малюнок буде трохи інший.

 
мал.4
 
  1. Петро – Механік
  2. Петро – Військовий
  3. Петро – Педагог
  4. Іван – Механік
  5. Іван – Військовий
  6. Іван – Педагог

Всього 6 пар. Зрозуміло, що більше ніж 6 їх не може бути.
Таку операцію виписування всіх можливих комбінацій між записами таблиць будемо надалі називати множенням таблиць. Ну і звісно, сподіваюсь, Вам зрозуміла формула:

К-сть пар при множенні таблиць А і Б = К-сть записів в Таблиці А * К-сть записів таблиці в Таблиці Б

В нашому випадку : 2*3=6

 

Використаємо цю теорію для розв’язування нашої задачі. Читаємо

І. Створіть запит Груповий етап, який на основі поданої у таблиці Команди інформації про футбольні команди-учасниці Ліги Європи генерує усі матчі групового етапу.

Особливо зверніть увагу на фразу «запит Груповий етап … на основі … таблиці Команди … генерує усі матчі групового етапу.» А ще особливіше на словах «...усі матчі…». Мається на увазі «усі можливі матчі». Та це ж результат множення таблиці Команди що приймає та таблиці Команди – гості!

Тому табличку Команди треба використати двічі, один раз в якості таблиці Команди що приймають, другий – в якості таблиці Команди-гості. За умовою треба зробити запит Груповий етап, що, використовуючи вищеназвані дві таблички, створить нам нову табличку, де будуть вказані всі можливі комбінації з двох команд (нагадую ця операція називатиметься множенням таблиць). Реалізуємо це множення за допомогою конструктора запитів ACCESS. Для цього двіччі перетягнемо табличку Команди в вікно Запрос1. (Див.мал. 5)

 
мал.5
 

Як бачимо, ACCESS самостійно змінила назву таблички з «Команда» на «Команда_1» за другим разом. Зрозуміло, бо не може бути дві таблиці з однаковими іменами.

Тепер перетягуємо назви полів «Назва» та «Група» з кожної таблиці на поля конструктора запитів. Див. мал. (Див.мал. 6)

 
мал.6
 

А тепер фокус! Переходимо в режим таблиці і бачимо список всіх можливих матчів між всіма командами попарно. (Див.мал. 7)

 
мал.7
 

Як бачимо, все вийшло. Таблички «Команди» та «Команди_1» помножились. Звісно, кількість результуючих записів 48*48=2304.

Але, слідуючи за умовою «В груповому етапі Ліги Європи кожна команда повинна двічі зіграти з кожною іншою командою своєї групи … », ми повинні з цього списка залишити лише матчі між командами які мають однакову групу. Це просто зробити, вставивши умову в конструкторі запитів. А для цього треба навчитись писати умови…

Тепер прийшов час познайомитись із Побудовником виразів (рос. «Построитель выражений»). Для чого він?

Побудовник виразів

Дуже часто в запитах потрібно складати умови де порівнюються, сумуються або беруть участь у інших операціях значення полів з таблиць, запитів та форм даної бази, змінні та константи, використовуються складні формули, застосовуються операції вибору і т.п. Ну, щоб вас налякати, наведу приклад із розв’язку цієї ж задачі. Уявіть що в одному із запитів ми повинні внести таку умову (написати руцями!):

М: IIf(Nz([Таблиця1]![М1])+Nz([Таблиця2]![М2])=0;Null;Nz([Таблиця1]![М1])+Nz([Таблиця2]![М2]))

Кому це треба і хто це витримає!? Але, якщо придивитись, то можна виділити схожі елементи. Зафарбуємо їх синім.

М: IIf(Nz([Таблиця1]![М1])+Nz([Таблиця2]![М2])=0;Null;Nz([Таблиця1]![М1])+Nz([Таблиця2]![М2]))

Це ж посилання на поля відповідних таблиць. А символи IIf, Nz, Null, +, =, ( ,) – є стандартними функціями, операторами та елементами синтаксису ACCESS. А не можна їх десь зібрати в оному місці, щоб потім тільки мишкою вибирати та конструювати з них вирази будь-якої складності та довжини?

Якраз це і робить побудовник виразів. Він виводиться на екран спеціальною кнопкою, яка активується як тільки ви поставите курсор в місце вводу умови запиту. (Див.мал.8)

 
мал.8
 

Ліворуч, в дереві, якраз, і зібрані посилання на всі поля та значення об’єктів даної бази даних, вбудовані стандартні функції, константи та оператори. Спробуйте поклацати по всьому що вам захочеться, потренуйтеся в конструюванні виразів і оцініть зручність даного методу.

Далі, далі, далі!

Тепер внесемо в наступний стовпчик конструктора запитів умову, що група команди взятої з таблиці «Команди» співпадала з групою команди взятої з таблиці «Команди_1». За допомогою «Побудовника виразів» будуємо (або, на крайній випадок, пишемо вручну) такий вираз:

[Команди]![Група] = [Команди_1]![Група]

(Сподіваюсь, вам ясно, що тут із чим порівнюється). Конструктор запитів виглядатиме так.

 
мал.9
 

Спроба перейти в режим таблиці щоб подивитись на результат роботи запиту не вийде. Чому?

Вся справа в тому, що в стовпчику конструктора запитів не можна залишати пустими рядочки «Поле» та «Имя таблицы». Туди можна вставити що завгодно з випадаючого списку що відкриється по натиску на стрілочку. (Все-одно, ми цього стовпчика не побачимо бо, як видно на малюнку, не виставлено галочку в прапорці на рядку «Вывод на экран».

Ще є пропозиція зразу відсортувати запит за одним із стовбців «Група»

Таким чином…

 
мал.10
 

Переходим в режим таблиці і бачимо…

 
мал.11
 

Клас! Тепер в списку залишилися лише матчі між учасниками кожної з груп. І їх, як бачимо, залишилося 192. А чого? Розберемося!

В таблиці Команди нараховувалось 48 команд в 12 групах (по 4 в групі). Звідси, якщо перерахувати всі можливі пари в групі з 4 команд, то отримаємо 4*4=16 матчів. А для всіх груп 16*12=192.

Тепер з цього списку виключимо всі матчі в яких команда зустрічається сама з собою. Такого бути не може! Для цього накладаємо ще одну умову в якій вказуємо що назви команд взятих із обох таблиць не повинні бути однаковими.

[Команди]![Назва]<>[Команди_1]![Назва]
 
мал.12
 

Тепер все в порядку у нас вибрано 144 матчі групового турніру. (по 12 матчів групі).

 
мал.13
 

Тепер трошки змінимо стиль запису умов в конструкторі запитів.

Нехай в нас є дві таблиці. В одній є поле (назвемо його Х), воно має свої значення. Тепер треба щоб запит знайшов в другій таблиці у полі (назвемо його Y) такі самі значання. Другими словами треба знайти всі пари записів із обох таблиць для яких X=Y.

Ми в конструкторі запитів, до цих пір, записували приблизно так:

 
мал.14
 

Але правильно треба записувати так:

 
мал.15
 

В нашому випадку запит зміниться так:

 
мал.16
 

І це буде гарно! Але можна ще покращити запис, вклавши умови в середину стовбців відповідних полів.

мал.18
 

Ось, по моєму, самий досконалий запит. І компактно, і все ясно.

Далі читаємо умову «Команду, що приймає матч, помістіть в поле з назвою Команда1, команду-гостя – в поле з назвою Команда2

Вчимося називати стовпчики запитів. Якщо ви хочете щоб у результуючій табличці стояли нормальні, зрозумілі назви, а не щось подібне до «Команда.Назва» або «Команда_1.Група» то скористайтесь методом псевдонімів (aliase – англ.).

Все буде зрозумілим з малюнку.

мал.17
 

Те що перед двокрапкою називається псевдонімом і надалі розглядається ACCESSом як назва поля в табличці створеній запитом.

В кінці, можна видалити з запиту четвертий стовбчик з назвою «Група_1» (він лишній, бо група в обох команд однакова)

Результуючий запит і таблиця виглядають так:

мал.20
 
мал.19
 

Перша частина задачі розв’язана.

Категорія: Олімпіадні завдання з ІТ | Переглядів: 106 | Додав: meltar | Теги: access, множення таблиць, запити, псевдоніми | Рейтинг: 0.0/0
Всього коментарів: 0
Додавати коментарі можуть лише зареєстровані користувачі.
[ Реєстрація | Вхід ]

Освітянська карта району

План-графік проведення методичних заходів на 2016-2017 н.р.
Тижнева циклограма діяльності методичного центру.
09.12 - Школа фахового зростання освітян ДНЗ.(Якушинецький ДНЗ "Барвінок")
13.12 - Семінар-майстерня учителів 2-х класів:«Забезпечення вимог оновлених програм і критеріїв оцінювання: реалізація основних завдань та творчий підхід до вирішення проблеми» (Лука-Мелешківська ЗОШ І-ІІІст)
14.12 - Семінар-практикум для вчителів труд. навчання "Шляхи оволодіння технологіями, як вид сучасного підходу до практичної діяльності для підвищення ефективності уроків трудового навчання" (Стрижавська ЗОШ І-ІІІ ст.)
16.12 - Семінар-практикум учителів зарубіжної літератури та російської мови «Забезпечення компетентнісного підходу на уроках зарубіжної літератури та російської мови як засіб формування творчої особистості учня» (Агрономічненська СЗШ І-ІІІст.)
21.12 - Семінар-практикум для вчителів музичного мистецтва «Ефективність системи художньо-естетичного виховання –важлива умова розвитку самовдосконалення, самовиховання обдарованої особистості» (Бохоницька СЗШ І-ІІІ ст.)
22.12 - Семінар учителів біології.





Copyright MyCorp © 2016
Конструктор сайтів - uCoz