Разработка базы данных патентов
ГОУ
ВПО «Московский государственный университет приборостроения и информатики»
Факультет
ИТ
Кафедра
ИТ-7 «Автоматизированные системы управления и информационные технологии»
ДОМАШНЯЯ
РАБОТА
по
дисциплине: «Управление данными»
на
тему: «Разработка базы данных патентов»
Выполнил: студент
4-го курса
Группы 230201
специальности
230201
Кириченко М.А.
Преподаватель:
Чижиков В.И.
Москва
- 2013
СОДЕРЖАНИЕ
ТЕКСТОВОЕ
ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ
Основные
предметно-значимые сущности и их атрибуты
Ограничения
предметной области
Основные
требования к функциям системы
МОДЕЛИРОВАНИЕ
ДАННЫХ
Концептуальная
схема базы данных в виде ER-диаграммы
Схема
данных
ЛИСТИНГ
Листинг
файла unititel4.pro
Листинг
файла mainwindow.h
Листинг
файла main.cpp
Листинг
файла mainwindow.cpp
Форма
mainwindow.ui
ТЕКСТОВОЕ ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ
СУБД Патенты - центр информации о патентах.
Представление более подробной информации о каждом из них.
В своей работе я попытался реализовать систему
управления, которая сможет предоставить пользователю информацию о патенте. База
данных patent.sqlite, создана в программе SQLiteManager.
база данный патент предметная
Основные предметно-значимые сущности и их
атрибуты
Сущности:
Сущности Patent соответствуют атрибуты:
Patent_id
Claim
Сущности Data соответствуют атрибуты:
Data_id_number_of_filing_of_issue_of_patent
Сущности Claim соответствуют атрибуты:_id
Сущности Owner соответствуют атрибуты:_id_Name
Ограничения предметной области
Patent - содержит следующие данные:
Patent_id - ключевой атрибут, содержит
уникальное значение.
Title - название патента.
Owner - атрибут типа int, который устанавливает
отношение с сущностью Owner.
Country - страна патентования.
Data - атрибут типа int, который устанавливает
отношение с сущностью Data.
Claim - атрибут типа int, который устанавливает
отношение с сущностью Claim.
2) Data - содержит следующие данные:
Data_id - ключевой атрибут, содержит уникальное
значение.
Patent_number - идентификационный номер патента.
- Data_of_filing - дата
подачи
заявки.
- Data_of_issue - дата принятия заявки.
- Class_of_patent - класс
патента.
3) Claim - содержит следующие данные:
Claim_id - ключевой атрибут, содержит уникальное
значение.
Formula - формула патента.
4) Owner - содержит следующие данные:
Owner_id - ключевой атрибут, содержит уникальное
значение.
Основные требования к функциям системы
Основные требования к надежности базы данных:
-обеспечение целостности хранимой информации;
-обеспечение защиты базы данных от несанкционированного доступа.
МОДЕЛИРОВАНИЕ ДАННЫХ
Концептуальная схема базы данных в виде
ER-диаграммы
Схема данных
ЛИСТИНГ
Листинг файла
unititel4.pro
+= core gui+= sql= untitled4= app+=
main.cpp\.cpp+= mainwindow.h+= mainwindow.ui
Листинг файла
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtSql>Ui
{MainWindow;
}MainWindow : public QMainWindow
{_OBJECT
public:
explicit MainWindow(QWidget *parent
= 0);
~MainWindow();
private slots:
void on_pushButton_clicked();AllTable();showData(QModelIndex
index);showClaim(QModelIndex index);
private:
Ui::MainWindow *ui;*model;*mod;
};
#endif // MAINWINDOW_H
Листинг файла
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{a(argc, argv);w;.show();a.exec();
}
Листинг файла
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSql>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),(new
Ui::MainWindow)
{>setupUi(this);
// Соединение с базой данных
QSqlDatabase dbase =
QSqlDatabase::addDatabase("QSQLITE");.setDatabaseName("patent.sqlite");
>tableView->setShowGrid(false);
// Убирает
сетку
в
таблице>tableView_2->setHidden(true);
// Видимость
таблицы
2>tableView_3->setHidden(true); // Видимость
Таблицы
3
// Очистка комбо-бокса и вставка вариантов
ui->comboBox->clear();>comboBox->insertItem(0,"ChoseTable");>comboBox->insertItem(1,"Patent");>comboBox->insertItem(3,"Data");>comboBox->insertItem(4,"Claim");>comboBox->insertItem(5,"Owner");
// При выборе варианта в комбо-боксе,
отправляется сигнал в слот AllTable
connect(ui->comboBox,
SIGNAL(currentIndexChanged(QString)), SLOT(AllTable()));
}::~MainWindow()
{ui;
}
// Функция, которая отображает варианты
выбранные в комбо-боксе
void MainWindow::AllTable()
{= new
QSqlRelationalTableModel(this);(ui->comboBox->currentText() ==
"Patent")
{>tableView_2->setHidden(false);>tableView_3->setHidden(false);
mod->setTable("Patent");
// Устанавливает отношения между таблицей Patent
и другими
mod->setRelation(2,
QSqlRelation("Owner", "Owner_id",
"Owner_Name"));>setRelation(4, QSqlRelation("Data",
"Data_id", "Data_id"));>setRelation(5,
QSqlRelation("Claim", "Claim_id", "Claim_id"));
// При нажатии, отправляет сигнал в слот
showData и showClaim
connect(ui->tableView,
SIGNAL(clicked(QModelIndex)),this,
SLOT(showData(QModelIndex)));(ui->tableView,
SIGNAL(clicked(QModelIndex)),this, SLOT(showClaim(QModelIndex)));
}if(ui->comboBox->currentText()
== "Data") {>tableView_2->setHidden(true);>tableView_3->setHidden(true);>setTable("Data");
}if(ui->comboBox->currentText()
== "Claim")
{>tableView_2->setHidden(true);>tableView_3->setHidden(true);>setTable("Claim");
}if(ui->comboBox->currentText()
== "Owner")
{>tableView_2->setHidden(true);>tableView_3->setHidden(true);>setTable("Owner");
}{>tableView_2->setHidden(true);>tableView_3->setHidden(true);>clear();
}>select();>tableView->setModel(mod);
}
// Активируется в 1 таблице по сигналу,
показывает данные во 2 таблицеMainWindow::showData(QModelIndex index)
{= new
QSqlRelationalTableModel;record =
mod->record(index.row());>setTable("Data");>setFilter("Data_id
= '" + index.data().toString() +
'\'');>select();>tableView_2->setModel(mod);
}
// Активируется в 1 таблице по сигналу,
показывает данные во 3 таблицеMainWindow::showClaim(QModelIndex index)
{= new
QSqlRelationalTableModel;record =
mod->record(index.row());>setTable("Claim");>setFilter("Claim_id
= '" + index.data().toString() +
'\'');>select();>tableView_3->setModel(mod);>tableView_3->setRowHeight(0,500);>tableView_3->setColumnWidth(1,500);
}
// Выполняет SQL запрос при нажатии на
кнопкуMainWindow::on_pushButton_clicked()
{>tableView_2->setHidden(true);>tableView_3->setHidden(true);=
new QSqlQueryModel;query;str = ui->lineEdit->text();.exec(str);>setQuery(query);>tableView->setModel(model);
}
Форма
mainwindow.ui
Список литературы
1.
Дейт К. «Введение в системы баз данных»
.
http://doc.crossplatform.ru/qt/4.5.0/qsqlrelationaltablemodel.html
.
http://citforum.ru/database/dblearn/dblearn06.shtml#01
.
http://habrahabr.ru/post/51650/
.
http://citforum.ru/database/dblearn/dblearn06.shtml#01