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