A Study Group for Relational Theory
This page describe a study group that I am organizing to review 8 articles on Relational Theory written by Fabian Pascal.
I propose is that we understand what a proper schema should look like, so that, when we look in our day job schemas, we understand what is wrong, and we have a clue on what kind of problems we will be facing on the application side. For this goal: I propose a study group on 8 articles written by Fabian Pascal.
From the author:
two series of papers for the data professional and user who thinks critically and independently, rather than operates in the IT industry's fad driven "cookbook mode".
Motivation
The Logical Structure of Reality is Evident to the Mind
Our souls are brought into existence, and we soon realize the world is not a single thing, but instead is made of things (plural). Some of these things are similar among them, and we quickly intuit that there must be an abstract and general principle behind these commonality we observe. We realize that there are things which exist in themselves, and that there are things which can only exist as part of other things that exist in themselves. In our day to day, we constantly refeer to things that exist not in one, not it other thing, but instead somehow in between things. Furthermore when looking closer to one object, we notice that it is made of parts, and that some of these parts can be added or removed to the object and the object somehow still remains the same, but there are modifications that really transform one thing into another. To one degree or another, we all know intuitively these matters very early in life.
The Tar Pit of the Industry
Eventually though, one grows old enough and becomes a programmer, and one gets asked to design a storage system to represent the real world. And the world is such that one is frequently in a hurry. Plus, one is just getting started on this business, and one trusts the industry. After all, if Facebook and Google do it, it means it is a good practice, right? And then one represents reality as json objects.
Let's spell that out: JavaScript Object Notation. One represents the world as javascript object notation.
The result is clear: one gets used to debugging and late nights. The spirit suffers.
A Better Way
Why does the spirit suffer? Is it simply the hardship of the job? Or could it be that the spirit suffers from being forced to think of the world in unnatural ways? Could the developer describe the world such that the intuition he uses to navigate reality helps him in evolving the system he is hired to maintain? What is that manner?
This study group was created after the following answer: a properly designed relational database schema is the technique that our industry has best developed to represent the logical structure of reality. Nothing that I have read in our industry resembles classical philosophy more than what I have read on relational theory.
Keeping It Real
I understand: you probably don't maintain an relational schema on your job. Me neither. What I propose is that we understand what a proper schema should look like, so that, when we look in our day job schemas, we understand what is wrong, and have a clue on what kind of problems we will be facing on the application side. I propose we figure out what exactly is good on a proper RDBMS and relational schema, and then find ways to port it to our jobs.
For the goals outlined above I propose a study group on 8 articles written by Fabian Pascal.
Content of the Papers
From the author's page:
The Key to Relational Keys: A New Understanding – Primary Keys. PRACTICAL DATABASE FOUNDATIONS #4 (v.3 February 2018)
Table of Contents Abstract Introduction 1 Relation Interpretation 2 Entity Properties, Names and Identification 3 Relational Keys 4 Primary Keys 4.1 Formal Primary Key Mandate 4.2 Primary Key Selection 4.2.1 Candidate and Alternate Keys 4.2.2 Composite Keys 4.2.3 Natural and Surrogate Keys 4.2.4 Some Examples 4.2.5 Surrogate Key Illusions Conclusion References Appendix A: Duplicates and their consequences
- Duplicates and SQL
1.1 Logical Validity and Semantic Correctness 1.2 Nestability 1.3 Result Interpretation 1.4 Performance Optimization 1.5 Duplicate Removal Appendix B: Keys in SQL
Logical Symmetric Access, Data Sublanguage, Kinds of Relations, Redundancy and Consistency (description) UNDERSTANDING THE REAL RDM #2 (v.1 August 9, 2019))
Table of Contents Preface Introduction
- Logical Symmetric Access
- Universal Data Sub-language
2.1. FOPL vs. SOPL 2.2. Relational Completeness 2.3. Computational Completeness and Hosting
- Kinds of Relations
3.1. Expressible and Named Relations 3.2. Derived Relations 3.3. Relations with Stored Data
- Derived Relations and Redundancy
4.1. Database Consistency
- Database Catalog
Conclusion References
The Interpretation and Representation of Database Relations UNDERSTANDING THE REAL RDM #1 (v.1 April 2017)
Table of Contents Series Preface Introduction
- The Interpretation of Database Relations
1.1. Attributes as Constrained Domains 1.2. Time-Varying Relations
- Representation of Database Relations
2.1. Physical Independence 2.1.1. Uniquely Named Attributes 2.1.2. Primary Keys 2.1.3. Relations and R-tables
- Database Normalization
3.1. Simple Domains and Normal Form 3.2. Non-simple Domains and Normalization 3.2.1. Foreign Keys Conclusion References
Business Modeling for Database Design: Formalizing the Informal PRACTICAL DATABASE FOUNDATIONS #1 (v.4 May 2015)
Table of Contents Introduction
- Business Modeling
1.1. Basic Modeling Concepts 1.2. Business Rules 1.2.1. Property Rules 1.2.2. Class Rules 1.2.3. Associative Entities 1.3. Business Models
- Database Design
2.1. Formalizing the Informal 2.2. Predicates and Propositions 2.3. The Relational Data Model 2.3.1. Relational Structure 2.3.2 Relational Integrity 2.3.3. Relational Manipulation 2.4. Logical Models
- Understanding Database Management
3.1. Note on missing values 3.2. A Foundation Framework Appendix A: Constraint Formulation and Verification Appendix B: Integrity Constraints in Dataphor’s D4 Appendix C: Some Misconceptions Debunked References
The Costly Illusion: Normalization, Integrity and Performance PRACTICAL DATABASE FOUNDATIONS #2 (v.4 May 2015)
Table of Contents Introduction
- R-tables, Keys and Dependencies
- Normalization and Normal Forms
- Further Normalization As Design Repair
3.1. Join Dependencies 3.2. “The Whole Key” and 2NF 3.3. “Nothing But the Key” and 3NF 3.4. “The Whole Key” and BCNF 3.5. Multivalued Dependencies and 4NF 3.6. Interval Data and 6NF
- “Denormalization For Performance”
4.1. The Logical-Physical Confusion 4.2. Redundancy Control 4.3. JDC’s and SQL 4.4. The Real Problem and Solution
- Conclusion and Recommendations
References
The Final NULL in the Coffin: A Relational Solution to Missing Data PRACTICAL DATABASE FOUNDATIONS #3 (v.4 May 2015)
Table of Contents Introduction
- "Inapplicable Data": Nothing's Missing
- Missing Data: Into the Unknown
- SQL’s NULL: What-Valued Logic?
- Known Unknowns: Metadata
- A 2VL Relational Solution
5.1. The Practicality of Theory 5.2. 2VL vs. NULL’s in the Real World 5.3. Relation Proliferation 5.4. TRIM™ Conclusion Appendix A: What’s Wrong with this Picture?
- "Not Complicated"
- "Part of the Real World"
- "Integral Part of Relational Databases"
- "Throw a Damn Exception"
- "Useless"
Appendix B: Comments on the Proposed Solution References
Truly Relational: What It Really Means PRACTICAL DATABASE FOUNDATIONS #5 (v.3 May 2015)
Table of Contents Introduction
- Relations on Domains
- Relation Representation
- Time-Varying Relations
- Relation Interpretation
- Data Sub-language
- Atomicity, Nested Relations, and Normalization
- Foreign Keys and (First) Normal Form
- Operations on Relations
- Kinds of Relations
- Derivability, Redundancy, Consistency
Conclusion Appendix A: Codd’s 1969 Relational Operators Appendix B: Debunking Misconceptions
Domains: The Database Glue PRACTICAL DATABASE FOUNDATIONS #6 (v.2 January 2015)
Table of Contents Introduction
- Domains and Types
1.1. Meaning and Representation
- Kinds of Domains
2.1. "Simple" Domains 2.2. "Complex" Domains 2.3. User-Defined Domains and System-Defined Types
- Domains and SQL
- Some Practical Implications
4.1. "Universal" DBMS 4.2. Database Design 4.3. ODBMS 4.4. NoSQL 4.5 Tackling Complexity Conclusion
Investment
I will by the 8 papers and share copies with participants. Total cost of the material is 170 USD (~884 BRL), which will be split by the number of participants.
Late sign ups, if any, are invited to pay the same amount that early members did. They extra money will be donated to a local monastery.
Commitment
We meet every 2 weeks, on Tuesday from 7pm to 9pm. If the time does not work for you, please let me know.
At each meeting:
- Someone is responsible for presenting the paper
- Someone else is responsible for taking notes about the presentation and group discussion
- All participants are expected to have read the paper
- Notes are emailed to participants
- Meetings and discussion happen in English
Deadline for joining the group:
First meeting:
How to participate
Email me (juarez <dot> asf <at> gmail <dot> com) with the subject "I want to represent the nature of reality on my database" and send me your gpg public key. For the sake of hardening our asses, communication about this study group will happen with encryption.
You can find my public key below.
-----BEGIN PGP PUBLIC KEY BLOCK----- mQINBGN6glwBEAC/NtvtePhYtbjyLpgY9SrdrYtoRdJHJ+FYa9G3R/T6zhHCD6Qc Ap8v/D/raiugpjPJVHtwmiyF0Z3PTLfTw+WMD7MTcQp1PsmZ+PeciYnqYz0BRV/o dkbUsSn6p/VQlFxaxXB64kS4v0EzXHbIpyyEd85mIp8DIVDfRhPhY5euR28zlEqu /SXyV2DB2Ix0HdPN/WcdKVQLkr1SVNLRT7eZ/oRu8wOCVXTR+SV3ItJupdUslFJz TqJlyzRn6+rR5+YUnqwV8QwACDH7V9+TqJ5ntEBfqTewcE2rGbxdAP4DwzbNBToh F4gUpiOjX9k53aCy+JeDqqyjb512Xbjh4vktK6exhasl1uQpL3sM6zoyafxl+Pxe lzVfvzLuEy6f5il6mW3b51jK60X5odLbF3PiAaipJxGltH4DP2s9w48m1Xtge8+W 9cb9z022tiPueabvYt9UFB4w9cVFYXbgAJsM26usbnHbq0ZaGzL51nPl9k1D99sf qKafeZ3OGNtRsCIble7UZFT59NXrQhEdGuGbI53+FwNpXgS0Y4ghoKYxFQloz72L 5wCFxQteoje6ItPu7rsmUBodBFEhH7jMmKwH3bpG19QOiZQUdM/cm+HLAK9/NYOj kBloqYBKDJI71syCzw1atVbmNx2xmLL4wEDizyaHealcXTH7/F3Y96jv1wARAQAB tIBKdWFyZXogQWlyZXMgU2FtcGFpbyBGaWxobyAoQ2hhdmUgcGFyYSBjb21wYXJ0 aWxoYXIgY29tIGFtaWdvcyBxdWUgcXVlcmVtIG1lIGVudmlhciBjb250ZcO6ZG8g ZW5jcmlwdGFkbykgPGp1YXJlei5hc2ZAZ21haWwuY29tPokCTgQTAQoAOBYhBEwP GklngW5ySryE+wUSpR88gMfLBQJjeoJcAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4B AheAAAoJEAUSpR88gMfLScwP/3b8G9BvApn3uAVBmD/LOLpyumvtEYjDjvWf4zHl wckVbRBM4p4QyBQpNzmz+R8RfJPCGxjjOIn7KaupW+wd+RvdoYf4I9+srJR7jL0b 6Do0nEWQv3wSyl72HPS4u5JjjHZ0ukO6JI5WsWuGTw9PS3nqwJlEKG4PEAE4DMN1 qAgTIq+YIdzv4+GissJq3ricJIfJyCOlDenzFQWxcerK6vrbRRJCFKm7XK76JArg IvWIWSjboDo7tw9DyJMkvRpw9hVwXqaenb7qNahT7bYkMhX0JUdjKcx/rIBtk6ls fcUSMLip3yCpoq5SIPzR3RnJRwe+uN7fX5Uc5MEuZ6/JHGoZaHjWfwpCUutEeefG FBrYrrYJwprBHlZUNsyaw0cNKf//42IawZPIgKRgoBp25TuuFMrShjlReaZdx/nH gYkLArzWHQ/UOuOZShg/zCfYTjXq7hOnzL4HQX7B0zD/4SuhmtJC82ZcvSq8ulEH 7SfXHY4uluvFnkD21uFHZfd1wp0UhzFqwni3LsZ+x4+2v77Zk3uy+hIY0XKvNJ94 cCudDdp+XTw/zMxR4ObhiU7ZgIiL6xuWvs2uL4wJbm0VCwFYSZPauVBFC1dcVt3p Xto4ncX9Ih/rPl+r7rF6Boe4NlR6ng9xmSUVEQb7TDvOt3z9djHfM7MG5cnXhuc+ Rm8uuQINBGN6glwBEADUotb3caVWar9bW/DdRQP+CRh4/eLpUOTI6XJRVwHtGr0i qysf+fJmj5O4RCIGKZN9TojllS7Qi3F/9VMeB+qoSyufdeqK82DUvBSIku3u66dw Vfi0AE8fBtTbM9fIRO+fhKaPfd6Xp+IUf3qhO5smYSmscTPX67HiQyWMRHCfHPv8 iPfAQfI1RzZ0OeWBf1J2jzxxIAFrjOS7e7+0p2WLWD47+wb9Qk/u3bbql5ODl13C OBTZIx9sfn8VwP9jtF/bPw6vL+UbMNXQxGUqQ74hiT6Q5knd5+X30qYPkBx5FuFT XQx2UkqANrPlQiAkSF27LmQ/G0MSJNaB8sAwHGeNqy8vTh3O/Yo/AlE8+ZEHnzsA 9e1yjYyhNLt8M1N7ayIE0ag7NVOeE7zEK370DZSfjr2wPFaYx+U8dqEG/KK40OoV 1/P92FIuq2m+bFonzLe/SmCLhYvZQKKYAGb1Gy+V+s7qDTjZ+mzKCener/AV0Yws R2Q4ECcmg2HR05I/JssjlBLBDumDxrKlGpJXpQp93zn0lf+124+O25LYTz7fW0jq OKMUnR4L+k1XHO/kA78EEqhGDUHlQ2WCMMw4uapFyDHJVJzVNb37f2SgwiC+p0YV bjSOyoN5H4D/4NncRNElqXEzUTcSQphNhIzmJH1yVguwMTvYe04HemUndp87vwAR AQABiQI2BBgBCgAgFiEETA8aSWeBbnJKvIT7BRKlHzyAx8sFAmN6glwCGwwACgkQ BRKlHzyAx8vKng//Yfy1uc92XR1/+8Z1bRLfEBVVaXGc3y+6gx5MF+WRKUGStsIy naoKxr15Lckc4S348rPJdkwV4mKxOIvlyF2FzyB6wCYPP7vmz9kLigwn7hLAjPUv D50x6hEm+YgwkZxxh7gDvb563Nrx9zrwO6tJ1xNxCqJ3IhXApuMm5lSb0C0Wj3Ly llFfAqVpqjwYB0NAfQzaKuI453gofNvJBUeaIcgkOreWYaafFrU58OHainN+ku+R YUC3wejvRH8wykwDaMzoTOd916f37zjgz6+Mj9V1Bptz337YzJiI4t7f0Jkeir6k UtKj3Yd7FxPqjpJFPWaJTPViBjNcGqvksmD8NiyVk8T5nVywwRtAQRPixk3NHQoK 2neMi5VLlk6rIxC2JRYimbLoASgEY8aYnyBugSOjl8XLIPeSV0sA1cX6Uy93/N2U Qo8Cp6DMflHz+LIcTPd4af+ZLMLcaYJsW3Xhw1pF+LpMVzt5R18mGjdLj8RT3e8+ 37U8Bs9pc3JhtR8EiP05RQyA6WxV+X4TsS17j+x3UjoozPOHW6rrDjKy9BGk55hz K9gAldGN++BPg94R3YC69IDmrvpfWduHlxxMI/G6eTZHhvoyJH+IX/LkEANSKNmO in/DPciQjnBj04EiGWM8M4ZdnOAHEY8wrY+ml45mcZJYNG3R2s6RY2GPVu0= =G5W+ -----END PGP PUBLIC KEY BLOCK-----