where the RFS was physical only (and therefore the
pointers are physical), the RM is entirely logical.
[rCa]
We do not create a model of what
we want, because that is limited to what we understand based on the
app that we are trying to build. That is one of the biggest and
common mistakes that the OO/ORM crowd make. It leaves them with no understanding of the data, as data.
[rCa]
There are huge advantages in modelling the data, as data, and nothing
but data, as extracted from the perception of the real world. - That,
and only that, makes your model immune to [structural] change.
[rCa]
Eg. All definition of the data must be in the database, not outside.
That means all constraints
So, a qualifying question, using the simplest DDL, so that the
issue is exposed and not detracted from: in this RDM (which is 80%
complete, so please do not argue that it is not perfectly
Relational, we know it is not)
http://www.softwaregems.com.au/Documents/Documentary%20Examples/Order%20DM%20Advanced.pdf
Keyword
Part
PartDescription
Object_V (View with computed columns)
Do you understand that Object_V.Description is the concatenated
list of Keywords, that describes a PartCode ? That is derived by
calling a recursive Function, eg. Part_Description_fn( PartCode ).
Just a request for clarification: such function should concatenate
the keywords associated with the provided PartCode, or those keywords
*plus* the keywords associated to any (sub)component of the provided
PartCode?
What ? What has a component or sub-component have to do with it ?
(The app should not (does not need to) access tables, that would be
very silly. It should access Views.)
This will probably be the subject of questions, so let me take it from
the top, if you do not mind. This is the second of the three types of Hierarchies in the RM. The example is the Unix Node (file & directory hierarchy), the data is: http://www.softwaregems.com.au/Documents/Tutorial/Recursion/Hierarchy%20Inline.pdf
The data model is: http://www.softwaregems.com.au/Documents/Tutorial/Recursion/Directory%20DM%20Inline.pdf
We need to produce the Path, as a column. Perfect candidate for
a Function, that is recursive.
Node_Path_fn (
NodeNo, -- Starting point
ReturnNodeNo -- Boolean: if set, return CSV NodeNos,
else return "/" separated list of Node.Names
)
Returns Path ( CHAR(255) not TEXT) -- list of NodeNos/Node.Names
The same Function is used in the CONSTRAINT to CHECK that the NodeNo attempted on INSERT is not in the list of ancestors (circular
reference).
Simple and straight-forward in SQL.
If PusGrossNONsql has no recursion,
In SQL, the latter (either the Assembly tree, or the Component tree)
is serviced by a Stored Proc, not a Function. Last time I looked at
the bastard grandson of Stonebraker, it did not have Stored Procs.
In normal SQL, the Assembly or Component tree would be produced by
a recursive Stored Proc that contains a single SELECT. With full
indentation to show the levels in the tree, or a LevelNo which is
derived, etc. Executes itself until it reaches the leaf level across
all branches.
Second option: just code a single pure SELECT, in a WHILE (forever)
loop that traverses the tree.
That was a great walk down memory lane. Thank you !
I beg to disagree. Don't generalize. Academic work is not different from
any other human endeavor: many people do it, some do it well, only a few
are exceptionally good at it. But let's not get sidestepped: your
opinion about academia is widely known in this group.
Labelling a person and attacking the person is a lame, /ad hominem/
attack,
Name one single articulation of RM (Not RM/T) concepts that any
academic since Codd (fifty years and counting) has written.
ERD [...] is totally inappropriate
Its bastard child, its resurrected ghost, is Postgres*NON*sql.
The natural child being Sybase, I guess, given that it was made by
members of the Ingres' team :)
Not sure what you mean.
I meant PusGross is the bastard of Ingres.
Sybase is the natural child of Britton-Lee, a genuine pre-Relational
database machine that competed against IBM, Cincom, etc.
I do not wish to limit what you say. But at least for part of
evaluating this submission, please play the role of a real world archivist/librarian/cataloguer.
http://www.softwaregems.com.au/Documents/Article/Database/Movie%20Title/Movie%20Title%20Progression%20V0_1.pdf
---------------------------------------
User Progression (Early Workflow)
---------------------------------------
Register Collection
Register Items, which are Undetermined
Physical properties ... leading to logical properties
As and when the Realisation is determined ("abstraction" is identified), register Realisation
As and when the Concept is determined ("abstraction" is identified), register Concept
On Thursday, 9 January 2020 23:17:06 UTC+11, Nicola wrote:
On 2020-01-09, Derek Ignatius Asirvadem <derek.asirvadem@gmail.com> wrote: >>[...]
I have more comments on that, but I have run out of time.
I will wait for the rest before responding.
Well if you're going into all those aspects, then I will give you what
I have. I previously gave you just the introduction to the basic
structure, because it IS different to FRBR; FIAF; etc, and i I thought
that THAT would be the focus of the initial discussion.
http://www.softwaregems.com.au/Documents/Article/Database/Movie%20Title/Movie%20Title%20Progression%20V0_2.pdf
Non-Identifying relations are not shown (clutter at this stage, next
stage is choosing Keys, relevant after that).
I am showing the following as separate SubjectAreas:
Agent ... Person ... Corp ... Collective
Country ... Address
I would ask, what is the precise distinction between Item and the
proposed Medium ? It seems to me to be 1::1.
Item is no longer the FRBR/FIAF Item. For a better name for Item,
would you prefer Product, or Article ?
One question is whether establishing Variants can be done without an
overarching Concept already established. If that weren't the case (as
I believe), probably Variant should be moved under Concept Realisation.
(I have already responded to that, awaiting your response.)
As the model stands now, you may relate Variants of Realisations of
distinct Concepts.
Yes. That is unlikely, but possible. There are several ways to
prevent that
But do not let that subtract from the discussion (that Variant is more correct under Concept or ConceptRealisation).
General point. [Details...]
So why is the finished product (one DVD or one movie reel) not an Item
? (We need to go beyond the definitions in the FRBR/FIAF docs, to
take them only as ambiguous and confused, unresolved, considerations.)
At this point we could say, oooh. A dubbing in another language (with
no other changes) is not a separate Realisation, but a second Item.
Which makes a hell of a lot more sense than the FRBR/FIAF definition.
I would go so far as to say, they can edit as much as they like, but
unless they actually create a finished product (an Item) all those
edits are irrelevant to us (they are relevant to the production
company; their inventory; their workflow).
I would ask, what is the precise distinction between Item and the
proposed Medium ? It seems to me to be 1::1.
To sum up this point.
- Realisation is the fullness of a defined project; a production, that
did take place. It is concrete but excludes the product (hah, I just
figured out a better name for Item !)
- Item (new name Product) is the finished product, actually the
product of post-production.
- Item is classified by Medium (not what you meant, but a simple
reference table).
Dracula would still be two Realisations because (a) they are two
languages (b) two separate takes (productions done at the same time).
With one Item (Product) each. If an Item comes out in three different
media, that would be three Items.
Blade Runner would still be four Realisations, with one Item (Product)
each.
Which would make the backbone of your model a four-level hierarchy as
the original (Concept -> Realisation -> "Medium" -> Item),
Yes. And the backbone is visually rendered by Identifying relations,
the Keys, the solid lines.
but with
a few important differences:
- only one "intellectual" entity (Concept); everything else is backed by
something concrete (this would remove the confusion existing between
Work and Variant in the FIAF manual);
No kidding. Purposely done.
- all entities (possibly except for "Medium") are independent (well, the
FIAF manual does not mention this explicitly, but I'd say that it
implies that the only independent entity is the top-level Work);
If /Independent/ has the normal meaning, not the RM/IDEF1X meaning,
yes. But why is independence relevant ?
If /Independent/ has the RM/IDEF1X meaning, no. Only Concept
& Realisation are Independent.
- Variant is a fifth key entity, and is an associative entity at the
"concrete", not "intellectual", level.
Associative at the concrete level, yes.
Not sure what you mean by the rest. What is a "fifth key entity":
Blade Runner would still be four Realisations, with one Item (Product)
each.
Yes.
- the ER diagram I sent you is /semantic/
- you can //read// all the semantics from the diagram
Concept. In V0.2 a Realisation can be registered without having
determined its Concept. My understanding has progressed. Is that
realistic ? When would a Realisation NOT have a determined Concept
? Even including the non-feature film registry.
On Saturday, 11 January 2020 03:37:11 UTC+11, Nicola wrote:
I've taken all your comments into account, the next iteration is
ready. I don't have the words in response. Tomorrow. Since we are
flipping night-day, instead of losing a cycle, here it is.
- I have changed Concept to Story
- since we are ready for Keys, I have included the elements for it.
http://www.softwaregems.com.au/Documents/Article/Database/Movie%20Title/Movie%20Title%20Progression%20V0_3.pdf
Thus Title, wherever it is stored, is Identified as [ Language,
TitleReduced ]
And script? How would you distinguish "-E-+-|-+-i-|-+-| -a-#-|-e-+-c-|-|" and "Alenkiy tsvetochek"?
On Tuesday, 14 January 2020 21:51:51 UTC+11, Nicola wrote:
Ok. After reflecting on how Titles and Stories should be related and
comparing your v0.3 and v0.4 models, I think that you should reintroduce
an independent Title entity in v0.4.
In V0.4, the Predicates touching Story are as follows.
Taking each in turn:
0. reintroduce an independent Title entity
The predicate for that is false. A Title does not exist
independently. It exists only because a Story [with that Title]
exists.
1. A Title identifies (is the "main"/"reduced" title of) of 0-N Stories.
A ( Language, TitleReduced, Creator, Year ) identifies 1 Story
2. A Story has one identifying/main/reduced title.
Each Story is primarily identified by ( Language, TitleReduced, Creator, Year )
Each Story is known as 1-to-n StoryTitles
One StoryTitle is the TitleReduced in long form
3. A Title may be an Alternate Title;
The /rest/ in StoryTitle are Alternate Titles
4. A Story has zero or more Alternate Titles.
Yes. The 1 in the /1-to-n/ is the main Title un-reduced.
Nicola
On Wednesday, 15 January 2020 20:59:15 UTC+11, Derek Ignatius Asirvadem wrote:
[...]
Language again. Title is dependent on Language. So wherever Title
is stored, the Atom must be [ Language, Title ]. Which is why I had
Language not Country in the PK. Response please.
Before responding, I would ask that you obtain familiarity with SQL
language and CharacterSet implementation, both server-side (storage)
and client-side (representation). The concept of Locales.
( I don't know how the NONsql suites do it, and I really don't want to
know. I trust you will agree, since we are working with the RM, not
the pig poop marketed as "relational", we should concern ourselves
with the data sub-language that is defined in the RM: SQL, and not
anything else. As always, the high-end suppliers implemented language
and charset support decades before the SQL Standard defined it.)
Note also, my design for Keyword. I allow Keywords to be specified for:
a. { Concept | Realisation }, and
b. { Concept | Realisation }.Title, and
c. I ensure they are not repeated for a given { Concept | Realisation }.
Since Title is Language dependent, any Keyword that is related to
a Title will thusly be Language dependent. Default Locale, etc.
This post introduces V0.6
===================
http://www.softwaregems.com.au/Documents/Article/Database/Movie%20Title/Movie%20Title%20Progression%20V0_6.pdf
In the same way that Edition is a manifestation of 1 RealisationTitle
(not Realisation), and therefore a single Language, in this model,
I expect to clarify whether Realisation is rendition of 1 ConceptTitle
(not Concept), and therefore a single Language.
Just as
Table[ Key ] raA Attribute
If 3NF/"Full" FD is understood AND a Relational Key is used:
Table[ Key ] raA Parent.Attribute
- Besides, I would remove Title from Concept, because that information
belongs to ConceptTitle. A ConceptTitle can additionally provide all
the required information about each title.
Disagree. This is correct:
Concept [TitleReduced, Creator, Year] raA 1 Title (local attribute)
And
Concept [TitleReduced, Creator, Year] raA 0-to-n ConceptTitles (subordinate table)
Not 1-to-n as I have explained elsewhere.
Ok, so we have:
Concept[ TitleReduced, Creator, Year ] raA 1 Title (local attribute)
Concept[ TitleReduced, Creator, Year ] raA 0-to-n ConceptTitles (subordinate table)
ConceptTitle[ TitleReduced, Creator, Year, Language_CT, TitleReduced_CT ] raA Language_CT[ Title ]
Realisation[ TitleReduced, Creator, Year [, Differentiator ], Language_CT, TitleReduced_CT ]
Time for another one of those progression-of-Codd inventions that is fully-integrated-with-science-and-logic. That PK is getting silly,
because both TitleReduced and TitleReduced_CT have a Language. Title
is duplicated, only one is required. Resolving all that, this becomes
the Primary Key:
Realisation[ Language_CT, TitleReduced_CT, Creator, Year [, Differentiator ] ]
Nicola
===================
This post introduces V0.7
===================
http://www.softwaregems.com.au/Documents/Article/Database/Movie%20Title/Movie%20Title%20Progression%20V0_7.pdf
Nicola
===================
This post introduces V0.9
===================
On Thursday, 20 February 2020 07:20:34 UTC+11, Nicola wrote:
On 2020-02-17, Derek Ignatius Asirvadem <derek.asirvadem@gmail.com> wrote:
When you do come back, please evaluate just the last model, eg. V0_10,
those in-between can be safely skipped.
At a quick glance: Agent is an interesting case, because apparently it
*requires* the use of a surrogate (AgentNo)...
Yes, of course.
If you think I have declared surrogates are banned, period, that is
false. I have declared that surrogates are banned AS A STARTING
POIINT in the exercise of modelling a database that is intended to
comply with the /Relational Model/.
There are only two scientifically valid reasons for a surrogate (as
opposed to the anti-scientific, schizophrenic "reasons" of the Date;
Darwen; Fagin; et al Gulag). In both cases, because it is
a surrogate, it still constitutes a Relational Breach, specifically a.
a breach of the Independent Access Path Rule. It cuts of access from
the tables below the breach, to their genuine ancestors (above the
breach). b. and of course the Relational Key Normal Form.
The surrogate breaks the natural Hierarchy, and creates a new Hierarch
(in my IDEF1X models, I show this visually, because I render all
Hierarchies visually, vertically). Please feel free to discuss in
detail.
1. The PK has become too wide to be used (migrated) throughout the hierarchy, and so a surrogate is /substituted/ for the PK. This is exemplified in Address and Person. I think you understand that usage.
2. The table is a Basetype, and the Subtypes have quite different
PKs, such that a common PK cannot be established. Thus the common PK
in the Basetype is manufactured, it is a surrogate. Please feel free
to discuss this usage in detail.
Starting the exercise by stamping a surrogate on every file (they are
not tables) cripples the modelling exercise, the exposure;
determination; and deployment of discrete Facts.
--------------------------------------
-- This post introduces V0.10 --
--------------------------------------
https://www.zerohedge.com/geopolitical/coronavirus-deaths-outside-china-spike-who-team-visits-wuhan
God bless you and your family
--------------------------------------
-- This post introduces V0.10 --
--------------------------------------
Table-Attribute http://www.softwaregems.com.au/Documents/Article/Database/Movie%20Title/Movie%20Title%20TA%20V0_10.pdf
So the question is this. While we are going back and forth with the modelling, can I give you just the whole model on one page ? Right
now it is A1.
- "Is Known As" is identifying (Concept -< ConceptTitle and Project -< ProjectTitle);
That is not a clerical level mistake. That is unchanged from V0.9.
So that is either a matter of understanding or modelling issue (not
an error) that needs to be progressed in the next iteration.
In case it is a matter of understanding. First, note that that /difference/ ie.
/Concept is known as ConceptTitle/ (Non-Identifying)
vs the other children of Concept being Identifying, was a conscious discussed choice.
Second, when the **full** PK
Concept[ Creator, Year, TitleReduced ]
is **not** used to Identify the child
ConceptTitle[ Creator, Year, LanguageCode, TitleReduced ]
the relation is Non-Identifying. Of course, the FK is migrated as normal:
/Concept[ Creator, Year, TitleReduced ] is known as ConceptTitle[ Creator, Year, TitleReduced_C ]/
- Others:
- KeywordPermitted is 1:1-N with both ConceptKeyword and
ProjectKeyword: I think that should be 1:0:N (a simple reason is
that a Concept may have no associated Projects).
The cardinality declared in V0.10 states, a Keyword will not be added
unless it has a child in { ConceptKeyword | ProjectKeyword }.>
One issue with the term "Project" is that a full database model would
likely include "cataloguing projects", so the term is at risk of being
overloaded. But for this thread I believe it's fine.
(I would much rather model a real world database than a purely
academic one for this thread. The former has a veracity that the
latter does not have, and the former covers the latter plus more, not
less.)
First, when one populates the database, are "reduced" titles assumed to
be in their original language or in the cataloguer's language?
(The "un-reduced" Title is in the row, so the question applies to both
Title and TitleReduced.)
For Concept, in the cataloguer's Language (implicit).
IMO, that's an unneeded restriction (why not adding LanguageCode?).
Ok. Next iteration.
That means, instead of:
/Each Country produced 0-n Concepts/
/Each Country produced 0-n Projects/
we would have (more logical, less restricted; maintains intent):
/Each CountryLanguage produced 0-n Concepts/
/Each CountryLanguage produced 0-n Projects/
Much nicer.
Second, according to IMDb, the movie "Gojira ni-sen mireniamu" is
translated into English as "Godzilla 2000" and also as "Godzilla 2000:
Millennium". In my understanding, those would be two titles with the
same LanguageCode. So, shouldn't the key of ConceptTitle include
TitleReduced_C rather than LanguageCode?
That is a discussion point, that leads to a decision, as opposed to
a mistake. The current intention is, we have just one ConceptTitle
(and ProjectTitle) in any one Language. So if we need multiple titles
per Language ... I would say, the determinant is ...
TitleType, and move that into the PK, rather than TitleReduced_C (the title itself).
ConceptTitle[ ?, ?, en, Original, Godzilla 2000 ]
ConceptTitle[ ?, ?, en, Alternate, Godzilla 2000: Millennium ]
- Others:
- KeywordPermitted is 1:1-N with both ConceptKeyword and
ProjectKeyword: I think that should be 1:0:N (a simple reason is
that a Concept may have no associated Projects).
The cardinality declared in V0.10 states, a Keyword will not be added
unless it has a child in { ConceptKeyword | ProjectKeyword }.>
...unless it has a child in ConceptKeyword **&** ProjectKeyword }. To
express "one or the other or both (but at least one)", you should make
the associations 0rCoN and add a footnote to explain that at least one
association must hold for each keyword. The way I understand your model
is that you cannot add a Keyword unless it is used as both
a ConceptKeyword and as a ProjectKeyword.
Discussion. I am trying to get you to appreciate higher meanings in cardinality when the DM is taken as a whole, not each relation in
isolation. What you are saying is perfectly reasonable in the latter perspective, but not in the former.
(Consider, no need to answer each /why/.)
To
express "one or the other or both (but at least one)", you should make
the associations 0rCoN and add a footnote to explain that at least one
association must hold for each keyword.
Separate point. Generic answer. No. The correct way is to add
a pair of Non-Exclusive Subtypes for KeywordPermitted { Concept
| Project }.
Second, according to IMDb, the movie "Gojira ni-sen mireniamu" is
translated into English as "Godzilla 2000" and also as "Godzilla 2000:
Millennium". In my understanding, those would be two titles with the
same LanguageCode. So, shouldn't the key of ConceptTitle include
TitleReduced_C rather than LanguageCode?
That is a discussion point, that leads to a decision, as opposed to
a mistake. The current intention is, we have just one ConceptTitle
(and ProjectTitle) in any one Language. So if we need multiple titles
per Language ... I would say, the determinant is ...
TitleType, and move that into the PK, rather than TitleReduced_C (the title itself).
ConceptTitle[ ?, ?, en, Original, Godzilla 2000 ]
ConceptTitle[ ?, ?, en, Alternate, Godzilla 2000: Millennium ]
Do you need LanguageCode in the key, though? I'd say that both
LanguageCode and TitleType are determined by the title.
I'd say that ...
LanguageCode ... are determined by the title.
1. From our previous discussions, LanguageCode has to go with a Title
where the Title may not be in the cataloguer's language.
2. How can LanguageCode be determined by theTitle ?
For uneventful presentation (any GUI, any platform ... Localisation),
I thought it is the reverse.
I'd say that ...
TitleType are determined by the title.
Please explain. Context is of course, our previous discussion: that
there are more than one ConceptTitles in a particular Language for
a given Concept:
some logistic issues due to the current situation have forced me to
focus on other matters and I have delayed my replies (health is good,
thanks God). But I have read them all.
Can't a country and a language be used to identify a culture? I don't
grasp what alternative you are considering.
Wherever we currently have a table that references { Language | Country},
we should instead reference CountryLanguage.
2. More rigourous testing re the cascade of Keys, and the alternation
based on *Title, for the ConceptraAMovieraAEditionraAInstance data
hierarchy. The more precise data hierarchies as defined are:
Concept = Agent ... Concept
Movie = Language ... TitleType ... ConceptTitle
Edition = Language ... TitleType ... MovieTitle
I am not sure that I can communicate this via IDEF1X ... but I will
try (it is explicitly communicated in my IDEF1X Extension).
http://www.softwaregems.com.au/Documents/Article/Database/Movie%20Title/Movie%20Title%20TA%20V0_13%20Annotated.pdf
Sorry, I am not sure I understand the purpose of that annotation.
Pardon me.
1. Codd asks us to think in terms of Sets. Here the relevant Sets to be held in mind are the Domain of each Relational
Key.
2. The Data Hierarchies of course form the components of each Relational Key. >Therefore:
- for Concept, it appears (visually, leading to meaning) that the Data Hierarchy starts at Concept ...
--- No, it actually starts at Agent. This is clear if you inspect the Concept PK
- Movie is actually dependent (not in the IDEF1X sense, but existentially dependent) on ConceptTitle
--- the hierarchy for ConceptTitle starts at (a) Language, and (b) TitleType ... ConceptTitle is a "binary relation", a
cross-over between two hierarchies
- for Movie, the Data Hierarchy actually starts at Language, and then ConceptTitle
- for Edition, the Data Hierarchy starts at Language; another at TitleType; and then MovieTitle
(Oops, I just spotted an error. Movie is Independent, but shown as >Dependent. Calls for another iteration. I will wait until some of
these questions get resolved.)
Consider:
- In the FIAF manual, where the definitions are loose and floppy, and anything can be any or all of { Work | Variant | Manifestation | Item
}, they have Identifiers (our StandardType) on all four elements of
their four-level hierarchy.
- In our DM, where definitions are tight, I had implemented
StandardType (FIAF Identifiers) on the three levels of the hierarchy.
But our Concept is purely cerebral, not a realisation/manifestation,
which is our Project/Movie. So the question is, can there be a FIAF Identifier/StandardType for a Concept ? I suspect it is for material
things only, for Movie & Edition, not for [our definition of] cerebral things. But I am not sure, our Concept may well be a material thing
to them.
- I have gone through the FIAF Manual again, and could not resolve
this point. Over to you.
- (Btw, that little exercise re-inforced our notion that our treatment
of Variant & Derivative is superior to theirs.)
Another reason the DM is not complete is, I have not removed the
Nulls. Which absolutely have to be removed before I let a DM be
considered complete. It is one of those second-to-last steps.
As discusse, more Constraints, please. Especially difficult ones.
I can appreciate that you are busy, with the conditions in Northern
Italy making life very difficult. If you have any time to respond to
this thread, this subject is the one I would like you to prioritise.
As I am walking through the DM, I am still finding little errors.
I was hoping that your walk-through, and reading off the Predicates as
you go, would have caught some of those.
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 65 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 00:50:43 |
| Calls: | 862 |
| Files: | 1,311 |
| D/L today: |
10 files (20,373K bytes) |
| Messages: | 264,186 |