<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
        xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
        >
<channel>
        <title>AI &#38; Cyber Forum - An International Journal  - Feed</title>
        <atom:link href="https://academicsociety.org/aicyberjournal/2025/12/03/matbase-algorithm-for-translating-emdm-schemes-into-e-r-data-models/?view=xml-feed" rel="self" type="application/rss+xml" />
        <link>https://academicsociety.org/aicyberjournal</link>
        <description></description>
        <lastBuildDate>Sat, 14 Mar 2026 04:46:56 +0000</lastBuildDate>
        <language></language>
        <sy:updatePeriod>hourly</sy:updatePeriod>
        <sy:updateFrequency>1</sy:updateFrequency>
        <generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://academicsociety.org/aicyberjournal/wp-content/uploads/sites/6/2025/11/cropped-favicon2-32x32.png</url>
	<title>MatBase algorithm for translating (E)MDM schemes into E-R data models - AI & Cyber Forum - An International Journal </title>
	<link>https://academicsociety.org/aicyberjournal</link>
	<width>32</width>
	<height>32</height>
</image> 
                        <item>
                        <title>MatBase algorithm for translating (E)MDM schemes into E-R data models</title>
                        <link>https://academicsociety.org/aicyberjournal/2025/12/03/matbase-algorithm-for-translating-emdm-schemes-into-e-r-data-models/</link>
                        <pubDate>Wed, 03 Dec 2025 08:58:00 +0000</pubDate>
                        <dc:creator>arwa06510@gmail.com</dc:creator>
                        <authors>
                                                        <author>
                                <name></name>
                                <affiliationId></affiliationId>
                                </author>
                                                            <author>
                                <name></name>
                                <affiliationId></affiliationId>
                                </author>
                                                    

</authors>
                        <guid isPermaLink="false">https://academicsociety.org/aicyberjournal/?p=663</guid>
                        <abstract language="eng"><p>This paper presents a pseudocode algorithm for translating (Elementary) Mathematical Data Model ((E)MDM) schemes into Entity-Relationship data models. We prove that this algorithm is linear, sound, complete, and semi-optimal. As an example, we apply this algorithm to an (E)MDM scheme for a genealogical tree sub-universe. We also provide the main additional features added to the implementation of this data science reverse engineering algorithm in MatBase, our intelligent knowledge and database management system prototype based on both the Entity-Relationship, (E)MDM, and Relational Data Models.</p>
</abstract>
                        <fullTextUrl format="html">https://academicsociety.org/aicyberjournal/2025/12/03/matbase-algorithm-for-translating-emdm-schemes-into-e-r-data-models/</fullTextUrl>
                        <fullhtmlContent><![CDATA[
<p>1. Introduction&nbsp;</p>



<p>All subuniverses of discourse are governed by business rules (e.g., ”nobody may die before&nbsp; birth”, ”nobody may get married before birth”, ”people’s height is between 30 and 225 cm”,&nbsp; etc.). A database (db) instance is useful only if it is plausible, i.e., only if its data does not violate&nbsp; any business rule governing the corresponding subuniverse of discourse. In dbs and software&nbsp;</p>



<p>engineering, business rules are formalized as constraints, i.e., closed formulas of the first-order&nbsp; predicate calculus with equality.&nbsp;&nbsp;</p>



<p>Our (Elementary) Mathematical Data Model ((E)MDM) [1] was introduced as an&nbsp; intermediate conceptual design level between the Entity-Relational Data Model (E-RDM) [2,&nbsp; 3, 4] and the Relational Data Model (RDM) [4, 5, 6]. The E-RDM includes the very powerful&nbsp; E-R Diagrams (E-RDs) that may be easily understood even by customers without computer&nbsp; science background but, despite its many extensions, it has a very limited set of constraints.&nbsp; The RDM has only six constraint types (domain/range, not null, default values, unique keys,&nbsp; foreign keys, and tuple/check). The (E)MDM has 76 constraint types, thus allowing for far&nbsp; more accurate conceptual data modeling and db design; they include, explicitly or implicitly,&nbsp; all 6 relational type ones; the non-relational type ones should be enforced by the software&nbsp; applications (sa) that manage the corresponding dbs.&nbsp;</p>



<p>In [4], we defined E-R data models as triples &lt;<em>ERDS</em>, <em>ARS</em>, <em>ICSD</em>&gt;, where <em>ERDS </em>is a set of&nbsp; E-RDs, <em>ARS </em>is an Associated Restriction Set, and <em>ICSD </em>is an Informal Corresponding Sub universe Description. The associated restrictions, which correspond to the business rules&nbsp; governing the modeled sub-universes, are of the following five types: inclusions between&nbsp; object sets (e.g., <em>EMPLOYEES </em>⊆ <em>PERSONS</em>), ranges of the attributes (e.g., <em>Month </em>between 1&nbsp; and 12), compulsory (not null) attribute values (e.g., <em>BirthDate </em>compulsory), minimal&nbsp; uniqueness of attributes (e.g., <em>SSN </em>unique) and attribute concatenations (e.g., <em>Room </em>• <em>Weekday&nbsp; </em>• <em>StartHour </em>unique), and other restriction types (e.g., “no teacher may be simultaneously&nbsp; present in two classrooms”).&nbsp;</p>



<p>An E-RD may be single, i.e., consisting only of an entity or relationship type set and its&nbsp; attributes, or structural, i.e., containing any number of sets, the structural functions (i.e., binary&nbsp; functional relationships) relating them, and no attributes. The single ones for relationship-type&nbsp; sets also contain all the sets over which the relationship is defined.&nbsp;</p>



<p>2&nbsp;</p>



<p><em>MatBase </em>[7, 8] is our intelligent data and knowledge base management system prototype,&nbsp; based on both (E)MDM, E-RDM, and RDM. It includes 3 graphic user interfaces (GUI), one&nbsp; for each data model, and automatically translates between them, generates corresponding sa&nbsp; GUIs and code for enforcing a vast majority of the (E)MDM constraint types.&nbsp;</p>



<p>In our previously published paper [9], we presented and discussed the forward <em>MatBase&nbsp; </em>algorithm for translating E-R data models into (E)MDM schemes. The algorithm presented in&nbsp; this paper is its dual, a reverse engineering type one. Its necessity arises from the following&nbsp; couple of reasons:&nbsp;</p>



<p>✓ Reflecting updates of a(n) (E)MDM schema performed after obtaining it from an E-R&nbsp; data model.&nbsp;</p>



<p>✓ Extracting only an E-R data model subset.&nbsp;</p>



<p>The algorithm has two optional input parameters: an object set name of the current db, and&nbsp; a natural radius. If the first one is not null and the radius is either null or 0, then the algorithm&nbsp; outputs the E-R data model of the corresponding object set (whose E-RD is a single one); for&nbsp; any other natural value <em>n </em>of the radius, it outputs the E-R data sub-model centered in the desired&nbsp; object set and having radius at most <em>n </em>(i.e., whose E-RD is a structural one having length at&nbsp; most <em>n </em>for at least one path starting from the desired object set); if the first parameter is null,&nbsp; then it outputs the whole db E-R data model (and the radius is ignored if it is not null).&nbsp;&nbsp;</p>



<p>After the literature review, the third Section introduces and characterizes the pseudocode&nbsp; algorithm used by <em>MatBase </em>to translate (E)MDM schemes into E-R data models, then presents&nbsp; and discusses the results of applying this algorithm to an (E)MDM scheme from [10, 11]. The&nbsp; paper ends with conclusions, recommendations, and a reference list.&nbsp;&nbsp;</p>



<p>2. Related work&nbsp;</p>



<p>Only <em>MatBase </em>manages (E)MDM schemes.</p>



<p>Quest has over 30 years of its <em>erwin Data Modeler</em>[12] success. For example, it may reverse&nbsp; engineer both relational (e.g., MS SQL Server, Oracle Database, IBM Db2, Sybase SQL&nbsp; Anywhere, SQLite) and noSQL (e.g., mongoDB, cassandra, MariaDB, neo4j) schemas into&nbsp; corresponding E-RDs.&nbsp;&nbsp;</p>



<p>Related algorithms are, however, used by all major commercial RDBMSes for translating&nbsp; relational schemas into E-R data models-like ones.&nbsp;</p>



<p>For example, the MS SQL Server Management Studio [13] provides a <em>Database Diagram&nbsp; </em>menu, part of the <em>Visual Database Tools</em>. You can create, update, and delete relational diagrams&nbsp; corresponding to the tables of a db. These diagrams are not “standard” E-RDs but are equivalent&nbsp; to them: nodes are rectangles corresponding to underlying db tables that can be thought of as&nbsp; single E-RDs, as their attributes are listed inside them; edges are the relations between tables,&nbsp; as established by the foreign keys, so that they are equivalent to structural functions and E&nbsp;</p>



<p>RDs. As the RDM is a syntactical one, no relationship-type nodes are present, all of them being&nbsp; of entity-type. This is consistent with our Theorem stating that the only fundamental&nbsp; mathematical relations for conceptual data modeling are the functions [14].&nbsp;</p>



<p>Similarly, the Oracle SQL Developer provides a <em>Data Modeler </em>tool [15]. The IBM Db2 Data Management Console [16], which is the equivalent of both MS SQL&nbsp; Server Management Studio and Oracle SQL Developer does not provide graphical tools. They&nbsp; are available from third parties, such as Dataedo [17].&nbsp;</p>



<p>Other related approaches to <em>MatBase </em>are based on business rules management (BRM) [18,&nbsp; 19] and their corresponding implemented systems (BRMS) and decision managers (e.g., [20 – 22]). From this perspective, (E)MDM is also a formal BRM, and <em>MatBase </em>is an automatically&nbsp; code generating BRMS.</p>



<p>3. Research Methodology&nbsp;</p>



<p>Any (<em>E</em>)<em>MDM schema </em>[1] is a quadruple DKS = &lt;S, M, C; P&gt;, where S is a finite non empty <em>poset of sets </em>ordered by inclusion, M is a finite non-empty <em>set of mappings </em>defined on&nbsp; and taking values from the sets of S, C is a finite non-empty <em>set of constraints </em>(i.e. closed Horn&nbsp; clauses of the first-order predicate logic with equality) over sets in S and/or mappings in M ,&nbsp; and P is a finite set of <em>Datalog</em>¬ <em>programs</em>, also over sets in S and mappings in M. Whenever&nbsp; P is empty, DKS is a <em>db scheme</em>, otherwise it is a <em>knowledge base one</em>. In the context of this&nbsp; paper, we are only interested in db schemes.&nbsp;</p>



<p>(S, ⊆) is a <em>poset of sets</em>, with S = Ω ⊕ V ⊕ *S ⊕ SysS, where Ω = E ⊕ R (the non-empty&nbsp; collection of <em>object sets</em>), where E is a non-empty collection of atomic <em>entity-type sets </em>(e.g.,&nbsp; <em>PEOPLE</em>, <em>COUNTRIES</em>, <em>PRODUCTS</em>), R is a collection of <em>relationship-type sets </em>(e.g.,&nbsp; <em>NEIGHBOUR_ COUNTRIES </em>⊂ <em>COUNTRIES </em>× <em>COUNTRIES</em>, <em>STOCKS </em>⊂&nbsp;</p>



<p><em>PRODUCTS</em>×<em>WAREHOUSES</em>); V is a non-empty collection of <em>value sets </em>(e.g., <em>SEXES </em>=&nbsp; {“F”,”M”}, [0,16] ⊂ NAT(2), ASCII(32) ⊂ ASCII(<em>n</em>), [1/1/100, <em>Today</em>()] ⊂ DATETIME, with&nbsp; NAT(<em>n</em>) being the subset of naturals of at most <em>n </em>digits, ASCII(<em>n</em>) the subset of the freely&nbsp; generated monoid over the ASCII alphabet only including strings of maximum length <em>n</em>, etc.);&nbsp; *S is a collection of <em>computed sets </em>(e.g., <em>MALES</em>, <em>FEMALES</em>, <em>UNPAID_BILLS</em>), and SysS is a&nbsp; collection of <em>system sets </em>(e.g., ∅ (the empty set), NULLS (the distinguished countable set of&nbsp; <em>null values</em>), BOOLE = {<em>true</em>, <em>false</em>}, NAT(<em>n</em>), ASCII(<em>n</em>), DATETIME (the set of date and time&nbsp; values)).&nbsp;</p>



<p>In RDM schemata, generally, the object sets are tables, the computed sets are views&nbsp; (queries), the system sets are corresponding db management system (RDBMS) data types, and&nbsp; the value sets are their needed subsets.&nbsp;&nbsp;</p>



<p>The <em>set of mappings </em>(<em>functions</em>) is M = A ⊕ F ⊕ *M ⊕ SysM, where A ⊂ Hom(S – SysS&nbsp; ⊕V, V) is the non-empty <em>set of attributes</em>(e.g., <em>x </em>: <em>PEOPLE </em>↔ NAT(10), <em>FirstName </em>: <em>PEOPLE</em></p>



<p>5&nbsp;</p>



<p>→ ASCII(64), <em>BirthDate </em>: PEOPLE → [1/1/-6000, <em>Today</em>()], <em>Sex </em>: <em>PEOPLE </em>→ {“F”, “M”),&nbsp; <em>Amount </em>: <em>UNPAID_BILLS </em>→ (0, 100000], where ↔ denotes injections (one-to-one functions)&nbsp; and <em>x </em>is our notation for <em>object identifiers</em>, i.e., functions to be implemented as autonumber&nbsp; surrogate primary keys); F ⊂ Hom(S – SysS ⊕V, S – SysS ⊕ V) is the non-empty set of&nbsp; <em>structural functions </em>(e.g., <em>BirthPlace </em>: <em>PEOPLE </em>→ <em>CITIES</em>, <em>Capital </em>: <em>COUNTRIES </em>↔ <em>CITIES</em>); *M is the set of <em>computed mappings </em>(e.g., <em>BirthCountry </em>= <em>Country </em>° <em>BirthPlace </em>:&nbsp; <em>PEOPLE </em>→ <em>COUNTRIES</em>, <em>Mother </em>• <em>Father </em>: <em>PEOPLE </em>→ (<em>PEOPLE </em>∪NULLS)<sup>2</sup>), and SysM&nbsp; is the set of <em>system mappings </em>(e.g., <strong>1</strong><em>S </em>(the unity function of a set <em>S</em>), <em>card</em>(<em>S</em>) (the cardinal of a&nbsp; set <em>S</em>), <em>Im</em>(<em>f </em>) (the image of a function <em>f</em>, i.e., the set of the values it takes), <em>dom</em>(<em>f</em>) and <em>codom</em>(<em>f</em>)&nbsp; (the domain and codomain of <em>f</em>, respectively), <em>isNull</em>(<em>x</em>,<em>y</em>) (which returns <em>x </em>if it is not null, and&nbsp; <em>y </em>otherwise)).&nbsp;</p>



<p>In RDM schemata, the attributes, structural functions, and computed mappings are&nbsp; implemented as table or/and view (query) columns, with structural functions being foreign&nbsp; keys.&nbsp;</p>



<p>The <em>set of constraints </em>is C = SC ⊕ MC ⊕ OC ⊕ SysC, where the <em>set constraints </em>SC contains&nbsp; both general ones (e.g., inclusion, equality, disjointness) and dyadic relation ones (e.g.,&nbsp; reflexivity, symmetry, transitivity); the <em>mapping constraints </em>MC contains the general ones&nbsp; (e.g., totality, one-to-oneness, ontoness), dyadic-type self-map ones, general mapping products&nbsp; ones (e.g., minimal one-to-oneness, variable geometry keys and their subkeys, existence),&nbsp; dyadic-type homogeneous binary product ones, function diagram ones (e.g., commutativity,&nbsp; anti-commutativity, representative systems); the set OC of <em>object constraints </em>contains any&nbsp; other closed Horn clauses not among the above, and the <em>system constraints </em>SysC includes all&nbsp; needed mathematical constraints (e.g., <em>card</em>(∅) = 0, ∅ ⊆ <em>S</em>, ∅ ∩ <em>S </em>= ∅, <em>S </em>∩ <em>S </em>= <em>S </em>∪ <em>S </em>= <em>S </em>,&nbsp; ∀<em>S</em>∈S).</p>



<p>Constraints are not absolute, but relative to the corresponding subuniverses: for example,&nbsp; constraint <em>C</em>1 from subsection 3.2 goes not generally hold (e.g., there are several cities called&nbsp; “Paris” in the U.S.).&nbsp;&nbsp;</p>



<p>Structural E-RDs are directed graphs having as nodes any type of sets except for the value type ones, and structural functions as edges. Our version of E-RDs [4] uses arrows (i.e., the&nbsp; standard mathematical convention for mappings) instead of diamonds for any binary functional&nbsp; relationship.&nbsp;</p>



<p>In (E)MDM, as a shorthand, the domain of attributes may be omitted if they are listed&nbsp; immediately after their domain set name, and one-to-one mappings use double arrows (e.g.,&nbsp; see attribute <em>Country </em>↔ ASCII(255) from subsection 3.2).&nbsp;</p>



<p>The <em>complexity of an algorithm </em>is denoted by <em>O</em>(<em>e</em>), where <em>e </em>is an algebraic expression and&nbsp; means that the algorithm never loops infinitely and ends in a number of steps that is a multiple&nbsp; of <em>e</em>. Generally, an algorithm is <em>sound </em>if it returns only true answers, <em>complete </em>if it accepts any&nbsp; valid inputs, and <em>optimal </em>(<em>efficient</em>) if it performs in the minimal number of steps possible for&nbsp; any input. Moreover, we say that an algorithm is <em>semi-optimal </em>when, even if it visits more than&nbsp; once an object, it processes any object only once.&nbsp;&nbsp;</p>



<p>In our context, <em>soundness </em>means that all object and computed sets are translated into same&nbsp; type of sets (i.e., rectangles or diamonds, respectively), attributes into ellipses, structural&nbsp; functions into arrows (all of the above being dotted for computed objects), constraints into&nbsp; restrictions, and comments into informal description texts, while <em>completeness </em>means that all&nbsp; valid (E)MDM schemes are correspondingly translated.&nbsp;</p>



<p>In this paper, “mapping” and “function” are used interchangeably. Mapping totality is&nbsp; translated into RDM by a corresponding not null constraint.</p>



<p>4. The <em>REA</em>2 Algorithm&nbsp;</p>



<p>The reverse engineering pseudocode algorithm <em>REA</em>2 used by <em>MatBase </em>for translating&nbsp; (E)MDM schemes into E-R data models is shown in Figures 1 to 10. The dependencies between&nbsp; its 10 methods are presented in Figure 11.&nbsp;</p>



<p>Obviously, value-type sets are not figured in E-RDs: only object or computed ones (which&nbsp; are drawn in dotted lines) are.&nbsp;</p>



<p>5. Results: two reverse engineering examples&nbsp;</p>



<p>Here is an example of an (E)MDM schema – a subset of the <em>GENEALOGIES </em>sub-universe&nbsp; studied in [10, 11]:&nbsp;</p>



<p><strong><em>COUNTRIES&nbsp;</em></strong></p>



<p><em>x </em>↔ NAT(3) total&nbsp;</p>



<p><em>Country </em>↔ ASCII(255) total (There may not be 2 countries having same name.)</p>



<p><strong><em>CITIES&nbsp;</em></strong></p>



<p><em>x </em>↔ NAT(6) total&nbsp;</p>



<p><em>City </em>→ ASCII(255) total&nbsp;</p>



<p><em>Country </em>: <em>CITIES </em>→ <em>COUNTRIES </em>total&nbsp;</p>



<p><em>Capital </em>: <em>COUNTRIES </em>↔ <em>CITIES </em>(No city may simultaneously be the capital of 2 countries.)</p>



<p><em>C</em>1: <em>City </em>• <em>Country </em>key (There may not be 2 cities with a same name in a same country.) <em>C</em>2: <em>Country </em>° <em>Capital </em>reflexive (The capital city of any country must belong to that country.)&nbsp;</p>



<p><strong><em>DYNASTIES&nbsp;&nbsp;</em></strong></p>



<p><em>x </em>↔ NAT(8) total&nbsp;</p>



<p><em>Dynasty </em>↔ ASCII(255) total (There may not be 2 dynasties having same name.) <em>Country </em>: <em>DYNASTIES </em>→ <em>COUNTRIES </em>total</p>



<p><strong><em>TITLES&nbsp;</em></strong></p>



<p><em>x </em>↔ NAT(2) total&nbsp;</p>



<p><em>Title </em>↔ ASCII(32) total (There may not be 2 titles having same name.) <strong><em>RULERS&nbsp;</em></strong></p>



<p><em>x </em>↔ NAT(16) total&nbsp;</p>



<p><em>Name </em>→ ASCII(255) total&nbsp;</p>



<p><em>Sex </em>→ {‘M’, ‘F’, ‘N’} total (‘N’ is for non-persons)&nbsp;</p>



<p><em>BirthYear </em>→ [-6500, <em>CurrentYear</em>()]&nbsp;</p>



<p><em>PassedAwayYear </em>→ [-6500, <em>CurrentYear</em>()]&nbsp;</p>



<p><em>URL </em>→ ASCII(255)&nbsp;</p>



<p><em>Age </em>= <em>isNull</em>(<em>PassedAwayYear</em>, <em>CurrentYear</em>()) – <em>BirthYear&nbsp;</em></p>



<p><em>Mother </em>: <em>RULERS</em>→ <em>RULERS </em>acyclic (Nobody may be his/her maternal ancestor or&nbsp; descendant.)&nbsp;</p>



<p><em>Father </em>: <em>RULERS</em>→ <em>RULERS </em>acyclic (Nobody may be his/her paternal ancestor or&nbsp; descendant.)&nbsp;</p>



<p><em>KilledBy </em>: <em>RULERS</em>→ <em>RULERS</em></p>



<p><em>Dynasty </em>: <em>RULERS</em>→ <em>DYNASTIES&nbsp;</em></p>



<p><em>Title </em>: <em>RULERS</em>→ <em>TITLES&nbsp;</em></p>



<p><em>Founder </em>: <em>DYNASTIES </em>↔ <em>RULERS </em>(Nobody founds more than one dynasty.) <em>BirthPlace </em>: <em>RULERS</em>→ <em>CITIES&nbsp;</em></p>



<p><em>Nationality </em>: <em>RULERS</em>→ <em>COUNTRIES&nbsp;</em></p>



<p><em>PassedAwayPlace </em>: <em>RULERS </em>→ <em>CITIES&nbsp;</em></p>



<p><em>C</em>3: <em>Name </em>• <em>Dynasty </em>• <em>BirthYear </em>key (There may not be two persons of a same dynasty born in&nbsp; a same year and having a same name.)&nbsp;</p>



<p><em>C</em>4: <em>Dynasty </em>° <em>Founder </em>reflexive (The founder of any dynasty must belong to that dynasty.) <em>C</em>5: (∀<em>x</em>∈<em>RULERS</em>)(<em>Dynasty</em>(<em>x</em>) ∉ NULLS ∧ <em>Founder</em>(<em>Dynasty</em>(<em>x</em>)) ∉ NULLS ∧ <em>BirthYear</em>(<em>Founder</em>(<em>Dynasty</em>(<em>x</em>))) ∉ NULLS ⇒ <em>PassedAwayYear</em>(<em>x</em>) ∈ NULLS ∨ <em>PassedAwayYear</em>(<em>x</em>) &gt; <em>BirthYear</em>(<em>Founder</em>(<em>Dynasty</em>(<em>x</em>))))&nbsp;&nbsp;</p>



<p>(Nobody may belong to a dynasty that was founded after his/her death). <em>C</em>6: (∀<em>x</em>∈<em>RULERS</em>)(0 ≤ <em>Age</em>(<em>x</em>) ≤ 140) (Anybody’s age must be a natural at most equal to 140.) <em>C</em>7: (∀<em>x</em>∈<em>RULERS</em>)(<em>Sex</em>(<em>Mother</em>(<em>x</em>)) = ‘F’) (Mothers’ sex must be ‘F’.)&nbsp;&nbsp;</p>



<p><em>C</em>8: (∀<em>x</em>∈<em>RULERS</em>)(<em>Sex</em>(<em>Father</em>(<em>x</em>)) = ‘M’) (Fathers’ sex must be ‘M’.)&nbsp;&nbsp;</p>



<p><em>C</em>9: (∀<em>x</em>∈<em>RULERS</em>)(<em>Sex</em>(<em>x</em>) = ‘N’ ⇒ <em>Mother</em>(<em>x</em>) ∈ NULLS ∧ <em>Father</em>(<em>x</em>) ∈ NULLS ∧ <em>Dynasty</em>(<em>x</em>)&nbsp; ∈ NULLS ∧ <em>KilledBy</em>(<em>x</em>) ∈ NULLS) (Non-persons may not have parents or killers or&nbsp; belong to dynasties.)&nbsp;</p>



<p><em>C</em>10: (∀<em>x,y</em>∈<em>RULERS</em>)(<em>x </em>≠ <em>y </em>∧ <em>Mother</em>(<em>x</em>) = <em>Mother</em>(<em>y</em>) ⇒ <em>Name</em>(<em>x</em>) ≠ <em>Name</em>(<em>y</em>)) (No mother gives&nbsp; a same name to 2 of her children.)&nbsp;</p>



<p><em>C</em>11: (∀<em>x,y</em>∈<em>RULERS</em>)(<em>x </em>≠ <em>y </em>∧ <em>Father</em>(<em>x</em>) = <em>Father</em>(<em>y</em>) ⇒ <em>Name</em>(<em>x</em>) ≠ <em>Name</em>(<em>y</em>)) (No father gives&nbsp; a same name to 2 of his children.)&nbsp;</p>



<p><em>C</em>12: (∀<em>x</em>∈<em>RULERS</em>)(<em>BirthYear</em>(<em>x</em>) ∉ NULLS ∧ <em>Mother</em>(<em>x</em>) ∉ NULLS ∧ <em>BirthYear</em>(<em>Mother</em>(<em>x</em>))&nbsp;</p>



<p>∉ NULLS ⇒ 5 ≤ <em>BirthYear</em>(<em>x</em>) – <em>BirthYear</em>(<em>Mother</em>(<em>x</em>)) ≤ 75 ∧&nbsp;</p>



<p>(<em>PassedAwayYear</em>(<em>Mother</em>(<em>x</em>)) ∉ NULLS ⇒ (<em>BirthYear</em>(<em>x</em>) ≤ <em>PassedAwayYear</em>(<em>Mother</em>(<em>x</em>))))&nbsp; (Women may give birth only between 5 and 75 years, and before passing away.) <em>C</em>13: (∀<em>x</em>∈<em>RULERS</em>)(<em>BirthYear</em>(<em>x</em>) ∉ NULLS ∧ <em>Father</em>(<em>x</em>) ∉ NULLS ∧ <em>BirthYear</em>(<em>Father</em>(<em>x</em>)) ∉ NULLS ⇒ 9 ≤ <em>BirthYear</em>(<em>x</em>) – <em>BirthYear</em>(<em>Father</em>(<em>x</em>)) ≤ 100 ∧ (<em>PassedAwayYear</em>(<em>Father</em>(<em>x</em>))&nbsp; ∉ NULLS ⇒ (<em>BirthYear</em>(<em>x</em>) ≤ <em>PassedAwayYear</em>(<em>Father</em>(<em>x</em>)) + 1)) (Men may have children&nbsp; only between 9 and 100 years, and at most one year after passing away.) <em>C</em>14: (∀<em>x</em>∈<em>RULERS</em>)(<em>PassedAwayYear</em>(<em>x</em>) ∉ NULLS ∧ <em>KilledBy</em>(<em>x</em>) ∉ NULLS ∧ <em>BirthYear</em>(<em>KilledBy</em>(<em>x</em>)) ∉ NULLS ⇒ <em>BirthYear</em>(<em>KilledBy</em>(<em>x</em>)) + 3 ≤ <em>PassedAwayYear</em>(<em>x</em>) ≤ <em>isNull</em>(<em>PassedAwayYear</em>(<em>KilledBy</em>(<em>x</em>)), <em>BirthYear</em>(<em>KilledBy</em>(<em>x</em>)) + 140)) (Any killer of a&nbsp; person must have been alive and at least 3 years old when his/her victim was killed.) <strong><em>MARRIAGES&nbsp;</em></strong></p>



<p><em>x </em>↔ NAT(16) total&nbsp;</p>



<p><em>MarriageYear </em>→ [-6500, <em>CurrentYear</em>()]&nbsp;</p>



<p><em>DivorceYear </em>→ [-6500, <em>CurrentYear</em>()]&nbsp;</p>



<p><em>Husband </em>: <em>MARRIAGES </em>→ <em>RULERS&nbsp;</em></p>



<p><em>Wife </em>: <em>MARRIAGES </em>→ <em>RULERS&nbsp;</em></p>



<p><em>C</em>15: <em>Husband </em>• <em>Wife </em>• <em>MarriageYear </em>key (Nobody may marry a same person twice in a same&nbsp; year.)&nbsp;</p>



<p><em>C</em>16: <em>Husband </em>• <em>Wife </em>• <em>DivorceYear </em>key (Nobody may divorce a same person twice in a same&nbsp; year.)&nbsp;</p>



<p><em>C</em>17: (∀<em>x</em>∈<em>MARRIAGES</em>)(<em>MarriageYear</em>(<em>x</em>) ∉ NULLS ⇒ <em>DivorceYear</em>(<em>x</em>) ∉ NULLS ∨ <em>DivorceYear</em>(<em>x</em>) ≥ <em>MarriageYear</em>(<em>x</em>)) (Nobody may divorce somebody before marrying&nbsp; him/her.)</p>



<p><em>C</em>18: (∀<em>x</em>∈<em>MARRIAGES</em>)(<em>Sex</em>(<em>Wife</em>(<em>x</em>)) = ‘F’) (Wives’ sex must be ‘F’.)&nbsp;&nbsp;</p>



<p><em>C</em>19: (∀<em>x</em>∈<em>MARRIAGES</em>)(<em>Sex</em>(<em>Husband</em>(<em>x</em>)) = ‘M’) (Husbands’ sex must be ‘M’.)&nbsp; <em>C</em>20: (∀<em>x</em>∈<em>MARRIAGES</em>)(<em>MarriageYear</em>(<em>x</em>) ∉ NULLS ⇒ ((<em>BirthYear</em>(<em>Husband</em>(<em>x</em>)) ∈ NULLS&nbsp; ∨ <em>BirthYear</em>(<em>Husband</em>(<em>x</em>)) ≤ <em>MarriageYear</em>(<em>x</em>)) ∧ (<em>PassedAwayYear</em>(<em>Husband</em>(<em>x</em>)) ∈ NULLS&nbsp; ∨ <em>PassedAwayYear</em>(<em>Husband</em>(<em>x</em>)) ≥ <em>MarriageYear</em>(<em>x</em>))) ∧ (<em>BirthYear</em>(<em>Wife</em>(<em>x</em>)) ∈ NULLS ∨ <em>BirthYear</em>(<em>Wife</em>(<em>x</em>)) ≤ <em>MarriageYear</em>(<em>x</em>)) ∧ (<em>PassedAwayYear</em>(<em>Wife</em>(<em>x</em>)) ∈ NULLS ∨ <em>PassedAwayYear</em>(<em>Wife</em>(<em>x</em>)) ≥ <em>MarriageYear</em>(<em>x</em>)))) (Nobody may marry before being born or&nbsp; after death.)&nbsp;</p>



<p><em>C</em>21: (∀<em>x</em>∈<em>MARRIAGES</em>)(<em>DivorceYear</em>(<em>x</em>) ∉ NULLS ⇒ ((<em>BirthYear</em>(<em>Husband</em>(<em>x</em>)) ∈ NULLS ∨ <em>BirthYear</em>(<em>Husband</em>(<em>x</em>)) ≤ <em>DivorceYear</em>(<em>x</em>)) ∧ (<em>PassedAwayYear </em>(<em>Husband</em>(<em>x</em>)) ∈ NULLS ∨ <em>PassedAwayYear</em>(<em>Husband</em>(<em>x</em>)) ≥ <em>DivorceYear </em>(<em>x</em>))) ∧ (<em>BirthYear</em>(<em>Wife</em>(<em>x</em>)) ∈ NULLS ∨ <em>BirthYear</em>(<em>Wife</em>(<em>x</em>)) ≤ <em>DivorceYear</em>(<em>x</em>)) ∧ (<em>PassedAwayYear</em>(<em>Wife</em>(<em>x</em>)) ∈ NULLS ∨ <em>PassedAwayYear</em>(<em>Wife</em>(<em>x</em>)) ≥ <em>DivorceYear</em>(<em>x</em>)))) (Nobody may divorce before being born or&nbsp; after death.)&nbsp;</p>



<p><strong><em>REIGNS&nbsp;</em></strong></p>



<p><em>x </em>↔ NAT(20) total&nbsp;</p>



<p><em>FromY </em>→ [-6500, <em>CurrentYear</em>()] total&nbsp;</p>



<p><em>ToY </em>→ [-6500, <em>CurrentYear</em>()]&nbsp;</p>



<p><em>Ruler </em>: <em>REIGNS </em>→ <em>RULERS </em>total&nbsp;</p>



<p><em>Country </em>: <em>REIGNS </em>→ <em>COUNTRIES </em>total&nbsp;</p>



<p><em>Title </em>: <em>RULERS</em>→ <em>TITLES&nbsp;</em></p>



<p><em>C</em>22: <em>Ruler </em>• <em>Country </em>• <em>FromY </em>key (It does not make sense to store twice that a ruler began&nbsp; ruling a country during a year.)&nbsp;</p>



<p><em>C</em>23: <em>Ruler </em>• <em>Country </em>• <em>ToY </em>key (It does not make sense to store twice that a ruler ended ruling&nbsp;</p>



<p>a country during a year.)&nbsp;</p>



<p><em>C</em>24: (∀<em>x</em>∈<em>REIGNS</em>)(<em>ToY</em>(<em>x</em>) ∈ NULLS ∨ <em>ToY</em>(<em>x</em>) ≥ <em>FromY</em>(<em>x</em>)) (No reign may end before&nbsp; starting.)&nbsp;</p>



<p><em>C</em>25: (∀<em>x</em>∈<em>REIGNS</em>)((<em>BirthYear</em>(<em>Ruler</em>(<em>x</em>)) ∉ NULLS ⇒ <em>BirthYear</em>(<em>Ruler</em>(<em>x</em>)) ≤ <em>FromY</em>(<em>x</em>)) ∧ (<em>PassedAwayYear</em>(<em>Ruler</em>(<em>x</em>)) ∉ NULLS ⇒ <em>ToY</em>(<em>x</em>) ∉ NULLS ∧ <em>PassedAwayYear</em>(<em>Ruler</em>(<em>x</em>))&nbsp; ≥ <em>ToY</em>(<em>x</em>)) (Nobody may reign before being born or after death.)&nbsp;&nbsp;</p>



<p><em>C</em>26: (∀<em>x,y</em>∈<em>REIGNS</em>)(<em>x </em>≠ <em>y </em>∧ <em>Country</em>(<em>x</em>) = <em>Country</em>(<em>y</em>) ∧ (<em>FromY</em>(<em>y</em>) ≥ <em>FromY</em>(<em>x</em>) ∧ <em>FromY</em>(<em>y</em>) ≤ <em>isNull</em>(<em>ToY</em>(<em>x</em>), <em>CurrentYear</em>() ∨ <em>FromY</em>(<em>x</em>) ≥ <em>FromY</em>(<em>y</em>) ∧ <em>FromY</em>(<em>x</em>) ≤ <em>isNull</em>(<em>ToY</em>(<em>y</em>),&nbsp; <em>CurrentYear</em>()) ⇒ (<em>Father</em>(<em>Ruler</em>(<em>y</em>)) = <em>Ruler</em>(<em>x</em>)) ∨ <em>Father</em>(<em>Ruler</em>(<em>x</em>)) = <em>Ruler</em>(<em>y</em>) ∨ <em>Mother</em>(<em>Ruler</em>(<em>y</em>)) = <em>Ruler</em>(<em>x</em>)) ∨ <em>Mother</em>(<em>Ruler</em>(<em>x</em>)) = <em>Ruler</em>(<em>y</em>))) ∨ (∃<em>z</em>∈<em>MARRIAGES</em>) (<em>Husband</em>(<em>z</em>) = <em>Ruler</em>(<em>x</em>) ∧ <em>Wife</em>(<em>z</em>) = <em>Ruler</em>(<em>y</em>) ∨ <em>Husband</em>(<em>z</em>) = <em>Ruler</em>(<em>y</em>) ∧ <em>Wife</em>(<em>z</em>) = <em>Ruler</em>(<em>x</em>))) (No country may be simultaneously ruled by 2 persons, except for cases where the two&nbsp; were married or parent and child.)&nbsp;</p>



<p>Figure 12 presents the corresponding single E-RD obtained by applying algorithm <em>REA</em>2&nbsp; to this (E)MDM schema with parameter values <em>S </em>= “RULERS” and <em>r </em>= 0 (in fact, the self-maps&nbsp; <em>Mother</em>, <em>Father </em>and <em>KilledBy </em>are not generated for this E-RD, but for the one in Figure 13: we&nbsp; moved them here in this paper as Figure 13 would otherwise become too complicated).&nbsp;</p>



<p>The corresponding generated Restriction Set is the following:&nbsp;</p>



<p>a. <em>max</em>(<em>card</em>(<em>RULERS</em>) = 10<sup>16</sup>&nbsp;</p>



<p>b. <em>Data ranges</em>:&nbsp;&nbsp;</p>



<p><em>Name</em>: ASCII(255)&nbsp;&nbsp;</p>



<p><em>Sex</em>: {‘M’, ‘F’, ‘N’}&nbsp;</p>



<p><em>BirthYear</em>: [-6500, <em>CurrentYear</em>()]&nbsp;</p>



<p><em>PassedAwayYear</em>: [-6500, <em>CurrentYear</em>()]</p>



<p><em>URL</em>: ASCII(255)&nbsp;</p>



<p>c. <em>Compulsory data</em>: <em>x</em>, <em>Name</em>, <em>Sex&nbsp;</em></p>



<p>d. <em>Uniqueness</em>:&nbsp;&nbsp;</p>



<p><em>Name </em>• <em>Dynasty </em>• <em>BirthYear </em>(There may not be two persons of a same dynasty born in&nbsp; a same year and having a same name.)&nbsp;</p>



<p><em>Founder </em>(Nobody founds more than one dynasty.)&nbsp;</p>



<p>e. <em>Other types of restrictions</em>:&nbsp;&nbsp;</p>



<p><em>f. Age </em>= <em>isNull</em>(<em>PassedAwayYear</em>, <em>CurrentYear</em>()) – <em>BirthYear&nbsp;</em></p>



<p><em>g. Mother </em>acyclic (Nobody may be his/her maternal ancestor or descendant.) h. <em>Father </em>acyclic (Nobody may be his/her paternal ancestor or descendant.) i. <em>C</em>3 to <em>C</em>14 (that we do not duplicate here, to obey paper length limitations).&nbsp; The corresponding informal description is trivial: “The set of <em>RULERS </em>stores properties <em>x</em>,&nbsp;&nbsp;</p>



<p>its object integer identifier, <em>Name</em>, an ASCII string of at most 255 characters, etc.”.&nbsp; Figure 13 shows the structural E-RD obtained when running <em>REA</em>2 with <em>S </em>= “RULERS”&nbsp; and <em>r </em>&gt; 0 or with null values for both <em>S </em>and <em>r</em>. The corresponding restriction set for <em>RULERS </em>is&nbsp; exactly the one given above; for the rest of the sets, it is similar. This goes the same for the&nbsp; corresponding informal description.</p>



<p>6. Discussion&nbsp;</p>



<p><strong><em>Proposition&nbsp;</em></strong></p>



<p><em>REA</em>2 is:&nbsp;</p>



<p>(<em>i</em>) linear, having complexity O(<em>n </em>+ <em>a </em>+ <em>m </em>+ <em>c</em>), where <em>n </em>is the total number of the (E)MDM&nbsp; schema non-value sets, <em>a </em>is the total number of their attributes, <em>m </em>of their structural functions&nbsp; (including the roles of the relationship-type sets), and <em>c </em>is the total number of its constraints; (<em>ii</em>) sound;&nbsp;</p>



<p>(<em>iii</em>) complete;&nbsp;</p>



<p>(<em>iv</em>) semi-optimal.&nbsp;</p>



<p><em>Proof&nbsp;</em></p>



<p>(<em>i</em>) For <em>r </em>= 0, trivially, <em>n </em>≤ 1, <em>m </em>= 0, while <em>a </em>and <em>c </em>are the number of attributes defined on <em>S&nbsp; </em>and the one of the constraints involving <em>S</em>, respectively (added by the only one executions of&nbsp; methods <em>addSet</em>, <em>addAttributes</em>, and <em>addFunctRestrictions</em>, when <em>S </em>is a known set; otherwise,&nbsp; they are 0 as well); for <em>S </em>known and <em>r </em>&gt; 0, the number of the corresponding non-value-type&nbsp; sets of the sub-model is <em>s </em>≤ <em>n </em>= <em>card</em>(<em>Nodes</em>(M)), the one of structural functions is <em>f </em>≤ <em>m </em>=&nbsp; <em>card</em>(<em>Edges</em>(M)), while <em>a </em>and <em>c </em>are the sums of the number of attributes defined on the sets of&nbsp; the corresponding sub-model and the sum of the constraints involving these sets, respectively;&nbsp;</p>



<p>finally, when <em>S </em>is null, <em>s </em>= <em>n</em>, <em>f </em>=<em>m</em>, while <em>a </em>and <em>c </em>are the sums of the number of attributes defined&nbsp; on the sets of the corresponding (E)MDM schema and the sum of its constraints , respectively. It is very easy to verify that the only loops of <em>REA</em>2 and of its method <em>computeCardinal </em>are&nbsp; executed exactly <em>n </em>times, the one from method <em>addStructuralFunctions </em>exactly for the number&nbsp; of such functions defined on its parameter, the one from <em>addAttributes</em>, similarly, exactly for&nbsp; the number of such functions defined on its parameter, and the one from <em>addSet </em>exactly for the&nbsp; number of constraints that involve its parameter and that were not previously converted to the&nbsp; corresponding restrictions.&nbsp;&nbsp;</p>



<p>The methods <em>otherSet</em>, <em>addFunctRestrictions</em>, <em>addRelationshipType </em>and <em>addEntityType&nbsp; </em>have no loops.&nbsp;&nbsp;</p>



<p>Finally, the outer <em>while </em>loop of method <em>subModel </em>is executed at most <em>n </em>times; before its&nbsp; first execution, the <em>S_A </em>array is initialized with the set name <em>S </em>and its level 0 (in the above&nbsp; example, <em>S </em>= “RULERS”); in each iteration, its inner <em>while </em>loop is executed exactly the number&nbsp; of times that there are sets on the previous level; in the first iteration it is executed exactly once,&nbsp; for <em>S</em>; its first inner loop is executed, for each iteration, exactly the number of times the current&nbsp; set has structural functions defined on it (e.g., for “RULERS”, 5 times, discovering and storing&nbsp; in <em>S_A </em>the sets named “DYNASTIES”, “CITIES”, “COUNTRIES”, and “TITLES”); its second&nbsp; inner loop is executed, for each iteration, exactly the number of times the current set has&nbsp; structural functions taking values from it (e.g., for “RULERS”, 4 times, discovering and storing&nbsp; in <em>S_A </em>the sets named “MARRIAGES” and “REIGNS”); as, its final loop is executed at most&nbsp; <em>n </em>times, method <em>subModel </em>might need at most 2<em>n </em>steps to finish.&nbsp;</p>



<p>Consequently, <em>REA</em>2 never loops infinitly and is linear in the sum <em>n </em>+ <em>a </em>+ <em>m </em>+ <em>c</em>.&nbsp; (<em>ii</em>) As any entity-type set is translated into a rectangle, any relationship-type one into a&nbsp; diamond, any attribute into an ellipsis, any structural function into an arrow, any constraint into&nbsp; a corresponding restriction, and any comment into an informal description text, <em>REA</em>2 is sound.</p>



<p>(<em>iii</em>) As any well-formed (E)MDM schema (i.e., only consisting of sets, mappings,&nbsp; constraints, and comments) is translated into corresponding E-R data models, <em>REA</em>2 is&nbsp; complete.&nbsp;</p>



<p>(<em>iv</em>) For <em>S </em>null and <em>S </em>not-null but <em>r </em>= 0 or null, <em>REA</em>2 is optimal, as it reads and processes&nbsp; each non-value-type set, function, and constraint only once. For <em>S </em>not-null and <em>r </em>&gt; 0, it is only&nbsp; semi-optimal, as it processes them only once, but reads the corresponding sub-model non-value&nbsp; sets twice (once for discovering and storing them into the <em>S_A </em>array, and a second time to&nbsp; translate them), some of the structural functions twice as well (once as defined on the current&nbsp; set in the inner <em>while </em>loop and a second time as taking values from it), and each constraint the&nbsp; number of times equal to the number of sets involved. <em>Q.E.D.&nbsp;&nbsp;</em></p>



<p>As it may be seen from the above example, for such small (E)MDM schemas, it is not&nbsp; optimal to ask for sub-models: all 7 object sets are discovered for <em>r </em>= 1, so that it would be&nbsp; simpler to ask for the complete model instead, as even this smallest sub-model is equal to the&nbsp; whole one, which can be obtained faster.&nbsp;</p>



<p>However, for commercial dbs with hundreds of object and computed sets, this feature is&nbsp; essential, as, on one hand, updates or/and extensions of current models are generally involving&nbsp; only a handful of related sets and, on the other, printing and analyzing the whole structural E RD for them is almost impossible.&nbsp;</p>



<p>Please note that method <em>subModel </em>stops execution of its outer <em>while </em>as soon as no more&nbsp; sets are discovered in an iteration, which is discovered whenever at the beginning of the&nbsp; following one the variables <em>j </em>and <em>oldj </em>have same value. This means, for example, that running&nbsp; the algorithm with <em>S </em>= “RULERS” and <em>r </em>having any other natural value greater than 1 will stop&nbsp; exactly when the one for <em>r </em>= 1 stops.&nbsp;</p>



<p>The actual implementations of <em>REA</em>2 in <em>MatBase </em>are smarter and faster than the pseudocode&nbsp; algorithm presented in subsection 3.1, by using embedded SQL over its meta-catalog. For&nbsp;</p>



<p>example, in method <em>subModel </em>the <em>S_A </em>array is replaced by a temporary table with same name&nbsp; and the two inner loops are replaced by the execution of the following MS VBA statement (for&nbsp; the structure of the meta-catalog tables <em>SETS </em>and <em>FUNCTIONS</em>, please see [8, 23]): DoCmd.RunSQL “INSERT INTO S_A SELECT SetName, “ &amp; i &amp; “ FROM SETS INNER&nbsp; JOIN FUNCTIONS ON SETS.[#S] = FUNCTIONS.Codomain WHERE SetType &lt;&gt; ‘V’ AND&nbsp; Domain IN (SELECT [#S] FROM SETS INNER JOIN S_A ON SETS.SetName = S_A.Set&nbsp; WHERE len = “ &amp; i – 1 &amp; “) AND SetName NOT IN (SELECT Set FROM S_A) UNION&nbsp; SELECT SetName, “ &amp; i &amp; “ FROM SETS INNER JOIN FUNCTIONS ON SETS.[#S] =&nbsp; FUNCTIONS. Domain WHERE Codomain IN (SELECT [#S] FROM SETS INNER JOIN&nbsp; S_A ON SETS.SetName = S_A.Set WHERE len = “ &amp; i – 1 &amp; “) AND SetName NOT IN&nbsp; (SELECT Set FROM S_A)”;&nbsp;</p>



<p>7. Conclusions and further work&nbsp;</p>



<p>To sum up, we presented a linear, sound, complete, and semi-optimal pseudocode algorithm&nbsp; for translating E-R data models into (E)MDM schemes, used by both versions of our intelligent&nbsp; DBMS prototype <em>MatBase</em>. Obviously, this algorithm may be also manually used by db and/or&nbsp; software architects.&nbsp;</p>



<p>We provided an example of applying it to a genealogical tree sub-universe.&nbsp; We also described some powerful additional features of its actual implementations that are&nbsp; aimed at obtaining the fastest possible execution speed.&nbsp;</p>



<p>We successfully used this algorithm for years during our classes of Advanced Database and&nbsp; Software Application Architecture and Design for M.Sc. students with both Computer Science&nbsp; Taught in English stream of the Department of Engineering in Foreign Languages from the&nbsp; Bucharest Polytechnic University and Informatics of the Department of Mathematics and&nbsp; Informatics from the Ovidius University at Constanta, Romania.</p>



<p>We would warmly recommend using our (E)MDM during both db scheme design, db&nbsp; software application architecture, and their maintenance and extensions, as it guarantees the&nbsp; highest possible db data quality. We are convinced that even this small example from subsection&nbsp; 3.2 proves its power and elegance, as these twin fields are, in fact, applied mathematical naïve&nbsp; set, relation, and function theory, plus first-order predicate calculus with equality.&nbsp;</p>



<p>Our next paper will provide the algorithm used by <em>MatBase </em>to translate (E)MDM schemas&nbsp; into RDM ones and associated sets of non-relational constraints –that must be enforced by the&nbsp; software applications managing those dbs–, which is the next step towards guaranteeing the&nbsp; highest possible db stored data quality. For the last step, i.e., the architecture and design of db&nbsp; software applications, we would warmly recommend our db constraint-driven approach [11] .&nbsp;&nbsp;</p>



<p>Acknowledgement&nbsp;</p>



<p>Nobody other than its authors contributed to this paper.&nbsp;</p>



<p>Funding Support&nbsp;</p>



<p>This work was not sponsored by anybody.&nbsp;</p>



<p>Ethical Statement&nbsp;</p>



<p>This study does not contain any studies with human, or animal subjects performed by any&nbsp; of the authors.&nbsp;</p>



<p>Conflicts of Interest&nbsp;&nbsp;</p>



<p>The authors declare that they have no conflicts of interest to this work.</p>



<p>References&nbsp;</p>



<p>[1] Mancas, C. (2024). The (Elementary) Mathematical Data Model revisited. <em>Primera&nbsp; Scientific Engineering</em>, 5(4), 78–91. https://doi.org/10.48550/arXiv.2408.08367 [2] Chen, P.P. (1976). The entity-relationship model. Toward a unified view of data. <em>ACM&nbsp; TODS</em>, 1(1), 9–36. 10.1145/320434.320440&nbsp;</p>



<p>[3] Thalheim, B. (2000). <em>Entity-Relationship Modeling</em>: <em>Foundations of Database Technology</em>.&nbsp; Springer-Verlag.&nbsp;</p>



<p>[4] Mancas, C. (2015). <em>Conceptual Data Modeling and Database Design: A Completely&nbsp; Algorithmic Approach. Volume 1: The Shortest Advisable Path. </em>Apple Academic Press. [5] Codd, E.F. (1970). A relational model for large shared data banks. <em>CACM </em>13(6), 377–387.&nbsp; 10.1145/362384.362685&nbsp;</p>



<p>[6] Abiteboul, S., Hull, R., &amp; Vianu, V. (1995). <em>Foundation of Databases</em>. Addison-Wesley. [7] Mancas, C. <em>MatBase </em>– a tool for transparent programming while modeling data at&nbsp; conceptual levels. <em>Proc. Int. Conf. on Comp. Sci. &amp; Inf. Techn. CSITEC 2019</em>, Vienna,&nbsp; Austria, (2019), 15–27. . https://aircconline.com/csit/papers/vol9/csit91102.pdf [8] Mancas, C. (2020). <em>MatBase </em>metadata catalog management. <em>Acta Scientific Computer&nbsp; Sciences</em>, 2(4), 25–29. https://doi.org/10.48550/arXiv.2504.07243&nbsp;</p>



<p>[9] Mancas, C. &amp; Mancas, D.C. (2025). <em>MatBase </em>Algorithm for Translating Entity Relationship Data Models into (Elementary) Mathematical Data Model Schemes. Primera&nbsp; Scientific Engineering 7(6), 04–11. https://10.56831/PSEN-07-237&nbsp;</p>



<p>[10] Mancas, D.C. (2023). Design and development of a database software application for&nbsp; managing genealogical trees [M.Sc. dissertation, Ovidius University at Constanta,&nbsp; Romania, Mathematics and Informatics Department].</p>



<p>[11] Mancas, C., Serban, C., and Mancas, D.C. (2023). On Software Application Database&nbsp; Constraint-driven Design and Development. J. of Comp. Sci. Res. 5(1), 31–45.&nbsp; https://doi.org/10.30564/jcsr.v5i1.5476&nbsp;</p>



<p>[12] Quest. (2025, November 19). erwin Data Modeler by Quest.&nbsp; https://www.quest.com/documents/erwin-data-modeler-datasheet-147769.pdf [13] Microsoft SQL Documentation. (2025, November 19). SQL Server Management Studio.&nbsp; https://learn.microsoft.com/pdf?url=https%3A%2F%2Flearn.microsoft.com%2Fen us%2Fssms%2Ftoc.json&nbsp;</p>



<p>[14] Mancas, C. &amp; Dragomir, S. On the Equivalence between Entity-Relationship and&nbsp; Functional Data Modeling. <em>Proc. IASTED Software Eng. &amp; App. SEA 2003</em>, Marina del&nbsp; Rey, U.S.A., (2003), 335–340. https://www.actapress.com/Abstract.aspx?paperId=14533&nbsp;</p>



<p>[15] Oracle Corp. (2025, November 19). Oracle SQL Developer Data Modeler User’s Guide.&nbsp; https://docs.oracle.com/en/database/oracle/sql-developer-data&nbsp;</p>



<p>modeler/24.3/dmdug/data-modeler-concepts-usage.html#GUID-69B12E47-6075-4471- A205-BBB04113EE24&nbsp;</p>



<p>[16] IBM Software Hub. (2025, November 19). IBM Db2 Data Management Console.&nbsp; https://www.ibm.com/docs/en/software-hub/5.2.x?topic=services-db2-data management-console&nbsp;</p>



<p>[17] Dataedo. (2025, November 19). Create diagram for IBM Db2 database.&nbsp; https://dataedo.com/tutorials/create-diagram-for-ibm-db2-database&nbsp;</p>



<p>[18] von Halle, B. &amp; Goldberg, L. (2006). <em>The Business Rule Revolution. Running Businesses&nbsp; the Right Way</em>. Happy About.&nbsp;</p>



<p>[19] Taylor, J. (2019). <em>Decision Management Systems: A Practical Guide to Using Business&nbsp; Rules and Predictive Analytics</em>. IBM Press.&nbsp;</p>



<p>[20] IBM Corp. (2025, November 19). IBM Business Automation Manager Open Editions.&nbsp; https://www.ibm.com/docs/en/ibamoe/9.3.0&nbsp;</p>



<p>[21] Red Hat Documentation. (2025, November 19). Designing your decision management&nbsp; architecture with Red Hat Decision Manager. https://docs.redhat.com/en/documentation/red_hat_decision_manager/7.13/html/designi ng_your_decision_management_architecture_for_red_hat_decision_manager/index&nbsp;</p>



<p>[22] DecisionRules.io. (2025, November 19). DecisionRules Documentation.&nbsp; https://docs.decisionrules.io/doc/&nbsp;[23] Mancas, C. (2025). On Enforcing Satisfiable, Coherent, and Minimal Sets of Self-map&nbsp; Constraints in <em>MatBase</em>. Primera Scientific Engineering 6(2), 31–49.&nbsp; https://10.56831/PSEN-06-179</p>



<p></p>
]]></fullhtmlContent>
                        
                        <keywords language="eng">
                                                        
                                                            
                                <keyword>(Elementary) Mathematical Data Model</keyword>
                                                            
                                <keyword>algorithms</keyword>
                                                            
                                <keyword>Cybersecurity</keyword>
                                                            
                                <keyword>Data Integrity</keyword>
                                                            
                                <keyword>database software application design</keyword>
                                                            
                                <keyword>Digital Governance</keyword>
                                                            
                                <keyword>Entity-Relationship data models</keyword>
                                                            
                                <keyword>MatBase</keyword>
                                                            
                                <keyword>Nigeria</keyword>
                                                            
                                <keyword>Political Economy</keyword>
                                                        
                        </keywords>
                                                                </item>
        </channel>
</rss>