Файлові системи і бази даних. Потреби інформаційних систем
Основні сфери застосування обчислювальної техніки та їх характеристика. Обмеження, притаманні файловим системам. Розділення та ізоляція даних, їх дублювання. Поняття несумісності форматів файлів. Недоліки традиційних файлових систем та їх усунення.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | украинский |
Дата добавления | 20.06.2010 |
Размер файла | 25,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
2
14
Файлові системи і бази даних. Потреби інформаційних систем
(реферат)
За всю історію обчислювальної техніки можна прослідкувати дві основні сфери її застосування. Перша сфера - це застосування обчислювальної техніки для виконання математичних розрахунків, які надто довго або взагалі неможливо провести вручну. Розвиток саме цієї галузі сприяло інтенсифікації методів числового розв'язку складних математичних задач, розвитку класів мов програмування, орієнтованих на зручний запис числових алгоритмів, становлення зворотного зв'язку з розробниками нових архітектур ЕОМ.
Друга галузь, яка безпосередньо відноситься до теми наших лекцій - це використання засобів обчислювальної техніки в автоматичних або автоматизованих інформаційних системах. В найширшому розумінні, інформаційна система являє собою програмно-апаратний комплекс, функції якого полягають у надійному збереженні інформації у пам'яті комп'ютера, виконання специфічних для даного додатку перетворень інформації та/або обчислень, наданні користувачеві зручного та зрозумілого інтерфейса. Зазвичай такі системи мають справу з великими обсягами інформації, яка має достатньо складну структуру.
Класичними прикладами інформаційних систем є банківські системи, системи резервування авіаційних квитків, місць у готелі тощо.
Друга галузі застосування обчислювальної техніки виникла дещо пізніше за першу. Це пов'язане з тим, що на світанку обчислювальної техніки можливості комп'ютерів по зберіганню інформації були дуже обмеженими. Говорити про надійне та довготривале збереження даних можливо було лише при наявності запам'ятовуючих пристроїв, які зберігають інформацію після вимкнення живлення машини. Оперативна пам'ять комп'ютерів такої властивості не має. У перших комп'ютерах використовувалися два пристрої зовнішньої пам'яті - магнітні стрічки та барабани. Ємність магнітних стручок була достатньо великою, але за своєю фізичною природою така стрічка забезпечувала лише послідовний доступ до даних. Магнітні ж барабани, які більше подібні до сучасних магнітних дисків з фіксованими головками, надавали можливість довільного доступу до даних, але були обмеженого розміру.
Такі обмеження не були суттєвими для чисто чисельних розрахунків. Але для інформаційних систем, в яких потреба у поточних даних визначається кінцевим користувачем, наявність лише магнітних стрічок або барабанів є незадовільною. Уявіть собі покупця квитків, який біля каси повинен чекати повного перемотування магнітної стрічки. Однією з природних вимог до таких систем є достатня швидкість виконання операцій.
Здається, саме вимоги нечислових прикладних програм, викликали появу зйомних магнітних дисків з рухомими голівками, що явилося революцією в історії обчислювальної техніки. Такі пристрої зовнішньої пам'яті мали набагато більший обсяг, забезпечували достатню швидкість доступу до даних в довільному порядку, а можливість зміни дискового пакету на пристрої дозволяла мати практично необмежений архів даних.
З появою магнітних дисків почалася історія систем керування даними у зовнішній пам'яті. До того моменту кожна програма-додаток, якій потрібно було зберігати дані у зовнішній пам'яті, сама визначала розміщення кожної порції даних на магнітній стрічці чи барабані і виконувала обмін між оперативною пам'яттю та пристроєм зовнішньої пам'яті за допомогою програмно-апаратних засобів низького рівня (машинних команд або виклику відповідних програм операційної системи). Такий режим роботи не дозволяє і дуже ускладнює підтримку на одному зовнішньому носії декількох архівів інформації довготривалого зберігання. Крім того, кожній прикладній програмі потрібно було вирішувати проблему іменування частин даних і структуризації даних у зовнішній пам'яті.
Історичним кроком став перехід до використання централізованих систем управління файлами.
Файлові системи - це набір програм, які виконують для користувачів деякі операції, наприклад створення звітів. Кожна програма визначає свої власні дані і керує ними.
Файлові системи були першою спробою компютиризувати відомі всім ручні картки. Подібна картка (або підшивка документів) в деякій організації могла містити всю зовнішню і внутрішню документацію, повязану з деяким продуктом, завданням, клієнтом або співробітником. Зазвичай таких папок дуже багато, їх нумерують і зберігають у шафах. З метою безпеки шафи можуть навіть закривати на ключ або зберігати у приміщеннях, що знаходяться під охороною. У більшості людей вдома є власні карототеки, що містять підшивки документів, такі як рахунки, гарантійні талони, чеки про сплату за комунальні послуги, стархові та банківські папери, звіти з лабораторних робіт, конспекти лекцій тощо. Якщо нам потрібна будь-яка інформація, потрібно вручну переглянути картотеку від початку до кінця, щоб знайти те, що нас цікавить. Цей процес можна вдосконалити, ввівши у такій системі процес індексування, який дозволить прискорити процес пошуку потрібних відомостей. Наприклад, можна використати спеціальні розділювачі або окремі папки для різноманітних логічно повязаних типів обєктів.
Ручні картки дозволяють успішно справитися з поставленими задачами, якщо кількість обєктів, що зберігаються, невелике. Також вони цілковито підходять для роботи з великою кількістю обєктів, які потрібно лише зберігати, або вилучати. Проте вони виявляються цілковито не придатними для випадків, коли потрібно встановити перехресні зв'язки чи виконати обробку відомостей.
В наш час клієнтам, менеджерам та іншим співробітникам з кожним днем потрібно все більше і більше інформації. Зрозуміло, що картотека зовсім не підходить для виконання роботи подібного типу. Файлові системи були розроблені для забезпечення більш ефективних способів доступу до даних. Проте, замість організації централізованого сховища всіх даних підприємства, використовувався децентралізований підхід, за яким співробітники кожного відділу за допомоггою спеціалістів по обробці даних (програмістів) працюють зі своїми власними даними і зберігають їх у своєму відділі у окремих файлах. Файл являє собою простий набір записів , які містять логічно зв'язані данію кожен запис містить логічно зв'язаний набір з одного чи декількох полів, кожне з яких представляє деяку характеристику об'єкту, що моделюється. Кожен співробітник звертається до даних за допомогою спеціалізованої прикладної програми. Набір прикладних програм кожного відділу дозволяє вводити дані, працювати з файлани і генерувати деякий фіксований набір спеціалізованих звітів. Найважливішим є те, що фізична структура і методи зберігання записів файлів з даними жорстко визначаються в коді прикладної програми.
Обмеження, притаманні файловим системам
§ Відокремлення та ізоляція даних.
§ Дублювання даних.
§ Залежність від даних.
§ Несумісність файлів.
§ Фіксовані запити/ швидке збільшення кількості додатків.
Розділення та ізоляція даних
Коли дані ізольовані у окремих файлах, доступ до них ускладнений. Наприклад, для створення списку всіх будинків, що відповідають вимогам потенційних орендарів, попередньо потрібно створити тимчасовий файл зі списком орендарів, які бажають орендувати нерухомість типу „будинок”, далі у файлі про нерухомість, що здається в оренду, потрібно здійснити пошук обєктів типу „будинок” з орендною платою нижче за максимум, встановлений орендарем. Виконати подібний пошук та обробку даних у файлових системах достатньо складно. Для вилучення інформації, яка задовольняє поставленим умовам програмісту потрібно реалізувати синхронну обробку двох файлів. Ще більші складності виникають, коли інформацію потрібно шукати більше ніж у двох файлах.
Дублювання даних
Через децентралізовану роботу з даними, яка ведеться у кожному відділі на підприємстві, у файловій системі фактично заохочується безконтрольне дублювання даних, яке є небажаним за двох причин:
1. дублювання даних супроводжується неекономним використанням ресурсів, оскільки на введення надлишкових даних потрібно витрачати додатково час та гроші. Більше того, для їх зберігання необхідне додаткове місце у зовнішній памяті. У більшості випадків дублювання даних можна уникнути за рахунок сумісного використання файлів.
2. ще більш важливим є той факт, що дублювання даних може призвести до порушення їх цілісності , інакше кажучи, дані у різних відділах можуть стати суперечливими. Наприклад, у випадку дублювання даних про співробітників у бухгалтерії та відділі кадрів, якщо робітник змінить адресу і цю зміну буде зафіксовано лише у відділі кадрів, то повідомлення про зарплату надійде на чужу адресу. При виявленні подібної помилки потрібно буде витратити багато часу для її повного усунення, оскільки немає деякого автоматичного способа обновлення даних одночасно у всіх відділах.
Залежність від даних
Фізична структура і спосіб збереження записів файлів і спосіб зберігання записів файлів даних жорстко фіксованих у коді програми-додатку. Це означає, що змінити існуючу структуру даних достатньо складно.
Несумісність форматів файлів
Оскільки структура файлів визначається кодом додатків, вона залежить і від мови програмування цього додатку. Наприклад, структура файлу, створеного на мові COBOL може повністю відрізнятися від структури файлу, створеного на мові С.
Фіксовані запити / швидке збільшення кількості додатків
З точки зору користувача можливості файлових систем перевищують можливості ручних карток. Відповідно зростає і їх вимоги до реалізації нових та модифікованих запитів. Проте, файлові системи значно залежать від програміста, оскільки всі необхідні запити і звіти повинні бути створені саме ним. У багатьох організаціях, як свідчить література, події розвивалися по одному з двох сценаріїв. 1) типи створюваних запитів мали фіксовану форму і не було інструментів для створення незапланованих або довільних запитів, як до даних, так і відомостей про те, які типи даних є доступними.
2) спостерігалося різке збільшення кількості файлів і додатків. В результаті співробітники відділу обробки даних були не в змозі задовольнити всі потреби за допомогою наявних на той час ресурсів при цьому часто ігнорували питання підтримки функціонування системи: не передбачалися заходи безпеки або цілісності даних, засоби обновлення після збою апаратного і програмного забезпечення були обмеженими або взагалі відсутніми. Доступ до файлів часто обмежувався одним користувачем, тобто н передбачалося спільне використання файлів навіть робітниками одного відділу.
Системи з базами даних
Всі перераховані вище обмеження фалових систем є наслідком двох факторів:
визначення даних міститься всередині прикладних програм, а не зберігається окремо і незалежно від них.
Окрім прикладних програм не передбачено жодних інших інструментів доступу до даних та їх обробки.
Для підвищення ефективності роботи необхідно використовувати новий підхід, а саме базу даних і систему керування базами даних, або СКБД.
База даних- це сумісно використовуваний набір логічно зв'язаних даних та опис цих даних, передбачений для задоволення інформаційних потреб організації.
База даних - це єдине, велике сховище даних, яке одноразово визначається, а потім використовується одночасно багатьма користувачами з різних підрозділів. Замість окремих файлів з надлишковими даними, тут всі дані зібрані разом з мінімальною часткою надлишковості. База даних є корпоративним ресурсом і не належить якомусь окремому відділу. Зауважимо, що база даних зберігає не лише робочі записи підприємства, але й їх опис.
З точки зору додатку, файл - це іменована область зовнішньої пам'яті, в яку можна записати і з якої можна зчитати дані.
Система управління файлами бере на себе розподілення зовнішньої пам'яті, відображення імен файлів за відповідними адресами у зовнішній пам'яті і забезпечення доступу до даних.
Перша файлова система була розроблена намаганнями фірми IBM для серії комп'ютерів 360. У файлових системах різних операційних систем файл для користувача представляється по-різному. Наприклад користувачі ОС DEC, RSX, VMS, розглядають файл як послідовність записів. Кожен запис - це байтова послідовність постійного або змінного розміру. Записи можна зчитувати або записувати послідовно або позиціонувати файл на запис з вказаним номером.
Деякі файлові системи дозволяють розбивати записи на поля і оголошувати деякі поля ключами запису. В таких системах можна зробити вибірку з файлу за заданим ключем.
Інший підхід, який набув поширення разом з операційною системою UNIX, полягає в тому, що будь-який файл представляється як послідовність байтів. З файлу можливо зчитати вказану кількість байтів, або з початку, або попередньо налаштувавши його на байт з вказаним номером. Аналогічно можливо записати вказане число байт в кінець файлу, або попередньо виконавши позиціонування файлу.
Як захистити файл?
Оскільки файлові системи є спільним сховищем файлів, які в загальному випадку належать різним користувачам, системи керування файлами забезпечують авторизацію доступу до файлів. В загальному вигляді підхід полягає в тому, що по відношенню до кожного зареєстрованого користувача даної обчислювальної системи для кожного наявного файлу вказуються дії, які дозволені або заборонені для даного користувача.
В більшості сучасних систем керування файлами застосовується підхід до захисту файлів, що вперше був реалізований в ОС UNIX. В цій ОС кожному зареєстрованому користувачеві відповідає пара цілочисельних ідентифікаторів: ідентифікатор групи, до якої належить цей користувач, і його власний ідентифікатор в групі. При кожному файлі зберігається повний ідентифікатор користувача, який створив цей файл, і фіксується, які дії з файлом може виконувати його виробник, які дії з файлом доступні для інших користувачів тієї самої групи і що можуть робити з файлом представники інших груп. Ця інформація досить компактна, зусилля потрібні для перевірки помірні, а такий спосіб контролю в більшості випадків виправданим.
Щодо застосування файлових систем
Після екскурсу в історію і можливості систем управління файлами підіб'ємо підсумки. Звичайно, перш за все файли застосовуються для збереження текстової інформації: документів, текстів програм тощо. Такі файли звичайно створюються і модифікуються за допомогою різноманітних текстових редакторів. Структура файлів звичайно дуже проста: це або послідовність записів, що містять рядки тексту, або послідовність байт, серед яких зустрічаються спеціальні символи (наприклад, символи кінця рядка).
Файли з текстами програм є вихідними параметрами компіляторів, які, в свою чергу формують файли, що містять об'єктні модулі. С точки зору файлової системи, об'єктні файли також абсолютно стандартної структурой - послідовність записів або байтів. Система програмування накладає на цю структуру більш складну і специфічну для цієї системи структуру об'єктного модуля. Підкреслимо, що логічна структура об'єктного модуля залищається невідомою для файлової системи, ця структура підтримується програмами системи програмування.
Зауважимо, що у названих випадках цілком достатньо тих засобів захисту файлів і синхронізації паралельного доступу, які забезпечують системи управління файлами.
Іншими словами, файлові системи звичайно забезпечують збереження слабо структурованої інформації, залишаючи подальшу структуризацію прикладним програмам.
Але якщо згадати, що тема нашої лекції стосується все ж таки інформаційних систем, яки головним чином орієнтовані на зберігання, вибір та модифікацію інформації, то ці можливості видаються недостатніми.
Структура інформації звичайно дуже складна, і хоча структури даних різноманітні, між ними часто простежується багато спільного. На початковому етапі обчислювальної техніки проблеми структуризації даних вирішувалися індивідуально у кожній інформаційній системі. Створювалися необхідні бібліотеки програм над файловими системами, подібно тому, як це робиться в компіляторах.
Але, оскільки в інформаційних системах необхідно підтримувати складні структури даних, ці індивідуальні засоби керування даними складали суттєву частину інформаційних систем, практично повторюючись, від однієї системи до іншої. Намагання виділити загальну частину інформаційних систем, відповідальну за керування складно-структурованими даними стало, першою спонукаючою причиною створення СКБД, яка, можливо, могла б представляти деяку загальну бібліотеку програм, доступну кожній інформаційній системі.
Розглянемо це на прикладі. Припустимо, що ми бажаємо реалізувати просту інформаційну систему, яка підтримує облік робітників деякої організації. Схема повинна видавати списки робітників у відповідності з вказаними номерами відділів, підтримувати реєстрацію переведення робітників з одного відділу в інший, прийняття та звільнення з роботи. Для кожного відділу повинна підтримуватися можливість одержання імені керівника цього відділу, загальної чисельності відділу, загальної суми заробітної плати за останній місяць тощо. Для кожного співробітника повинна підтримуватися можливість видачи номера посвідчення за повним іменем співробітника, видачи повного імені по номеру посвідчення, одержання інформації про поточну відповідність посади та розміру зарплатні.
Припустимо, що ми вирішили реалізувати таку інформаційну систему на основі файлової системи і користуватися при цьому одним файлом. Оскільки мінімальною інформаційною одиницею в нашому випадку є співробітник, у файлі містиметься один запис для кожного робітника. Поля таких записів повинні містити повне ім'я робітника (РОБ_ІМ), номер його посвідчення (РОБ_НОМ), розмір зарплатні (РОБ_ЗАРП), номер відділу (РОБ_ВІД_НОМ). Оскільки ми намагаємося обмежитися одним файлом, цей самий запис повинен містити імя керівника відділу (РОБ_ВІД_КЕР).
Для виконання функцій нашої інформаційної системи необхідна можливість багатоключового доступу до цього файлу за унікальними ключами. Ключ - це поле даних, яке однозначно визначає запис у файлі, тобто не дублюються у різних записах. В нашому випадку такими полями є РОБ_ІМ та РОБ_НОМ. Крім того, повинна забезпечуватись можливість вибору всіх записів для робітників з одного відділу (РОБ_ВІД_НОМ), тобто доступ за неунікальним ключем. Для того щоб одержати чисельність відділу або загальний розмір зарплатні, інформаційна система повинна що разу вибирати всі записи про робітників відділу і підраховувати відповідне нове значення.
РОБ_ІМ |
РОБ_НОМ |
РОБ_ЗАРП |
РОБ_ВІД_НОМ |
РОБ_ВІД_КЕР |
Таким чином, на прикладі реалізації навіть простої системи на базі файлової, користувач стикається з недоліками традиційних файлових систем, такими як:
Великі затрати праці програміста (створення достатньо складного долаштування, яке забезпечувалоб багатоключовий доступ до файлів).
Надлишковість даних (в записах на кожного співробітника вказується імя керівника відділу);
Слабкий контроль за даними (для здійснення окремої операції чи вибірки потрібно переглядати всі записи у файлі);
Недостатні можливості керування даними (якщо виникне ситуацію видати інформацію про співробітників з заданою зарплатнею, потрібно буде або повністю переглядати файл, або переоголосити поле РОБ_ЗРП ключовим).
Ситуацію можна виправити, якщо почати підтримувати два багатоключові файли РОБІТНИКИ і ВІДДІЛИ: перший файл міститиме поля РОБ_ІМ РОБ_НОМ РОБ_ЗАРП і РОБ_ВІД_НОМ, а другий - ВІД_НОМ, ВІД_КЕР, РОБ_ЗРП (загальний обсяг зарплатні) та ВІД_РОЗМІР (загальна кількість співробітників у відділі. Тоді, більша частина незручностей, про які йшлося, буде розвязана, але після такого переходу інформаційна система буде володіти новими якостями, які наближають її до СКБД - компютеризована система збереження даних, основне призначення якої зберігати інформацію, надаючи користувачеві можливості її вилучення і модифікації. Під інформацією слід розуміти все, що необхідно для поточної роботи даного користувача або підприємства.
РОБІТНИКИ:
РОБ_ІМ |
РОБ_НОМ |
РОБ_ЗАРП |
РОБ_ВІД_НОМ |
ВІДДІЛИ:
ВІД_НОМ |
ВІД_КЕР |
РОБ_ЗАРП |
Перш за все система повинна знати, що вона працює з двома інформаційно звязаними файлами, їй необхідно знати структуру і зміст кожного поля (наприклад, що РОБ_ВІД_НОМ в файлі РОБІТНИКИ і ВІД_НОМ в файлі ВІДДІЛИ означають одне і те саме), а також розуміти, що зміни у першому файлі повинні викликати зміни і в другом, щоб загальний зміст був узгоджений. Наприклад, якщо на роботу приймуть нового робітника, необхідно додати запис у файл РОБІТНИКИ, а також відповідним чином змінити поле ВІД_ЗРП і ВІД_РОЗМІР у файлі ВІДДІЛИ.
Узгодженість даних є ключовим поняттям баз даних. Дійсно, якщо інформаційна система підтримує узгоджене збереження інформації в декількох файлах, можна казати, що вона підтримує базу даних - множина взаємоповязаних елементарних груп даних, які можуть оброблятися однією чи кількома прикладними системами. Якщо деяка допоміжна система керування даними дозволяє працювати з декількома файлами, забезпечуючи їх узгодженість, її можна назвати системою керування базами даних. Однієї лише узгодженості даних в декількох файлах не дозволяє обійтися однією лише бібліотекою функцій: така система повинна володіти деякими власними даними (мета-даними) і навіть знаннями, які визначають цілісність даних.
Але це ще не все, що вимагається від СКБД. По-перше, навіть у нашому прикладі незручно реалізовувати такі запити, як ”надати загальну чисельність відділу, в якому працює Іван Іванович Іванов”. Було б набагато простіше, якби СКБД дозволяла сформулювати такий запит на рідній і зрозумілій нам мові. Мову, яку потрібно опанувати для такого випадку називають мовою запитів до баз даних. Наприклад, на мові SQL (Structured Query Language) наш запит можна було виразити у формі:
SELECT РОБ_РОЗМІР
FROM РОБІТНИКИ, ВІДДІЛИ
WHERE РОБ_ІМ=”Іван Іванович Іванов”
AND СОТР_ОТД_НОМ=ОТД_НОМЕР
При формулюванні запиту СКБД дозволить не замислюватись над тим, яким чином буде виконуватися цей запит. Серед безлічі її мета-даних міститиметься інформація про те, що поле РОБ_ІМ є ключовим для файлу співробітники, а ВІД_НОМ - ключовим для файлу ВІДДІЛИ, і система сама скористається цим.
Подобные документы
Використання баз даних та інформаційних систем. Поняття реляційної моделі даних. Ключові особливості мови SQL. Агрегатні функції і угрупування даних. Загальний опис бази даних. Застосування технології систем управління базами даних в мережі Інтернет.
курсовая работа [633,3 K], добавлен 11.07.2015Методи використання традиційних файлових систем - набору програм, які виконують для користувачів деякі операції, наприклад, створення звітів. Системи керування баз даних. Основні поняття реляційної моделі даних. Реляційна алгебра і реляційне числення.
реферат [40,2 K], добавлен 13.06.2010Приклади файлових систем як способу організації даних, який використовується операційною системою для збереження інформації. Порівняння файлових систем Windows XP та Linux. Основні типи файлів. Жорстке посилання, регістр букв. Файлова система в Windows 8.
курсовая работа [1,1 M], добавлен 23.08.2014Використання баз даних та інформаційних систем у сучасному житті. Основні відомості про реляційні бази даних. Зв'язування відносин. Структурована мова запитів SQL. Сутність та загальний опис бази даних "Архітектурна компанія". Приклад створення таблиці.
курсовая работа [320,7 K], добавлен 19.06.2015Поняття та переваги реляційної бази, автоматизація аналізу даних. Опис основних компонентів сховища даних AS/400. Процес перетворення оперативних даних в інформаційні. Багатовимірні бази даних (MDD). Опис даних і створення файлів в інтеграційних базах.
реферат [36,8 K], добавлен 14.01.2012Розгляд процесу автоматизації бази даних для довідника астронома. Основи реляційних баз даних для проектування інформаційних систем. Застосування тригерів для забезпечення цілісності даних і реалізації складної бізнес–логіки в системних процедурах.
курсовая работа [22,3 K], добавлен 12.03.2019Основні поняття та особливості розробки баз даних в Microsoft Access. Побудова бази даних магазину побутової техніки: створення таблиць та встановлення зв’язків між ними, створення запитів, форм та звітів. Охорона праці і гігієна користувача комп'ютера.
курсовая работа [2,5 M], добавлен 19.01.2010Використання засобів обчислювальної техніки в автоматичних або автоматизованих інформаційних системах. Сутність централізованих систем управління файлами. Історія виникнення персональних комп'ютерів. Перспективи розвитку систем управління базами даних.
реферат [26,8 K], добавлен 23.10.2009Файлові системи CD-ROM, основні типи зберігання даних в комп'ютері: магнітний і оптичний. Основні характеристики накопичувачів CD-ROM. Типи звукових файлів, процес стиснення аудіоданих. Розміри портативних систем та проблеми сумісності комплектуючих.
контрольная работа [19,5 K], добавлен 28.10.2009Області застосування і реалізації інформаційних систем, вимоги до них. Призначення та класифікація систем управління базами даних. Основні достоїнства мови SQL. Програмний код додатку. Створення база даних "Мебельний магазин". Лістинг даної програми.
курсовая работа [747,0 K], добавлен 19.04.2015