<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:sioct="http://rdfs.org/sioc/types#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/tag/application-server">
  <channel>
    <title>application server</title>
    <link>https://www.linuxjournal.com/tag/application-server</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>FOSS Project Spotlight: Appaserver</title>
  <link>https://www.linuxjournal.com/content/foss-project-spotlight-appaserver</link>
  <description>  &lt;div data-history-node-id="1340271" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/12399f3.jpg" width="800" height="471" alt="""" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/tim-riley" lang="" about="https://www.linuxjournal.com/users/tim-riley" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Tim Riley&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;An introduction to an application server that allows you to build MySQL user interfaces
without
programming.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Assume you are tasked to write a browser-based, MySQL user interface for the table called CITY.
CITY has two columns. The column names are &lt;code&gt;city_name&lt;/code&gt; and &lt;code&gt;state_code&lt;/code&gt;—each combined are the
primary key.
&lt;/p&gt;

&lt;p&gt;
Your user interface must enable users to execute the four main SQL operations: select, insert,
update and delete. The main characteristics for each operation are:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
The select operation needs an HTML prompt form to request a query. It also needs a where
clause generator to select from CITY. After forking MySQL and retrieving the raw rows, it needs to
translate them into an HTML table form.&lt;/li&gt;

&lt;li&gt;
The HTML table form needs to be editable, and user edits need to be translated into update
statements.&lt;/li&gt;

&lt;li&gt;
Each resulting row following the execution of a query is a candidate for deletion.&lt;/li&gt;

&lt;li&gt;
The insert operation needs a blank form. It also needs to translate Apache's common gateway
interface (CGI) into insert statements. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
So, you might create the source file called city.c and type in all the required code. Of course,
relational databases have relations. One city has many persons residing in it. Assume the PERSON
table has the column names of &lt;code&gt;full_name&lt;/code&gt;, &lt;code&gt;street_address&lt;/code&gt;,
&lt;code&gt;city_name&lt;/code&gt; and &lt;code&gt;state_code&lt;/code&gt;. &lt;code&gt;full_name&lt;/code&gt; and
&lt;code&gt;street_address&lt;/code&gt; combined are the primary key (Figure 1).
&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/sites/default/files/styles/max_1300x1300/public/u%5Buid%5D/12399f1.jpg" width="350" height="350" alt="""" class="image-max_1300x1300" /&gt;&lt;p&gt;&lt;em&gt;
Figure 1. Database Schema of Many Persons Residing in One City&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Are you going to create the source file called person.c too? What about customer.c, inventory.c,
order.c, ...?
&lt;/p&gt;

&lt;p&gt;
Alternatively, you might create the source files called select.c, insert.c, update.c and
delete.c. Then each of these modules would need as input:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
A single table name.&lt;/li&gt;

&lt;li&gt;
The table's additional attributes.&lt;/li&gt;

&lt;li&gt;
The table's column names and additional attributes.&lt;/li&gt;

&lt;li&gt;
A recursive list of related tables.&lt;/li&gt;

&lt;li&gt;
Apache's CGI dictionary output.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
The principle behind Appaserver is this multi-module approach. Appaserver stores table names in a
table. Each table's column names and relations are also stored in tables. Taking the table-driven
concept to the nth degree forms a database of a database. You can glean a detailed understanding
of how the Appaserver database is modeled from &lt;a href="https://appahost.com/appaserver_database_schema.pdf"&gt;https://appahost.com/appaserver_database_schema.pdf&lt;/a&gt;.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/foss-project-spotlight-appaserver" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Fri, 14 Dec 2018 13:00:00 +0000</pubDate>
    <dc:creator>Tim Riley</dc:creator>
    <guid isPermaLink="false">1340271 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
