Построение таблиц базы данных
На предыдущем этапе мы построили схему базы данных, воспользовавшись общими правилами перехода к реляционной модели данных. Она является корректной, поскольку в ней отсутствуют нежелательные отношения. Ставится вопрос, а какую же СУБД использовать? Выбор остановим на реляционной СУБД MS SQL Server. Microsoft SQL Server – система управления реляционными базами данных, разработанная корпорацией Microsoft, основной используемый язык запросов – Transact-SQL, создан совместно Microsoft и Sybase, который является реализацией стандарта ANSI/ISO (American National Standards Institute/International Organization for Standardization) по структурированному языку запросов SQL с расширениями. Язык SQL был первоначально разработан компанией IBM, а в настоящее время поддерживается большинством коммерческих СУБД, представленных на рынке, и является официальным стандартом языка для работы с реляционными базами данных. Само, название SQL, является аббревиатурой, образованной от Structured Query Language (язык структурированных запросов). Итак, нужно решить вопрос о назначении типа данных для каждого атрибута каждой сущности, размера данных, присвоении свойств уникальности и обязательности поля, назначении ключевых полей. Далее представлены все таблицы, в режиме Design (Конструктор).
Рисунок 6/1 – Таблица tb_worker Рисунок 6/2 – Таблица tb_uchastok Рисунок 6/3 – Таблица tb_podrazdeleniye Рисунок 6/4 – Таблица tb_dvizeniye Рисунок 6/5 – Таблица tb_occupation Рисунок 6/6 – Таблица tb_pas_department
Рисунок 6/7 – Таблица tb_passport Рисунок 6/8 – Таблица tb_prikaz Итак, мы привели основные таблицы с приведением типов полей. Ключевые поля имеют тип int, и в параметрах имеют свойство IdentitySpecification=’Yes’, что позволяет СУБД, автоматически, по мере добавления записей в таблицу, наращивать идентификатор.
Заполнение таблиц Работники: Рисунок 7/1 – Заполнение таблицы tb_worker Таблица, в которой содержится список паспортных столов: Рисунок 7/2 – Заполнение таблицы tb_pas_department
Паспортные данные работников: Рисунок 7/3 – Заполнение таблицы tb_passport Страны, области, города, районы:
Рисунок 7/4 – Заполнение таблиц: Список подразделений и участков: Рисунок 7/5 – Заполнение таблицы «tb_podrazdeleniye» Рисунок 7/6 – Заполнение таблицы «tb_uchastok» Согласно Законодательной базе Украины, указание национальности в анкете работники не является обязательным условием, но, тем не менее, была создана таблица, в которой хранится список национальностей, на случай модификации законов:
Рисунок 7/7 – Заполнение таблиц: «tb_nationality, tb_gender»
Список профессий: Рисунок 7/7 – Заполнение таблицы «tb_occupation» Признаки карьерного движения: Рисунок 7/8 – Заполнение таблицы «tb_priznak» Журнал карьерного движения: Рисунок 7/9 – Заполнение таблицы «tb_dvizeniye» Список приказов, которые сопровождают любое карьерное движение работника: Рисунок 7/10 – Заполнение таблицы «tb_prikaz»
Создание запросов Для создания и тестирования запросов, была выбрана среда разработки MS WebMatrix, которая позволяет создавать веб-приложения с помощью технологии ASP.NET, которая является составной частью платформы Microsoft .NET. .NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является исполняющая среда Common Language Runtime (CLR), способная выполнять как обычные программы, так и серверные веб-приложения. .NET Framework поддерживает создание программ, написанных на разных языках программирования. Рассмотрим примеры с комбинацией языков C# и HTML. Запрос №1.Выведем на экран список профессий, с названием подразделения к которому они относятся, и ставкой/должностным окладом на том или ином участке. Код приведен в Листинге 1. Результатом будет таблица вида: Запрос №2. Выведем на экран основные данные о работниках предприятия. Код представлен в Листинге 2. Результатом работы запроса будет: Запрос №3. В данном запросе выведем полную информацию о работнике «Пронякин Дмитрий Богданович», нам известен его табельный номер «8508». Нас интересует базовая информация, указанная в анкете, должность, карьерные движения:
Заключение Итак, в данной курсовой работе, мы получили базу данных учета работников угледобывающего предприятия. В ней содержится следующая информация: · Основные данные о работнике (ТН, ФИО, место прописки и т.д.); · Список подразделений на предприятии; · Список участков по каждому подразделению на предприятии; · Журнал карьерных движений работников. Следующими этапами на пути развития данной информационной системы будут: · доработка схемы базы данных; · создание приложения клиент/сервер; · разработка графического интерфейса; · разработка системы автоматического учета работников. Основной задачей системы автоматического учета (САУР – комплекс считывающих устройств) будет, отслеживание спуска/подъема работников в шахту, учета ламп. Эти параметры позволят: рассчитать время проведенное работником на рабочем месте, а затем и заработную плату с учетом почасовой ставки, либо должностного оклада, составить табель выходов. Приложение клиент/сервер, опираясь на информацию, получаемую от САУР, свяжет различные отделы поверхностной группы предприятия, с целью автоматического расчета заработной платы работников.
Список использованной литературы 1. Браун С. Visual Basic 6: Учебный курс. – СПб.: «Питер», 2002. – 576 с. 2. Голицина О.Л. Базы данных: Учебное пособие. – М.: «ФОРУМ: ИНФРА-М», 2003. – 352 с. 3. Дейт К. Дж. Введение в системы баз данных. – СПб.: Издательский дом «Вильямс», 2000. – 848 с. 4. Карпова Т.С. Базы данных: модели, разработка, реализация. – СПб.: «Питер», 2002. – 304 с. 5. Хомоненко А.Д. Базы данных: Учебник для вузов. – М.: «Корона», 2000. – 421 с. 6. Кузнецов С. Д. Основы баз данных. — 2-е изд. — М.: Интернет-университет информационных технологий; БИНОМ. Лаборатория знаний, 2007. — 484 с. — ISBN 978-5-94774-736-2 7. Туманов В.Е. Основы проектирования реляционных баз данных. – М.: Интернет-университет информационных технологий; БИНОМ. Лаборатория знаний, 2011 г. – 424с. 8. Грабер М. SQL. Справочное руководство. – London: Лори, 2006 г. – 368с. - ISBN 5-85582-117-X, 0-7821-2538-7 9. Ризаев И.С., Яхина З.Т. Базы данных. Учебное пособие. Казань.: КГТУ. 2002. 10. Ризаев И.С., Яхина З.Т. Базы данных. Лабораторный практикум. – Казань, КГТУ, 2002. 11. Захарова З.Х., Ризаев И.С., Яхина З.Т. Методические указания к курсовой работе по дисциплине «Базы данных». – Казань, КГТУ, 2006. 12. Карпова Т.С. Базы данных: Модели, разработка, реализация. Учебник. – СПб: Питер, 2001. 13. Бен – Ган И. Microsoft SQL Server 2012. Высокопроизводительный код T-SQL. Оконные функции. – СПб.: Русская редакция, 2013г. – 256 с. - ISBN 978-5-7502-0416-8, 978-5-9775-0901-5 14. Петкович Д. Microsoft SQL Server 2008. Руководство для начинающих. – СПб.: БХВ-Петербург, 2009 г. – 752 с. - ISBN 978-0-07-154638-6, 978-5-9775-0149-1 15. Moroney L. Introducing Microsoft WebMatrix. Microsoft, 2011 г. – 320 с. – ISBN 978-0-73-5649705
Приложение А Листинг 1 @{ var db = Database.Open("Worker"); var selectQueryString = "SELECT" + " id_profession ID, tb_podrazdeleniye.Name PODR,tb_uchastok.Name NAMEU,tb_occupation.Name NAMEPROF,kategori,stavka," + " Status" + " FROM [Worker].[dbo].[tb_occupation]" + " JOIN tb_uchastok ON tb_occupation.id_uchastok = tb_uchastok.id_uchastok" + " JOIN tb_podrazdeleniye ON tb_uchastok.id_podrazdeleniye = tb_podrazdeleniye.id_podrazdeleniye"; var data = db.Query(selectQueryString); var grid = new WebGrid(source: data, defaultSort: "ID", rowsPerPage: 14); }
<!DOCTYPE html>
<html lang="en"> <head> <meta charset="utf-8" /> <title>Отображение данных при помощи WebGrid</title> <style type="text/css"> .grid { margin: 4px; border-collapse: collapse; width: auto;} .head {background-color: #E8E8E8; font-weight: bold; color: #FFF;} .grid th,.grid td { border: 1px solid #C0C0C0; padding: 5px;} .alt { background-color: #E8E8E8; color: #000;} .product { width: auto; font-weight:bold;text-align: center; } .stav { width: auto;text-align: right; }
</style> </head> <body> <h1>GridOccupation List</h1> <div id="grid"> @grid.GetHtml( tableStyle: "grid", headerStyle: "head", alternatingRowStyle: "alt", columns: grid.Columns( grid.Column("ID","№", style:"product"), grid.Column("PODR","Подразделение",format:@<text>@item.PODR</text>), grid.Column("NAMEU","Участок",format:@<text>@item.NAMEU</text>), grid.Column("NAMEPROF","Должность",format:@<text>@item.NAMEPROF</text>), grid.Column("kategori","Разряд",style:"product"), grid.Column("stavka","Ставка",format:@<text>₴@item.stavka</text>,style:"stav"), grid.Column("Status","Статус",format:@<text>@item.Status</text>) ) ) </div> </body> </html>
Листинг 2 @{ var db = Database.Open("Worker"); var selectQueryString = "SELECT id_worker ID, tableNumber TN, FirstName FN, MiddleName MN," + " LastName LN, convert(char(10),date_of_birth,102) as date, tb_gender.value GN,series, pasnumber,INN, INNsafe, phoneNumber" + " FROM tb_worker LEFT JOIN tb_passport ON tb_worker.id_passport=tb_passport.id_passport" + " JOIN tb_gender ON tb_passport.id_gender=tb_gender.id_gender";} <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Worker List</title> <style> table, th, td { border: solid 1px #bbbbbb; border-collapse: collapse; padding: 2px; } </style> </head> <body> <h1>Worker List</h1> <h2>tb_worker</h2> <table><thead><tr> <th>Id</th> <th>TN</th> <th>Фамилия</th> <th>Имя</th> <th>Отчество</th> <th>Пол</th> <th>Дата рождения</th> <th>Серия</th> <th>Номер</th> <th>ИНН</th> <th>Код соц. страхования</th> <th>Телефонный номер</th></tr></thead> <tbody>@foreach(var row in db.Query(selectQueryString)) {<tr> <td>@row.ID</td> <td>@row.TN</td> <td>@row.FN</td> <td>@row.MN</td> <td>@row.LN</td> <td>@row.GN</td> <td>@row.date</td> <td>@row.series</td> <td>@row.pasnumber</td> <td>@row.INN</td> <td>@row.INNsafe</td> <td>@row.phoneNumber</td></tr>} </tbody> </table> </body></html>
Листинг 3 @{ var db = Database.Open("Worker"); string tn="8508"; var selectQueryString = "SELECT id_worker, tableNumber, FirstName, MiddleName, LastName," + " tb_worker.id_passport IDPAS,series,pasnumber,CONVERT(char(10),date_of_birth,102) as date1,tb_gender.value GV,TBPD.Name IDPD, tb_country.value IDCN," + " tb_region.value IDRN, tb_city.value IDCCN, CONVERT(char(10),date,102) as date2 FROM tb_worker " + " JOIN tb_passport ON tb_worker.id_passport=tb_passport.id_passport" + " JOIN tb_pas_department AS TBPD ON tb_passport.id_pas_department=TBPD.id_pas_department" + " JOIN tb_country ON tb_country.id_country=TBPD.id_country" + " JOIN tb_region ON tb_region.id_region=TBPD.id_region" + " JOIN tb_city ON tb_city.id_city=TBPD.id_city" + " JOIN tb_gender ON tb_passport.id_gender=tb_gender.id_gender" + " WHERE tableNumber=" + tn; var selectQueryString2 = "SELECT phoneNumber,tb_country.value TBCV,tb_region.value TBRV, tb_city.value TBCCV," + " tb_district.value TBDV, zipCode, street, house_number, flat_number FROM tb_worker" + " JOIN tb_passport ON tb_worker.id_passport=tb_passport.id_passport" + " JOIN tb_country ON tb_country.id_country=tb_passport.id_country" + " JOIN tb_region ON tb_region.id_region=tb_passport.id_region" + " JOIN tb_city ON tb_city.id_city=tb_passport.id_city" + " JOIN tb_district ON tb_district.id_district=tb_passport.id_district" + " WHERE tableNumber=" + tn; var selectQueryString3 = "SELECT tableNumber, tb_priznak.Value TBV,"+ " tb_occupation.Name TOPO, CONVERT(char(10),date_dvizeniya,102) as date,"+ " tb_uchastok.Name NU,tb_podrazdeleniye.Name NP FROM tb_worker" + " RIGHT JOIN tb_dvizeniye ON tb_dvizeniye.id_worker=tb_worker.id_worker" + " JOIN tb_priznak ON tb_priznak.id_priznak=tb_dvizeniye.id_priznak" + " JOIN tb_occupation ON tb_occupation.id_profession=tb_dvizeniye.id_profession" + " JOIN tb_uchastok ON tb_uchastok.id_uchastok=tb_occupation.id_uchastok" + " JOIN tb_podrazdeleniye ON tb_podrazdeleniye.id_podrazdeleniye=tb_uchastok.id_podrazdeleniye" + " WHERE tableNumber=" + tn; } <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Worker info</title> <style> table, th, td { border: solid 1px #bbbbbb; border-collapse: collapse; padding: 2px; } </style> </head> <body> <h1>Worker info</h1> <h2>Работник</h2> <table> <thead> <tr> <th>ID</th> <th>TN</th> <th>Фамилия</th> <th>Имя</th> <th>Отчество</th> <th>Дата рождения</th> <th>Пол</th> </tr> </thead> <tbody> @foreach(var row in db.Query(selectQueryString)) { <tr> <td>@row.id_worker</td> <td>@row.tableNumber</td> <td>@row.FirstName</td> <td>@row.MiddleName</td> <td>@row.LastName</td> <td>@row.date1</td> <td>@row.GV</td> </tr> } </tbody> </table> <h3>Пасспортные данные</h3> <table> <thead> <tr> <th>Серия</th> <th>Номер</th> <th colspan="4">Место получения</th> <th>Дата получения</th> </tr> </thead> <tbody> @foreach(var row in db.Query(selectQueryString)) { <tr> <td>@row.series</td> <td>@row.pasnumber</td> <td>@row.IDCN</td> <td>@row.IDRN</td> <td>@row.IDCCN</td> <td>@row.IDPD</td> <td>@row.date2</td> </tr> } </tbody> </table> <h3>Данные о прописке</h3> <table> <thead> <tr> <th colspan="8">Место прописки</th> <th>Телефон</th> </tr> </thead> <tbody> @foreach(var row in db.Query(selectQueryString2)) { <tr> <td>@row.TBCV</td> <td>@row.TBRV</td> <td>@row.TBCCV</td> <td>@row.TBDV</td> <td>@row.zipCode</td> <td>@row.street</td> <td>@row.house_number</td> <td>@row.flat_number</td> <td>@row.phoneNumber</td> </tr> } </tbody> </table> <h3>Движения</h3> <table> <thead> <tr> <th>TN</th> <th>Признак</th> <th>Подразделение</th> <th>Участок</th> <th>Должность</th> <th>Дата движения</th> </tr> </thead> <tbody> @foreach(var row in db.Query(selectQueryString3)) { <tr> <td>@row.tableNumber</td> <td>@row.TBV</td> <td>@row.NP</td> <td>@row.NU</td> <td>@row.TOPO</td> <td>@row.date</td> </tr> } </tbody> </table> </body></html>
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Почему стероиды повышают давление?: Основных причин три... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (572)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |