Introduction
When it came out in 1970, the Relational Model (Codd, not the pretenders) made a paradigm shift in all areas of perceiving data (examination; data modelling; storage and retrieval; programming). Codd had an uphill battle against the established academics because they could not understand it, and against a few of the DBMS vendors, because they were interested in protecting their established products. It took about ten years to overcome those obstacles, and then it took off. IBM had an internal product that progressed through the 1970’s, eventually becoming SQL, and the market begged them to release the definition, so that it could be made a Standard, such that other vendors could provide platforms.
For those who are not old enough to remember, we had perfectly good DBMS in those days, and fairly intense design methods, first for data in general and second for the implementation in our particular DBMS. It just was not a model, in the sense that the /RM/ is a genuine model, defined mathematically and based on First Order Predicate Calculus.
I worked for Cincom, one of the “big five” DBMS vendors, in addition to being expert in their Network DBMS, we were well schooled in the competitions capabilities, in order to compete seriously. We did not care much for academic papers because the science was already deteriorating, and the best scientists (including all progressions in the science, except for the /RM/ ) were invented by engineers who worked for the DBMS vendors.
In contrast to the ever-changing freeware/whatmewear/vapourware/nowhere filth (massive suite of programs, aka open sore) that is marketed these days as “SQL” and as a “platform”, those were the days of real SQL (compliant with the standard), and real platforms (server architecture). We already had ACID Transaction from 1960 IBM/CICS/TPC, thus all pre-Relational DBMS were heavily Transaction oriented and ACID compliant. Thus the first few SQL platforms were high-throughput, high-concurrency, ACID Transaction Processing engines.
There were only two: IBM and Sybase (Britton-Lee the Database Machine people, implemented an SQL Database Machine), and there are still only two, plus a bastard son of Sybase MS/SQL for the low end of the market.
The filth, including Orable, is neither SQL, nor ACID-compliant. Hint: with the schizophrenic notion of MVCC, they cannot handle even simple contention, let alone high-throughput, or high-concurrency, or ACID. (If you wish to comment on this point, there is a separate thread open, begging for progress.)
Methods
Re methods, it was a matter of moving from the established pre-Relational methods to the Relational methods, as opposed to inventing methods for the first time. We did not have, and certainly did not dry about not having, Modelling Tools: we drew diagram on paper, using a stencil. We never heard of, nor used, ERD. Apparently it made a big splash in the academic circles.
Note well, the /Relational Model/ is a single paper that defines a single method, like all academic papers, it defines one thing, it cannot be expected to define related things (such as database design or data modelling or how to blow ones nose without getting snot on ones hands). It is telling that the pig-poop eaters (Date; Darwen; Fagin; and all their followers) wring their hands and wail about “Codd did not define this or Codd did not define that ...). Practitioners are fully capable of continuing the data modelling and database design methods while conforming to the new /RM/, without the need to be fed from a baby bottle.
In 1983 Robert Brown extended his modelling method Logical Database Design Technique to cater for the Relational Paradigm. It became used by a few important customers such as DoD, and thus became known to all DBMS vendors (I personally wrote a database for DoD in Cincom’s TOTAL DBMS), and eventually all their customers. It became widely known by 1987, when the first product ERwin came out (first by LogicWorks, and later by Computer Associates). The IDEF people took it over, named it IDEF1X (following IDEF1 for informational modelling and X for Relational), and maintained it. By 1993 it was a NIST Standard.
Several Data Modelling tools followed, such as PowerDesigner and ER/Studio, but they are nowhere near ERwin in terms of true IDEF1X or platform-neutral implementation.
The point of this thread. In the real world (as distinct from the “world” as concocted by “theoreticians” who allege to serve this space), we have:
- the real /Relational Model/ 1970,
- the real Relational Data Modelling method IDEF1X since 1983 (1987 as a product), and
- real SQL platforms since 1981.
The question begs:
- why is that unknown to the “theoreticians” ?
- why do the pig poop eaters NOT teach Relational Data Modelling ?
--- why do they NOT teach IDEF1X ?
- why do they teach instead the defunct; obsolete; anti-Relational ERD ?
These sad people are operating FIFTY YEARS behind the leading edge AFA the /RM/ is concerned, FORTY YEARS behind the leading edge AFA Standards and SQL Platforms are concerned.
Great news. There is one single academic across the entire planet, who has started a journey from the anti-Relational-marketed-as-Relational land that is their studied home, across the great divide, to the Relational world. We touched on the subject in another thread, but it deserves its own thread, so I have brought it here.
> On Wednesday, 24 March 2021 at 23:27:48 UTC+11, Nicola wrote:
> > On 2021-03-24, Derek Ignatius Asirvadem <
derek.a...@gmail.com> wrote:
> >
> > In case you missed them. Could you please respond to these questions.
> >
> >> On Thursday, 18 March 2021 at 14:38:13 UTC+11, Derek Ignatius Asirvadem wrote:
> >> > On Tuesday, 16 March 2021 at 23:23:28 UTC+11, Nicola wrote:
> >>
> >> > Note that the "circularity" in that diagram is only apparent (ERD are
> >> > misleading).
> >>
> >> So, why in heavens name, do professors teach ERD ?
>
> I cannot speak for anyone else...
First, let me thank you for your very interesting and considerate response.
> One reason is Chen's Entity-Relationship models are likely perceived as
> easier to grasp for novices than something like IDEF1X. Whether that is
> a correct perception, it can be debated. Another reason is probably just
> historical, due to the huge influence of Chen's seminal paper.
It may have been seminal for the academics, let me assure you, it was not seminal, or even great, for practitioners of the day. It does not have a semantic base, whereas the /RM/ and IDEF1X does.
For academics. I can grant, up to 1970, the paper was amazing. After 1970, it was ageing, badly. By 1983, it was dead; obsolete; defunct; superseded.
Ok, to rephrase the question, why was that pre-Relational method being taught after 1983, and why is it still being taught after the advent of the /RM/, after the /RM/was proved, and after the first genuine SQL platforms came out (1983), and after IDEF1X came out (1983 to practitioners, 1989 as a product, 1993 as an international standard) ?
Novices grasp anything you give them, so the responsible professor gives them the right thing, not cabbage patch dolls for Computer Science.
> In a general setting, ERD is fine for teaching the basics of modeling:
> entities, relationships, generalizations. For someone who has never done
> it, taking a description in a natural language and analyze it to distill
> such concepts and put them in diagrammatic form is not a trivial task
> (well, it's not trivial even for experts!).
> ERDs can be useful as
> a gentle introduction to such topics.
>
> ERD can be introduced without any background knowledge in databases
For introductory levels, show them IDEF1X/Entity level.
> (although that is true about IDEF1X to some extent, when you are
> teaching IDEF1X you are in fact teaching the Relational Model),
Yes !!! Instead of whatever mumbo jumbo that is NOT Relational. That is pretty much the central point. To think about data in terms of the /RM/, not in terms of the physical records that the freaks can contrive in their little crania, because they cannot grasp the /RM/.
> and even
> for purposes that are different from mapping into the Relational Model.
> For instance, one may use ERDs in the context of programming—say, to
> design a game.
Data, the /RM/, is not application dependent. It is data dependent. It is far superior to any other method or non-method or non-thinking.
> When it comes to using ERD vs IDEF1X for designing Relational databases,
> my experience is as follows:
>
> - when teaching ERDs, one also has to explain the rules to translate
> them into the RM:
One can’t. I don’t. I didn’t in the example. It is like translating the thinking that goes into rap “music”, into the thinking that goes into Beethoven’s Fifth. Don’t. Just think classical music. Don’t draw a diagram that has an inferior understanding of data (actually NO understanding of data), and then attempt to translate it into a higher form. No, think in the higher form. and then draw the higher form.
> this is a layer of accidental complexity that IDEF1X
> completely eliminates.
Yes. And it does so by design, not by accident.
> - On other hand, when teaching IDEF1X one has to introduce a richer
> language, so it doesn't take less time to teach than ERD; but I'd say
> that it doesn't take much longer either, as some people might might
> expect.
When you teach a principle (the RM), the whole lesson, even though it is rich, is actually faster, and more deeply understood. When you teach without the principle (ERD, no RM), you struggle to teach because there is no principle, just a collection of low-level axioms. Fragments of meat on the ground that only pigs and rats forage for, but hey, that is what the “theoreticians” promote.
> - Perhaps contrary to someone's opinion, IDEF1X models can be grasped by
> novices: I have successfully taught IDEF1X to people without any
> background in Computer Science and high-school level of acquaintance
> with logic for a few years now.
Absolutely. I have been doing it for forty years. Half the time, I don’t even tell them what it is, I just erect the data model during the discussion. If they ask, I give them my short IDEF1X Intro:
https://www.softwaregems.com.au/Documents/Documentary%20Examples/IDEF1X%20Introduction.pdf
> - ERDs make it difficult or impossible to reason about keys effectively:
> think split keys, for instance. Or common ancestor constraints. This
> is one of my biggest issues with ERDs.
Well, it is completely 100% brain-dead re the concept of Keys. Which is why I say that ERD is anti-Relational. The central concept in the /RM/ is logical Keys, that are composite. It is not possible to teach Relational using a method that cannot describe Relational.
On the other hand, if one wishes to cancel the DATA MODELLING exercise, and to go into the establishment of premature entities (which the entire OO/ORM world slavishly does), sure, ERD works fine: the “modelling” is not modelling abut a single iteration of drawing what Entities one can imagine (that is imagined, not real) for a first evaluation, based on the need (not on the data), and one knows that one will stamp as ID field on every file. In the other thread, OP has given us three perfect examples of precisely that, the total absence of modelling.
ERD cannot be used for (a) Relational modelling of any kind, (b) modelling data of any kind by a mind that is cognisant of the /RM (1970, fully established by 1981, available in SQL platforms 1983).
Since ERD does not handle Relational Keys, the bottom line is, ERD is anti-Relational.
The freak brigade (Date; Darwen; Fagin; and their followers) play the Straw Man that is their god, they use ERD to muddle instead of model, and then on the basis that ERD fails re Keys, they declare that the /RM/ doesn’t handle Keys very well. Lies upon lies upon lies.
> If you are using them to design
> a video game, that might not be a problem, but for mapping them into
> the RM, well, they effectively cripple your design process.
Yes. Again, one cannot use ERD for Data Modelling of any kind, let alone for Data Modelling under the Relational paradigm.
I reject the notion that a database that is required for any category whatsoever is better designed without reference to the /RM/. The notion is ridiculous if you understand FOPC. If you suggest there is, please open a new thread and provide an example.
> - There are some aspects of ERDs that are *far* from intuitive. If you
> have ever tried to explain ERD relationships of degree higher than two
> (and especially how to constrain the cardinalities of the participant
> entities), then IDEF1X seems a lot simpler!
Yes, on both points. Technically, there is no Cardinality at all, any Cardinality that is drawn by the designer, is beyond ERD, and extension. The reason they do that, is precisely because Cardinality is important to the modelling process. As evidenced in the source thread.
Criteria for considering redundant relationships in ERD
https://groups.google.com/g/comp.databases.theory/c/8rUC80JwTaE
> I have recommended my colleagues to switch to IDEF1X without success
> (but without insisting either, to be honest). I guess this is simply
> because habits are hard to change and most textbooks do not use it. New
> generations pick up what they have been taught by previous generations.
That is true, and it is the same as for cannibals that live in mud huts. The Creutzfeldt–Jakob Disease is not going to effect a change in their habits. Exactly the opposite of what is required of a scientist.
> Some may feel IDEF1X is "low-level" (too many details) compared to ERDs.
False: display only the level of detail necessary for any given exercise {Entity|Key|Attribute}.
> Or some may have criticisms along the lines of this analysis:
>
>
https://www.essentialstrategies.com/publications/modeling/idef1x.htm
God help me. Academics just love to sabotage themselves, and then cry about the fact that they have been sabotaged.
That is too superficial and ignorant, I don’t understand why a guy like you (with some actual experience of IDEF1X) would resort to it. It has the odour of the academic, isolated from reality, writing about how yesterdays milk is sour, without ever having milked a cow.
It is very sad that that is all that is available to academia, re IDEF1X. Perhaps try searching.
I will not answer such superficial, ignorant nonsense. However, the relevant issues are noted by you, and answered by me, below.
> Another issue may be that IDEF1X is not so popular in the industry
> either, except for some sectors or in some geographical areas. E.g., it
> doesn't seem to be so popular in Europe.
Academics know absolutely nothing about the industry. They tell each other what the “industry” is, and use that to make sure they stay FORTY YEARS behind the industry. Think about the fact that there are many DM tools available, and each of them provide IDEF1X, and the fact that academics will not use them, in order to pretend that both the DM tools, and IDEF1X, does not exist. Pure ignorance of the industry that they purport to serve. Sure, they stick to the freeware, eg. the various anti-SQL, which is not SQL< and complain that “SQL is broken”. Likewise, there is no freeware DM tool, so they say it does not exist, and does not exist in their contrived “industry”. Meanwhile, back in the industry, we have had those tools since 1983, automated since 1989, and we have resolved those problems since 1983, automated since 1989.
> My main complaint with IDEF1X is the treatment of generalization
> hierarchies, in particular the lack of a correct way to model a total
> inclusive specialization (A must be one of B1, ..., Bn and it may be any
> of B1, ..., Bn); the approach I have seen around (e.g., see Thomas
> Bruce's book or ERwin's manual) does not cover such case in a sound way.
> And the standard never mentions inclusive specializations, AFAICT.
The problem there is, you do not understand Transactions (ACID, since 1960 in IBM Mainframes; since 1970 in pre-relational DBMS; since 1981 in RDBMS). It is a major blind spot for academics and theoreticians, that practitioners simply do not have. There are several threads in this forum that simply do not progress to closure due to the unwillingness of academics to engage, and to learn about ACID Transactions. Again, academics are stuck in their vacuum tube of what they themselves have written (filth from Stonebraker; Ellis; Date; Darwen; Fagin; etc), and are in reinforced pathological denial of the actual industry; the actual commercial products that serve the industry, and they remain so for FIFTY YEARS.
Any good NON-"theoretical" data modeling/Codd-relational database design courses/books/papers out there
https://groups.google.com/g/comp.databases.theory/c/T8sRg3I2vJU
[[Relational] Database] Open Architecture Standard
https://groups.google.com/g/comp.databases.theory/c/umEPHEi5FA8
MVCC, Advantages & Disadvantages
https://groups.google.com/g/comp.databases.theory/c/f474bCuvZ_A
Since you are the single academic who is venturing out from their safe space, I welcome such an engagement, please feel free to engage those threads, if and when you have the interest.
Yes, absolutely, out here in the real world, using real SQL RDBMS platforms since 1983, we have been implementing precisely both Exclusive and Non-Exclusive Subtypes perfectly, since 1983. That is:
- for a Non-Exclusive Basetype, we guarantee that there must be at least one Subtype
- for an Exclusive Basetype, we guarantee that there must be one Subtype only
This document may assist somewhat in explanation, noting that the full and formal explanation lies in ACID Transactions, which has not progressed in this forum, and indeed in academia, since 1970.
https://www.softwaregems.com.au/Documents/Article/Database/Relational%20Model/Subtype.pdf
If there is anything in that doc that is not completely understood, please ask.
> Another thing: people who already know ERDs easily accept the
> distinction between independent and dependent entities (which reminds
> them of the distinction between ERD's strong and weak entities), but
> they may not see what additional information identifying and
> non-identifying relationships bring to the table
They can’t. Because it is not taught, not defined. Teaching the distinction between strong::weak, but not teaching how to implement that, in terms of the child PK, is criminal. Chen’s strong::weak is weak. RM/IDEF1X Independent vs Dependent; Identifying vs Non-Identifying, is strong (has not changed since 1970).
Since it is one concept, not two, in the RM/IDEF1X, you get the one concept with the one implementation method, and it can be perceived several ways, any way you like, at any level-of-detail you like.
> (“If you drew all the
> relationships without dashed lines, you would still be able to interpret
> your model in the same way"). I found it difficult sometimes to convince
> them that such a distinction is important.
Only in the early stages of data modelling. Once the Keys are exposed, and worked, which is the bulk of the modelling exercise, that distinction is exposed, and difference is plain.
When engaging the modelling exercise fully, meaning, in order, FOPC; the /RM; and IDEF1X as the rendition, and as you confirm “meaning is king”, you may realise:
- the solid lines define ownership (Extension, of the Matter of the parent)
- the dashed lines define classification (imposition of the Form of the parent)
Assuming you are familiar with Aristotelian concepts, otherwise please ask.
> Another criticism about IDEF1X is the lack of many-to-many relationships
> (except in "Level 1"/"ER" diagrams), which sometimes makes it
> awkward to read a relationship, because it is more natural to skip the
> intermediate associative entity.
You have the right idea, but not the precise method.
> For instance, one might want to model
> the following:
>
> - a customer BUYS zero or more products;
> - a product IS BOUGHT BY zero or more customers.
>
> In IDEF1X, you'd do it like this:
>
> +-----------+ +-----------+
> | | | |
> | Customer | | Product |
> | | | |
> +-----------+ +-----------+
> | |
> | |
> | +-----------+ |
> | | | |
> +-----O| Purchase |O-----+
> | |
> +-----------+
>
> How would you label the relationships? You might use:
>
> - a customer PERFORMS (?) zero or more purchases;
> - a product IS SOLD AS (?) zero or purchases.
>
> But the most natural reading is as above, with "buys"/"is bought by"—
> which does not mention purchases, though.
Well, in the previous model, Purchase does NOT exist, those verbs are relevant in that context only. It is natural to not-reference what is not-there.
In the model in which Purchase DOES exist, it is not natural to ignore it. The verbs must deal with the entities at the two ends of each relation, not some entity at the end of a chain.
>>>>
I believe you understand that the /RM/ is founded on First Order Predicate Calculus, and thus there is nothing in the universe that cannot be defined in FOPC, and therefore in a RDB. Thus you can’t mess with the Predicates, the are atoms, that you must treat as such. You don’t want to mis-read a Predicate in a single “link”, for focussing too much on what is at the end of a Predicate chain.
Separate point. You can’t take a summary at level 1, and apply it as detail in level 2. You have to either expand the summary at level 1 (full detail, which can then be applied at lower levels), or vacate the notion that a level 2 article can be described by a summary at level 1.
<<<<
At level 2, since Purchase exists,
Each customer BUYS zero or more products
Each product IS BOUGHT BY zero or more customers
is simply false. The truth is:
Each Customer buys 0-to-n Purchases
Each Product is sold as 0-to-n Purchases
Each Purchase is bought by 1 Customer
Each Purchase is a sale of 1 Product
Having said that, it is quite acceptable to READ OFF a Predicate chain, without violating the atomic Predicates:
- Each Customer buys 0-to-n Products via Purchase
- Each Product is sold to 0-to-n Customers via Purchase
In this example, p :
https://www.softwaregems.com.au/Documents/Documentary%20Examples/Order%20DM%20Advanced.pdf
after observing the model, it is quite acceptable to READ OFF:
- Each Party offers 0-to-n Objects via PartVendor
- Each Party uses 1-to-n Addresses via PartyAddress
Note that the above explanation regards the /Relational Model/, and FOPC, its foundation, not IDEF1X, which just happens to be the notation we are using for this data model, and which facilitates modelling data Relationally. It is not a “problem” in IDEF1X.
Put another way, if FOPC Predicates, not necessarily the calculus, but the full articulation of logic definition, is taught first, the pupils obtain a solid grounding in the definition of facts, using formal logic. That is the /semantics/ that we will later expect in a model. After that, teaching the /RM/ is easy. After that, issues in rendering a Relational Data Model in IDEF1X is easy. Issues such as these are minor and easily resolved in the context of the three layers. It is not a “problem” isolated in the third layer, devoid of context.
> IMO, this is a valid criticism. Some additional (an)notation to pick out
> "pure associative entities" (for a lack of a better term) might help.
First understand that the [pure] Associative entity consists of Keys only, no attributes. If it has attributes, it is not an Associative entity.
Then, for Associative entities, the VerbPhrase should apply to the entity at the end of the chain, not the proximate entity. That is an exception.
> >> Why, since we have had IDEF1X for Relational Data Modelling since
> >> 1983 (established and well-known international standard since 1993),
> >> do professors suppress that, and instead “teach”; push; shove;
> >> market; propagate the broken ERD, which is a pre-Relational artefact
> >> ?
> I think I have answered this above, at least by providing my own
> perspective.
Thanks.
As per the entire body of evidence, consistent, since 1970, they are actively suppressing the /RM/, and IDEF1X that goes with it. They are actively promoting pre-1970, pre-DBMS Record Filing Systems fraudulently, as “Relational”, along with the ancient; broken ERD that goes with it, and fraudulently calling it “Relational Data Modelling”.
Why ? Because their goal is the destruction of science, the suppression of truth, by causing confusion, by maintaining non-resolution, by pleading that falsity is “truth”, by denying reality, teh Four Laws of Thought.
> >> > In your model, each teacher must always be assigned to at least one
> >> > course. With
> >> >
> >> > (a) such an (unrealistic) constraint, *and*
> >> Why is that constraint “unrealistic” ? In the real world, it is
> >> a common; even pedestrian, requirement. We have been implementing
> >> such in Relational databases since 1983.
> I was thinking more in terms of "department employees", one of whose
> duties may be teaching (but they may not be teaching all the time). But
> sure, you may think in terms of employees who teach (a subset of all the
> employees): then they must teach something, of course.
Sorry, that is not what I meant.
Let me rephrase the question. Why do professors commonly labour and state that a 1::1-to-n relation is difficult, why do they pretend it is uncommon ? And how is such a relation (you correctly identify it as a Constraint) established in a Relational database (and in the data model erected in IDEF1X).
The core difference between pre-Relational theory; methods; and DBMS platforms vs the Relational Model; Relational Data Modelling; and RDBMS, is Relational Keys. The core of Relational Keys is Identity, the identity of the subject. To teach Data Modelling after say 1983 without teaching the relevance of Keys, without teaching precisely how to identify a subject, is criminal.
Here is a quick document that clarifies the issues you questioned, that I have answered. To be complete, I have added an item re Rolenames, because it is the third common “issue” that people raise:
https://www.softwaregems.com.au/Documents/Article/Database/Relational%20Model/IDEF1X/Nicola%20IDEF1X%202.pdf
------------
-- Status --
------------
In essence, you have picked up IDEF1X, you have determined it is *THE* Standard for Relational Data Modelling, and you have started to use it. Excellent, the single academic who does. However, you are hindered by reading the nonsense that academics have to say about it (noting that they actively suppress it and instead promote ERD), which is as usual ignorant and incorrect, totally unscientific.
There are no problems or difficulties whatsoever in using IDEF1X in the entire exercise of genuine Relational Data Modelling. I have close to 100 such databases, some with over 500 tables (which is why and how I have developed Extensions). Instead, if you have any questions; any difficulty at all, please ask me. Hopefully you will progress much faster.
I would say, get more experience, and use data models that have some complexity (problems to solve).
(The only problem, if one could say such a thing exists, is that IDEF1X cannot enforce the /RM/, people can still do what ever they want. I have a remedy for that, but that is beyond the scope of this thread.)
----------------
-- Conclusion --
----------------
It is very sad that academics deny the real world; the industry; the science; the methods; the platforms, and instead indulge themselves in an isolated contrived “reality”, fixed in 1969. FIFTY YEARS OUT OF DATE.
We need to appreciate that as per the mountain of consistent evidence, the “theoreticians” teach the anti-Relational, pre-1970, pre-DBMS methods as “Relational”. FOR FIFTY YEARS. Now, categorically, as per the evidence, it is clear that the “theoreticians” do not teach the Standard Relational Data Modelling, but instead teach porcine excreta as “Relational Data Modelling”. FOR FORTY YEARS.
I don’t know how you don’t strangle your colleagues.
Cheers
Derek