The Forum for Discussion about The Third Manifesto and Related Matters

Please or Register to create posts and topics.

Where to start for a beginner?

12

Hello,

For some time now I heard about the relational model and the third manifesto. I tried to read a lot of articles on the Internet about this, but I find it rather hard to understand what is established and what is controversial. Therefore I would like to ask you what articles/books or whatever would you recommand to a newcomer to this field, and that would primarily with what is commonly accepted by the community of the relationel model for database.

To provide some info about myself, I know some basics about SQL, and also the fact that it doesn’t always follow the rules of the relational model. Moreover I consider myself more like a developer (a junior one) of application than a database designer or administrator, but I do want to learn more about it.

Also, if some of you know French language, I did read this article, but it’s more focused about the normal forms (by projections and joins) of relational databases.

Edit: also maybe I should rather with something more general about databases, and not only relational ones?

A standard text in the field, and an excellent starting point for database study in general, is C J Date's An Introduction to Database Systems.

As for what is commonly accepted and what is controversial, I'm afraid almost anything that isn't self-evident or mathematically provable is controversial to some -- as is the case when you reach a certain point in most fields.

But start with An Introduction to Database Systems. That will provide a good starting foundation.

I'm the forum administrator and lead developer of Rel. Email me at dave@armchair.mb.ca with the Subject 'TTM Forum'. Download Rel from https://reldb.org
Quote from Efrit on November 18, 2020, 8:56 pm

Hello,

For some time now I heard about the relational model and the third manifesto. I tried to read a lot of articles on the Internet about this, but I find it rather hard to understand what is established and what is controversial. Therefore I would like to ask you what articles/books or whatever would you recommand to a newcomer to this field, and that would primarily with what is commonly accepted by the community of the relationel model for database.

To provide some info about myself, I know some basics about SQL, and also the fact that it doesn’t always follow the rules of the relational model. Moreover I consider myself more like a developer (a junior one) of application than a database designer or administrator, but I do want to learn more about it.

Also, if some of you know French language, I did read this article, but it’s more focused about the normal forms (by projections and joins) of relational databases.

Edit: also maybe I should rather with something more general about databases, and not only relational ones?

The question  is: what problem are you trying to solve? Do you just want something that helps you be a better developer, or do you want insight, understanding, knowledge for its own sake?

The relational model is not particularly controversial, although articles like the one you linked can make it seem so. You can go a long way without knowing anything much about sixth normal form.

We have had discussions here recently on the relational algebra, and how it can be extended, and that can be quite controversial. Codd, turn in your grave.

Dave is fond of saying that academically, the relational model is a solved problem and the answer is: Datalog. Do you want to learn Datalog?

There is a saying: if you don't know where you want to go, any road will take you there.

Andl - A New Database Language - andl.org

Thanks for the advice Dave Voorhis, I’ll definitely take a look to the text you mentionned.

To answer your question dandl, I do try to be a better developer in general, but I am also interested in having a better insight in general in the field. What I liked about the article in French I mentioned is that his author took time to define the basic definitions of concepts used in the relational model, by referring for example to researchers who seems to be well-known, as Edgar Codd, Chris Date or Hugh Darwens. This article however said a lot of things that were very different from what I’ve learned in my engineering school. Not only about the fact that the SQL model is pretty different than the relational one, but also about what is accepted as good practices in the design of a database. For example, related to normal forms, I have often read that, as a good first approach, or by default, we should try to normalize a relational database to the 3rd normal form. But this author argued that this advice was obsolete, and that today you should aim to the 5th one (possibly by starting directly by Boyce-Codd normal form instead of the 1st if you are experimented). Another example would about the primary key and candidate keys. I only heard before about the first one, and never the latter.

So the first thing I think I should do is to read a text that introduce the field with precision. But I also don’t want to be lost in too much advanced details and above all about things that are too much controversial yet. I hope that An Introduction to Database Systems (8th Edition) is the adequate one.

I am not opposed at all to look into Datalog, why not? I read a bit the Wikipedia article on it, and the first thing that is troubling for me is that it is a subset of Prolog, which I happen to know because I had a course on it in my engineering school some years ago (and I was pretty bad at it unfortunately). As a side note, I have also discovered Mercury some times ago. If you have good introductory texts about all of this, I would gladly read them.

Of course, I also hope that learning all of this will help me to do a better work as a developer. I’ll open another topic to ask advice about a problem I encountered in my job.

Quote from Efrit on November 19, 2020, 7:31 pm

... I am not opposed at all to look into Datalog, why not? I read a bit the Wikipedia article on it, and the first thing that is troubling for me is that it is a subset of Prolog, which I happen to know because I had a course on it in my engineering school some years ago. ...

Most Prolog teaching is appallingly bad, to the point that you're lucky if the teacher only bodges it badly enough to turn it from an elegant declarative language with powerful inferential capabilities into an eye-watering abuse of features that make it barely become a poorly-performing imperative list processor (and then proudly announce that it's "just like Lisp!")

Yes, I've seen that done.

I have seen and heard trustworthy tell of Datalog implementations that are elegant, performant, and in specialist niches claim to significantly reduce development time, effort, and code volume.

I'm the forum administrator and lead developer of Rel. Email me at dave@armchair.mb.ca with the Subject 'TTM Forum'. Download Rel from https://reldb.org

Honestly, in my particular case, I think it was more of my making, since I wasn’t really regular at this time. Also, a teacher (not the one teaching us logic programming) warned us that, in her experience, students completely knew to programming were able to learn and use Prolog easier that the one who already knew programming as I was. Moreover, from the memories I have, I don’t think he was bad at teaching it. I remember he was talking about backtracking and minmax algorithm and alpha-beta pruning. I think his research field was about natural language processing. But then I am not really knoweledgable about logic programming so…

Edit: I just edited my precedent post, as I realized that I forgot a word about the paragraph on Prolog that could have lead to misunderstanding about the meaning of my phrase.

Quote from Efrit on November 19, 2020, 7:31 pm

Thanks for the advice Dave Voorhis, I’ll definitely take a look to the text you mentionned.

To answer your question dandl, I do try to be a better developer in general, but I am also interested in having a better insight in general in the field. What I liked about the article in French I mentioned is that his author took time to define the basic definitions of concepts used in the relational model, by referring for example to researchers who seems to be well-known, as Edgar Codd, Chris Date or Hugh Darwens. This article however said a lot of things that were very different from what I’ve learned in my engineering school. Not only about the fact that the SQL model is pretty different than the relational one, but also about what is accepted as good practices in the design of a database. For example, related to normal forms, I have often read that, as a good first approach, or by default, we should try to normalize a relational database to the 3rd normal form. But this author argued that this advice was obsolete, and that today you should aim to the 5th one (possibly by starting directly by Boyce-Codd normal form instead of the 1st if you are experimented). Another example would about the primary key and candidate keys. I only heard before about the first one, and never the latter.

So the first thing I think I should do is to read a text that introduce the field with precision. But I also don’t want to be lost in too much advanced details and above all about things that are too much controversial yet. I hope that An Introduction to Database Systems (8th Edition) is the adequate one.

I am not opposed at all to look into Datalog, why not? I read a bit the Wikipedia article on it, and the first thing that is troubling for me is that it is a subset of Prolog, which I happen to know because I had a course on it in my engineering school some years ago (and I was pretty bad at it unfortunately). As a side note, I have also discovered Mercury some times ago. If you have good introductory texts about all of this, I would gladly read them.

Of course, I also hope that learning all of this will help me to do a better work as a developer. I’ll open another topic to ask advice about a problem I encountered in my job.

I was going to suggest to get a good understanding of relational database theory before delving into normal forms, but for the record I'd like you to know that the 6NF defined by me and Chris Date is also important, especially in a database that is designed, either by choice or necessity, to avoid constructs akin to SQL's NULL.  But remember that normal forms are only advice.  It's okay to violate them so long as the designer is happy that with particular cases either the general disadvantages of doing that are inapplicable or suitable countermeasures can be put in place.

As for relational theory, my online free book An Introduction to Relational Database Theory starts at the very beginning and was derived from a course I used to teach to undergraduates.  There's also a companion book, SQL: A Comparative Survey, in which I tried to draw attention to the controversies surrounding that language without expressing my own strong opinions that have been expressed in some of my books with Chris Date.

Hugh

Coauthor of The Third Manifesto and related books.
Quote from Hugh on November 20, 2020, 3:01 pm
Quote from Efrit on November 19, 2020, 7:31 pm

Thanks for the advice Dave Voorhis, I’ll definitely take a look to the text you mentionned.

To answer your question dandl, I do try to be a better developer in general, but I am also interested in having a better insight in general in the field. What I liked about the article in French I mentioned is that his author took time to define the basic definitions of concepts used in the relational model, by referring for example to researchers who seems to be well-known, as Edgar Codd, Chris Date or Hugh Darwens. This article however said a lot of things that were very different from what I’ve learned in my engineering school. Not only about the fact that the SQL model is pretty different than the relational one, but also about what is accepted as good practices in the design of a database. For example, related to normal forms, I have often read that, as a good first approach, or by default, we should try to normalize a relational database to the 3rd normal form. But this author argued that this advice was obsolete, and that today you should aim to the 5th one (possibly by starting directly by Boyce-Codd normal form instead of the 1st if you are experimented). Another example would about the primary key and candidate keys. I only heard before about the first one, and never the latter.

So the first thing I think I should do is to read a text that introduce the field with precision. But I also don’t want to be lost in too much advanced details and above all about things that are too much controversial yet. I hope that An Introduction to Database Systems (8th Edition) is the adequate one.

I am not opposed at all to look into Datalog, why not? I read a bit the Wikipedia article on it, and the first thing that is troubling for me is that it is a subset of Prolog, which I happen to know because I had a course on it in my engineering school some years ago (and I was pretty bad at it unfortunately). As a side note, I have also discovered Mercury some times ago. If you have good introductory texts about all of this, I would gladly read them.

Of course, I also hope that learning all of this will help me to do a better work as a developer. I’ll open another topic to ask advice about a problem I encountered in my job.

I was going to suggest to get a good understanding of relational database theory before delving into normal forms, but for the record I'd like you to know that the 6NF defined by me and Chris Date is also important, especially in a database that is designed, either by choice or necessity, to avoid constructs akin to SQL's NULL.  But remember that normal forms are only advice.  It's okay to violate them so long as the designer is happy that with particular cases either the general disadvantages of doing that are inapplicable or suitable countermeasures can be put in place.

As for relational theory, my online free book An Introduction to Relational Database Theory starts at the very beginning and was derived from a course I used to teach to undergraduates.  There's also a companion book, SQL: A Comparative Survey, in which I tried to draw attention to the controversies surrounding that language without expressing my own strong opinions that have been expressed in some of my books with Chris Date.

Hugh

Yes.  If you've never been thoroughly exposed to database theory stuff, then first go with Hugh's books.  They're much more written with a concern of "how will I ***not*** lose this student", that is to say, they correctly discuss all the basic stuff without going into full depth on every last nitty gritty detail that's somewhat related.  And they do so without losing all the precision that your average SQL engineering cookbook ***will*** have lost.  It's written from the perspective of "what is teachable in so many hours of lecture".  So you'll go through it much faster than Date's big beast.  Only then tackle Date's big beast and be prepared for way more lengthy (and more in-depth) discussions on every single topic.  (And for Date's writing style ...)  One more thing about the 'Introduction to ...' : once you're past halfway the book (somewhere after the chapter on transactions and locking I believe) you can just as well stop reading because the remainder of the book is just a discussion of (then-)current trends in the field and "a book like this cannot afford to not discuss these topics".  Oh no, second more thing : the chapter on view updating is outdated.  Date no longer supports the entire body of what he wrote in that chapter and his ideas have evolved (but he still doesn't have a universally accepted proposal) so ***if you go through than one*** pls do so in full awareness of its relative obsolescence.

Thanks for the detailed replies.

So I will start with An Introduction to Relational Database Theory and SQL: A Comparative Survey. Then I’ll go into An Introduction to Database Systems. Looking at their number of pages, I think I will have enough to do for some time. ^^

Quote from Efrit on November 20, 2020, 7:30 pm

Thanks for the detailed replies.

So I will start with An Introduction to Relational Database Theory and SQL: A Comparative Survey. Then I’ll go into An Introduction to Database Systems. Looking at their number of pages, I think I will have enough to do for some time. ^^

By the way, when the publisher first approached me, looking for people to contribute books on databases, I offered to do that theory book right away because I couldn't bear the thought of anybody else doing it.  There was only one other book covering relational database theory that I had a good opinion of, namely Relational Database Theory by Atzeni and De Antonellis, but that one is much more formal than mine.

Hugh

Coauthor of The Third Manifesto and related books.
12