<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Stored Procedures as an Implementation Tool Business Logic in Applications of Databases*</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>N. Filimon</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>V.I. Vernadsky Crimean Federal University</institution>
          ,
          <addr-line>Yalta</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <fpage>57</fpage>
      <lpage>67</lpage>
      <abstract>
        <p>The article discusses a database object such as a stored procedure and the advantages of using such an approach when developing software in a clientserver architecture. The definition of stored procedures is given, the features of their creation and compilation are listed. The syntax of creating stored procedures in the client-server database management system MySQL is considered. The examples of stored procedures developed for the database for accounting student performance, which demonstrate the feasibility of their use and advantages compared with the usual queries are given. The article provides an example of using the stored procedure on the client side of an application developed in the Embarcadero RAD Studio integrated environment using BDE (Borland Database Engine) technology as a tool for accessing the database.</p>
      </abstract>
      <kwd-group>
        <kwd>information systems</kwd>
        <kwd>client-server architecture</kwd>
        <kwd>databases</kwd>
        <kwd>CASE</kwd>
        <kwd>ER-modeling</kwd>
        <kwd>SQL-query</kwd>
        <kwd>stored procedure</kwd>
        <kwd>MySQL</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>In applications that implement the client-server architecture, and now, this is the most
common architecture for both web-based and desktop applications, data processing is
distributed in such a way that the data presentation program is located on the user's
machine (on the client), and the data management program and the data itself are placed
on the server. The server software accepts requests from client software and returns to
it the results of processing these requests.</p>
      <p>
        The popularity of client-server technology is inextricably linked with IBM's
invention of the query language to SQL relational databases – Structured Query Language,
which is currently the universal standard for working with databases. Despite the fact
that due to the growing amount of data and their complication, a new approach to data
storage and processing is being developed – the NoSQL technology [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], still in the
official DB-Engines rating (https://db-engines.com/en/ranking) as of May 2019, the
first four places are occupied by relational databases: Oracle, MySQL, Microsoft SQL
Server, PostgreSQL.
*
      </p>
      <p>
        In client-server applications, it is the server that is responsible for managing the
database, and client machines may have different applications using this data. Specialized
software connects the client and the server, allowing the client to perform requests and
access the database. A comparative analysis of popular client-server database
management systems (DBMS) is given in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. One of the tools that provides the client-server
architecture is an element of the SQL language as stored procedures.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Stored procedures as a data processing tool</title>
      <p>
        The stored procedure is a compiled routine and is part of the database metadata. The
stored procedure compiler is built into the server core. It is the use of stored procedures
that allows implementing most of the application's business logic at the server level,
which significantly improves application performance, centralizes data processing and
minimizes errors, ensuring data integrity [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        Stored procedures are a SQL tool that allows you to create queries with parameters
first, because when creating a procedure, you can set a list of input parameters, which
ensures that the corresponding arguments are accepted when it is called. Stored
procedures can return information that the user expects, as well as in the case of incorrect
data - an error message. Considering the fact that the stored procedure is compiled
before it is stored as an object in the database, the form of the procedure is saved each
time it is called. This fact reduces the amount of data involved in the exchange between
the client application calling the procedure and the database server. The use of stored
procedures significantly increases the level of security provided by the use of the
GRANT and REVOKE instructions, by which users are granted different access
privileges, since procedures can be used to control access authorization [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Thus, the user
on the client side performs only the functions that are allowed to him. This allows you
to tightly control the actions allowed by the client, what turn reduces the likelihood of
data integrity problems due to client application errors.
      </p>
      <p>
        Stored procedures are used in other tasks besides the ones stated above. For example,
in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], the use of MySQL stored procedures for working with iterators OCL (Object
Constraint Language), a language that serves to define constraints and is designed to
create navigation expressions, logical and other queries, is considered.
      </p>
      <p>The syntax for creating and calling stored procedures is somewhat different in
different client-server database management systems.</p>
      <p>Consider the examples of stored procedures for the MySQL server, which is widely
used both in web-based applications and in desktop ones. Not only hundreds of
thousands of commercial websites work on this base, but also a large number of corporate
applications use MySQL as a server-based DBMS. The MySQL distribution contains
API (Application Programming Interface) modules for interacting with such
programming languages as C, C ++, Java, PHP, Python, etc. MySQL provides support for
various character sets, including Cyrillic. To integrate into the operating system and to
access the database from the application software, the MySQL distribution kit contains
a set of Open Database Connectivity (ODBC) drivers.</p>
      <p>Stored procedures, like other database objects, are created using the DDL (Data
Definition Language) language.</p>
      <p>The general syntax for creating a stored procedure in MySQL is:
CREATE [DEFINER = { user | CURRENT_USER }]
PROCEDURE имя_процедуры ([параметры_процедуры[,...]])
[характеристики ...] тело_подпрограммы
параметры_процедуры: [ IN | OUT | INOUT ] имя_параметра
type
type: Любой валидный тип данных MySQL
характеристики: COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
тело_подпрограммы: Валидный оператор программы SQL</p>
      <sec id="sec-2-1">
        <title>Call the stored procedure by the operator:</title>
      </sec>
      <sec id="sec-2-2">
        <title>CALL имя_процедуры([параметры_процедуры[,...]])</title>
        <p>3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Programming stored procedures on the server</title>
      <p>
        As an example, consider the task of accounting student performance. The development
of an information system begins with the construction of a conceptual database model.
As a modeling tool, the model proposed by P. Chen in 1976 [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] is used. This model has
been called the “entity-relationship” – (ER-model) and is a set of concepts for
describing the logical structure of the database. This model is used for a wide range of tasks,
as shown in [
        <xref ref-type="bibr" rid="ref10 ref3 ref7">3, 7, 10</xref>
        ] and for various DBMS [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>The basic concepts of the ER-model – is the "entity" and "relationship." An entity is
any object in the real world or a process that is significant in the context of the task, in
fact it is a class of similar objects, information about which should be taken into
account. Each entity is identified by a name and a set of attributes that characterize it. An
entity key is a set of attributes that uniquely identify each entity instance. An entity is
a projection of the notion “relation” of the relational model. Connection is a relationship
of entities that defines their functional dependence. In this case, one of the entities acts
as a parent in relation to the other, and the second – as a child. Between them there are
two main types of links – identifying and non-identifying. When the type of link is
identifying, the primary key of the parent entity becomes the primary key or part of the
composite primary key of the child. With a non-identifying relationship, the primary
key of the parent entity becomes the child's foreign key as one of the non-key attributes.
As it is known from the conceptual apparatus of the relational model, the primary key
of the entity is responsible for ensuring the categorical integrity of the database, which
by definition cannot have a NULL value, i.e. have an undefined value. Relationships
provide referential integrity, which means that no foreign key value in a child entity
can have a value that is missing among the primary key values of the parent entity.</p>
      <p>Several methodologies for constructing "entity-relationship" models are known. The
most widespread methodology is IDEF1X.</p>
      <p>The CASE-tool (Computer Aided Software / System Engineering) AllFusion ERwin
Data Modeler is used as a modeling tool.</p>
      <p>The logical model of database "student" is presented below (Fig. 1).
The model has five entities: student (student), department (faculty), discipline
(discipline), teacher (teacher), academic performance (exam). Relations between entities are
determined by the following rules: each student studies at a department, each teacher
works at a department, a teacher teaches every discipline, each student pass several
disciplines, and several students pass each discipline. This many-to-many relationship
is implemented as an entity "exam", which is identified through its foreign keys from
the student and discipline entities and is subordinate.</p>
      <p>The AllFusion ERwin Data Modeler package allows you not only to build a database
model, but also to generate a database: tables with key fields and implement referential
integrity constraints on foreign keys. To do this, you can use the “Forward Engineer /
Schema Generation ...” command from the “Tools” menu.</p>
      <p>The following are SQL instructions for creating tables of database "student".</p>
      <sec id="sec-3-1">
        <title>CREATE TABLE discipline(</title>
        <p>id_discipline smallint NOT NULL,
title varchar(20) NULL,
id_teacher smallint NOT NULL );</p>
      </sec>
      <sec id="sec-3-2">
        <title>CREATE UNIQUE INDEX PRIMARY ON discipline( id_discipline );</title>
      </sec>
      <sec id="sec-3-3">
        <title>ALTER TABLE discipline ADD PRIMARY KEY (id_discipline);</title>
      </sec>
      <sec id="sec-3-4">
        <title>CREATE INDEX id_teacher ON discipline ( id_teacher);</title>
      </sec>
      <sec id="sec-3-5">
        <title>CREATE TABLE exam(</title>
        <p>id_stud smallint NOT NULL,
id_discipline smallint NOT NULL,
_score smallint NULL );</p>
      </sec>
      <sec id="sec-3-6">
        <title>CREATE UNIQUE INDEX PRIMARY ON exam( id_stud, id_discipline);</title>
      </sec>
      <sec id="sec-3-7">
        <title>ALTER TABLE exam ADD PRIMARY KEY (id_stud,id_discipline);</title>
      </sec>
      <sec id="sec-3-8">
        <title>CREATE INDEX id_subj ON exam ( id_discipline);</title>
      </sec>
      <sec id="sec-3-9">
        <title>CREATE TABLE faculty(</title>
        <p>id_fac smallint NOT NULL,
title varchar(15) NULL );</p>
      </sec>
      <sec id="sec-3-10">
        <title>CREATE UNIQUE INDEX PRIMARY ON faculty( id_fac);</title>
      </sec>
      <sec id="sec-3-11">
        <title>ALTER TABLE faculty ADD PRIMARY KEY (id_fac);</title>
        <p>CREATE TABLE student(
id_stud smallint NOT NULL,
fio VARCHAR(40) NOT NULL,
birthday date NULL,
course smallint NULL,
id_fac smallint NOT NULL,
resume text(65535) NULL );</p>
      </sec>
      <sec id="sec-3-12">
        <title>CREATE UNIQUE INDEX PRIMARY ON student( id_stud );</title>
      </sec>
      <sec id="sec-3-13">
        <title>ALTER TABLE student</title>
      </sec>
      <sec id="sec-3-14">
        <title>ADD PRIMARY KEY (id_stud);</title>
      </sec>
      <sec id="sec-3-15">
        <title>CREATE INDEX id_fac ON student (id_fac);</title>
      </sec>
      <sec id="sec-3-16">
        <title>CREATE TABLE teacher(</title>
        <p>id_teacher smallint NOT NULL,
fio VARCHAR(40) NULL,
id_fac smallint NOT NULL );</p>
      </sec>
      <sec id="sec-3-17">
        <title>CREATE UNIQUE INDEX PRIMARY ON teacher( id_teacher );</title>
      </sec>
      <sec id="sec-3-18">
        <title>ALTER TABLE teacher</title>
      </sec>
      <sec id="sec-3-19">
        <title>ADD PRIMARY KEY (id_teacher);</title>
      </sec>
      <sec id="sec-3-20">
        <title>CREATE INDEX id_fac ON teacher( id_fac );</title>
      </sec>
      <sec id="sec-3-21">
        <title>ALTER TABLE discipline</title>
      </sec>
      <sec id="sec-3-22">
        <title>ADD FOREIGN KEY subject_ibfk_1 (id_teacher)</title>
      </sec>
      <sec id="sec-3-23">
        <title>REFERENCES teacher(id_teacher);</title>
      </sec>
      <sec id="sec-3-24">
        <title>ALTER TABLE exam</title>
      </sec>
      <sec id="sec-3-25">
        <title>ADD FOREIGN KEY exam_ibfk_3 (id_stud)</title>
      </sec>
      <sec id="sec-3-26">
        <title>REFERENCES student(id_stud)ON DELETE CASCADE;</title>
      </sec>
      <sec id="sec-3-27">
        <title>ALTER TABLE exam</title>
      </sec>
      <sec id="sec-3-28">
        <title>ADD FOREIGN KEY exam_ibfk_2 (id_discipline)</title>
      </sec>
      <sec id="sec-3-29">
        <title>REFERENCES discipline(id_discipline);</title>
      </sec>
      <sec id="sec-3-30">
        <title>ALTER TABLE student</title>
      </sec>
      <sec id="sec-3-31">
        <title>ADD FOREIGN KEY student_ibfk_1 (id_fac)</title>
      </sec>
      <sec id="sec-3-32">
        <title>REFERENCES faculty(id_fac);</title>
      </sec>
      <sec id="sec-3-33">
        <title>ALTER TABLE teacher</title>
      </sec>
      <sec id="sec-3-34">
        <title>ADD FOREIGN KEY teacher_ibfk_1 (id_fac) REFERENCES faculty(id_fac);</title>
        <p>The stored procedure is associated with a specific database, so before creating it, you
must go to this database using the standard instruction: "use database_name".</p>
        <p>Consider an example of a procedure that allows you to get the results of intermediate
certification of a particular student by his last name, including the title of the disciplines
that he passed, and the resulting assessments.
delimiter ^
create procedure stud_fio_scores(in in_fio varchar(20))
begin
declare stud_id integer;
select id_stud into stud_id from student where
fio=in_fio;
select id_stud, title, _score from exam inner join
discipline using (id_discipline) where id_stud=stud_id;</p>
        <p>Since inside the procedure operators are separated by a semicolon, and in SQL this
character is a separator for closing an operator, the first instruction of the procedure sets
another separator character. In this case, this "^". Quite often, the symbol "//" or "$" is
used as a separator.</p>
        <p>As an input parameter, the procedure takes the student's last name, according to
which the corresponding primary key of the student table id_stud is determined using
the query. This value is stored in a local variable, which is declared inside the procedure
by the declare statement. As students are identified in the table with the results of the
exams using the key field (id_stud), it is this calculated parameter that is transmitted to
the second query of the procedure body, allowing you to get the desired result.</p>
        <p>The following stored procedure allows you to get a list of students who have passed
the session on the "good" and "excellent", which can apply for scholarships. The
procedure displays information in the format of last name of student, course and name of
faculty.
delimiter ^
create procedure student_score_not3( )
begin
select fio, course, title from exam inner join (student
inner join faculty using(id_fac)) using(id_stud) group by
id_stud having min(_score)&gt;3;
Below is an example of a stored procedure that determines the student with the highest
average score (if there are several such students, the entire list will be displayed) and
the student with the lowest score based on the results of the intermediate attestation.
delimiter ^
create procedure max_min_avg()
begin
declare min_ball double(6,4);
declare max_ball double(6,4);
select max(sr_b) into max_ball from sr_ball;
select min(sr_b) into min_ball from sr_ball;</p>
        <p>select fio, avg(_score) as max_sr from student, exam
where exam.id_stud=student.id_stud group by exam.id_stud
having max_sr &gt;=max_ball;</p>
        <p>select fio, avg(_score) as min_sr from student, exam
where exam.id_stud=student.id_stud group by exam.id_stud
having min_sr &lt;=min_ball;
Creating a complex of procedures that implement the basic business processes ensures
reliable operation of the information system.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Using stored procedures in the client part of the application</title>
      <p>
        The client-server MySQL DBMS, like other SQL servers, does not have a graphical
user interface. Consider the technology of using stored procedures in the client part of
the application for MySQL in the C++ programming language in the Embarcadero
RAD Studio integrated software development environment - the Rapid Application
Development (RAD) environment. Combining powerful tools of the C ++ programming
language with the library of visual components provides the programmer with the tools
for the rapid development of a graphical interface [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>Embarcadero RAD Studio provides a programmer with several technologies for
developing database applications. Consider one of them - BDE (Borland Database
Engine). The main components of the BDE technology that provide the data set are such
components as TTable (table), TQuery (query) and TStoredProc (stored procedure).
There is a large set of visualization and data management components, such as DBGrid
(grid), DBNavigator (navigator), DBText (label), DBEdit (input field), etc. The
DataSource component is used to exchange information between data sets and visual
components. - data source. The connection of components providing access to the database
is shown in Fig. 2.</p>
      <sec id="sec-4-1">
        <title>Database</title>
      </sec>
      <sec id="sec-4-2">
        <title>Data Set:</title>
        <p>Table, Query,
StoredProc…</p>
      </sec>
      <sec id="sec-4-3">
        <title>Data Source:</title>
        <p>DataSource</p>
      </sec>
      <sec id="sec-4-4">
        <title>Elements visualization and control</title>
        <p>DBGrid,
DBText …
of</p>
        <p>Consider a specific example of using a stored procedure in the client part of an
application.</p>
        <p>As an example, take a procedure that displays information about student results of
the examination session. As shown above, the procedure is stored on the server under
the name stud_fio_scores. The input parameter of the procedure is the last name of the
student.</p>
        <p>The data access technology through the StoredProc component requires setting the
following properties: DataBaseName — selected from the list of available databases;
in the StoredProcName property, the required stored procedure is selected from the set
of stored procedures of this database. Since stored procedures often have input
parameters, it is necessary to select the parameter binding mode, for which the
ParamBindMode property is responsible, in which the choice by name or index is
available. The data type and other characteristics of the parameters of the stored procedure
are available by the Params property, in which you can specify a specific value of the
parameter already at the application development stage. In most cases, the value of the
input parameter is set or calculated during program execution (runtime).</p>
        <p>In this example, in addition to the StoredProc component, you will need to use the
TTable (TStudent) component to get a list of student names. This information will be
displayed in such a visual component as the ComboBox drop-down list (CBFio_stud).
This is implemented by the following code snippet.:
void __fastcall TForm1::FormActivate(TObject *Sender)
{</p>
        <sec id="sec-4-4-1">
          <title>TStudent-&gt;First();</title>
          <p>TStudent-&gt;Active=true;</p>
        </sec>
        <sec id="sec-4-4-2">
          <title>CBFio_stud-&gt;Clear(); while(!TStudent-&gt;Eof) { }</title>
          <p>CBFio_stud-&gt;ItemIndex=0;</p>
        </sec>
        <sec id="sec-4-4-3">
          <title>TStudent-&gt;First(); }</title>
        </sec>
        <sec id="sec-4-4-4">
          <title>CBFio_stud-&gt;Items-&gt;Add(TStudentfio-&gt;AsString) ;</title>
        </sec>
        <sec id="sec-4-4-5">
          <title>TStudent-&gt;Next();</title>
          <p>The selection of the input parameter, the call of the stored procedure and the display of
the results of its work is implemented by the following fragment:
void __fastcall TForm1::Button1Click(TObject *Sender)
{</p>
          <p>StoredProc1-&gt;Active=false;</p>
          <p>StoredProc1-&gt;ParamByName("in_fio")-&gt;AsString =</p>
        </sec>
        <sec id="sec-4-4-6">
          <title>CBFio_stud-&gt;Text;</title>
        </sec>
        <sec id="sec-4-4-7">
          <title>StoredProc1-&gt;Prepare(); StoredProc1-&gt;Active=true; }</title>
          <p>In Fig. 3 shows an example of a call to a stored procedure that displays information
about a particular student's grades with an indication of the name of the discipline.</p>
          <p>The presented information, considered examples clearly demonstrate the advantage
of using stored procedures as compared to the usual queries, since it allows you to
receive data with any specific input parameter.</p>
          <p>If using dynamic SQL, reusing a query with a different input parameter would be
difficult. In addition to improving performance, since stored procedures are usually
faster than regular SQL statements, they make it easier to perform repetitive tasks,
allowing you to output complex operations into a single object. The stored procedure
code is compiled once and then stored in compiled form.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>Based on the considered examples of creating stored procedures on a server and their
use in client applications, it can be concluded that the use of a database object such as
a stored procedure in information systems simplifies program maintenance and changes
to it. Being independent of tables or any other database objects, stored procedures
accumulate in themselves all integrity constraints in the form of rules and data processing
algorithms.</p>
      <p>They are implemented on the server and the end user is provided only with the data
processing interface in the form of a call to certain stored procedures. The mechanism
for passing parameters to stored procedures provides the multifunctionality of the query
to obtain the necessary data.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Andreeva</surname>
            ,
            <given-names>Natalia</given-names>
          </string-name>
          <string-name>
            <surname>Viktorovna</surname>
          </string-name>
          .
          <article-title>Database programming: SQL. Data selection [Electronic resource]: study guide / N</article-title>
          . V.
          <string-name>
            <surname>Andreeva</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          <string-name>
            <surname>Yu</surname>
          </string-name>
          . Sabinin; - St. Petersburg Polytechnic University of Peter the Great.
          <source>St. Petersburg</source>
          ,
          <year>2018</year>
          . Available at: http://elib.spbstu.ru/dl/2/s18-
          <fpage>64</fpage>
          .pdf. (In Russian) DOI:
          <fpage>10</fpage>
          .18720/SPBPU/2/s18-
          <lpage>64</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Babanov Alexey</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Petrov</surname>
          </string-name>
          Alexander V.
          <article-title>Implementation of the ERM-model repository in CASE-system Oracle Designer. Vestnik Tomskogo gosudarstvennogo universiteta. Upravlenie, vychislitel'naya tekhnika i informatika</article-title>
          [Tomsk State University Journal of Control and Computer Science],
          <year>2017</year>
          . - No.
          <issue>41</issue>
          , pp.
          <fpage>47</fpage>
          -
          <lpage>54</lpage>
          . (In Russian) DOI:
          <fpage>10</fpage>
          .17223/19988605/41/6
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Babanov</surname>
            ,
            <given-names>A. M.</given-names>
          </string-name>
          <article-title>Database design prospects opening with application of modern semantic data models. Vestnik Tomskogo gosudarstvennogo universiteta. Upravlenie, vychislitel'naya tekhnika i informatika</article-title>
          [Tomsk State University Journal of Control and Computer Science],
          <year>2015</year>
          . - No. 2. pp.
          <fpage>73</fpage>
          -
          <lpage>80</lpage>
          . (In Russian).
          <source>DOI: 10</source>
          .17223/19988605/31/8
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Borovskoy</surname>
            <given-names>I.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shelmina</surname>
            <given-names>E.A.</given-names>
          </string-name>
          <article-title>Comparative analysis of desktop and client-server databases</article-title>
          .
          <source>Reports of Tomsk State University of Control Systems and Radioelectronics</source>
          . 2017 - pp.
          <fpage>92</fpage>
          -
          <lpage>94</lpage>
          . (In Russian).
          <source>DOI: 10.21293/1818-0442-2017-20-4-92-94</source>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Chen</given-names>
            <surname>Peter. The</surname>
          </string-name>
          Entity-Relationship
          <source>Model - Toward a Unified View of Data // ACM Transactions on Database Systems</source>
          ,
          <year>1976</year>
          ,
          <volume>1</volume>
          (
          <issue>1</issue>
          ):
          <fpage>9</fpage>
          -
          <lpage>36</lpage>
          . DOI:
          <volume>10</volume>
          .1145/320434.32044
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Egea</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dania</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clavel</surname>
            <given-names>M.</given-names>
          </string-name>
          <article-title>MySQL4OCL: A Stored Procedure-Based MySQL Code Generator for OCL // Electronic Communications of the EASST</article-title>
          .
          <year>2010</year>
          . - vol.
          <volume>36</volume>
          ,
          <year>16p</year>
          . DOI:
          <volume>10</volume>
          .14279/TUJ.ECEASST.
          <volume>36</volume>
          .445
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kharitonov</surname>
            <given-names>D.I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tarasov</surname>
            <given-names>G.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leontiev</surname>
            <given-names>D.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parakhin R</surname>
          </string-name>
          .V.
          <article-title>Modeling the subject area for the formation of electronic collections</article-title>
          .
          <source>Territory of new opportunities. Bulletin of the Vladivostok State University of Economics and Service</source>
          .
          <year>2018</year>
          . - vol.
          <volume>10</volume>
          , No.2. pp.
          <fpage>125</fpage>
          -
          <lpage>136</lpage>
          . (In Russian).
          <source>DOI: 10</source>
          .24866/VVSU/2073-3984/2018-2/
          <fpage>125</fpage>
          -
          <lpage>136</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Koroleva</given-names>
            <surname>Yu</surname>
          </string-name>
          .A.,
          <string-name>
            <surname>Maslova</surname>
            <given-names>V.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kozlov</surname>
            <given-names>V.K.</given-names>
          </string-name>
          <article-title>Development of the concept of data migration between relational and non-relational database systems</article-title>
          // International Scientific and
          <source>Practical Journal Software &amp; Systems</source>
          .
          <year>2019</year>
          . - vol.
          <volume>32</volume>
          , No.
          <issue>1</issue>
          , pp.
          <fpage>063</fpage>
          -
          <lpage>067</lpage>
          . (In Russian).
          <source>DOI: 10</source>
          .15827/
          <fpage>0236</fpage>
          -
          <lpage>235X</lpage>
          .
          <fpage>125</fpage>
          .
          <fpage>063</fpage>
          -
          <lpage>067</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Poltavtsev</surname>
            <given-names>A</given-names>
          </string-name>
          .A. Dynamic structures in relational databases // International Scientific and
          <source>Practical Journal Software &amp; Systems</source>
          .
          <year>2015</year>
          . - No.
          <issue>2</issue>
          , pp.
          <fpage>95</fpage>
          -
          <lpage>97</lpage>
          . DOI:
          <volume>10</volume>
          .15827/
          <fpage>0236</fpage>
          -
          <lpage>235X</lpage>
          .
          <fpage>110</fpage>
          .
          <fpage>095</fpage>
          -
          <lpage>097</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Posevkin R</surname>
          </string-name>
          .V.
          <article-title>Database semantic model application in natural language user interface development process</article-title>
          .
          <source>Scientific and Technical Journal of Information Technologies, Mechanics and Optics</source>
          .
          <year>2018</year>
          . - vol.
          <volume>18</volume>
          , No.
          <issue>2</issue>
          , pp.
          <fpage>262</fpage>
          -
          <lpage>267</lpage>
          (In Russian).
          <source>DOI: 10.17586/2226-1494- 2018-18-2-262-267</source>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Sazonov</surname>
            ,
            <given-names>A.D.</given-names>
          </string-name>
          <article-title>Application of the MYSQL DBMS to create information systems in the client-server architecture: final qualification work of the bachelor</article-title>
          :
          <volume>09</volume>
          .
          <fpage>03</fpage>
          .
          <fpage>02</fpage>
          -
          <string-name>
            <given-names>Information</given-names>
            <surname>Systems</surname>
          </string-name>
          and Technologies, St. Petersburg Polytechnic University of Peter the Great.
          <year>2018</year>
          .
          <article-title>(In Russian)</article-title>
          .
          <source>DOI: 10</source>
          .18720 / SPBPU / 2 / V18-6487
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>