{"id":309,"date":"2007-09-26T00:00:00","date_gmt":"2007-09-26T00:00:00","guid":{"rendered":"https:\/\/test.simple-talk.com\/uncategorized\/captain-codd-and-the-simple-proposition\/"},"modified":"2016-07-28T10:40:51","modified_gmt":"2016-07-28T10:40:51","slug":"captain-codd-and-the-simple-proposition","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/opinion\/opinion-pieces\/captain-codd-and-the-simple-proposition\/","title":{"rendered":"Captain Codd and the Simple Proposition"},"content":{"rendered":"<div id=\"story\">\n<h2>A pantomime for Database Professionals<\/h2>\n<h3>Scene 1 <\/h3>\n<p class=\"stagedirections\">In the church vestry. Polly Morphism looks despairingly at Rev. D. Composition. The elderly priest is bent over his desk in a canonical form (he is a cardinal type). The candle flickers; Polly is tearful. <\/p>\n<dl>\n<dt>D Composition  <\/dt>\n<dd><em>(shaking his head sadly)<\/em> &#8220;Hah, that base Relvar! The wicked Relvar Predicate is entirely without any integrity constraints. He is an insensitive curser and a primitive operator. Do anything to avoid him,&#8221; <\/dd>\n<dt>Polly:  <\/dt>\n<dd>&#8220;It is no good; he has my pet tuples in his nidalic view. I must retrieve them with my tuple extractor or they will be subject to lossy decomposition. I will have to bargain with him. <\/dd>\n<dt>D Composition:  <\/dt>\n<dd>&#8220;I have to admit that he is a star schemer. You&#8217;ll have to negotiate, maybe offer buffer cash. Blackmail is rank Relvar&#8217;s characteristic function&#8221;. <\/dd>\n<\/dl>\n<h3>Scene 2 <\/h3>\n<p class=\"stagedirections\">A smoky dive, called the &#8216;HotSpot &#8216;. Rough types abound. Relvar and Polly sit hunched over a table. Her faithful SPID stands behind her, arms folded impassively, scimitar tucked in his belt. Relvar&#8217;s SPID stands, sneering wickedly. <\/p>\n<dl>\n<dt>Polly  <\/dt>\n<dd>&#8220;I&#8217;ve come to negotiate, to make a simple proposition&#8221; <\/dd>\n<dt>Relvar  <\/dt>\n<dd>&#8220;Your n-Place or mine? Your persistence is monadic. I&#8217;m glad you have seen reason, because your tuples are in my power. Soon, the Tuple Unwrapping will begin. Their internal predicates will be mine <em>(Nasty laugh)<\/em>. I will be idempotent! <\/dd>\n<dt>Polly  <\/dt>\n<dd><em>(flushing)<\/em> &#8220;You swine! Haven&#8217;t you heard of De Morgan&#8217;s Laws?&#8221; <\/dd>\n<dt>Relvar  <\/dt>\n<dd><em>(with ACID sarcasm)<\/em> &#8220;Thanks for the Complement. You scare me! Hah! That flat relation? Pshaw!&#8221; <em>(audience boos noisily)<\/em> <\/dd>\n<dt>Polly  <\/dt>\n<dd><em>(thinks: Maybe this is a bad transaction scenario )<\/em> &#8220;Surely we can be sensible? I&#8217;m here to see if we can do a deal to retrieve my tuples. I have an atomic proposition that could lead to a Transaction. My SPID can start the process with a triggered procedure <\/dd>\n<\/dl>\n<p class=\"stagedirections\">(Suddenly, an Argument starts at a nearby base table. A fight breaks out. A lunging body falls perilously near to Polly and knocks her SPID flying. Inverted Tables everywhere. The scimitar skids across the floor. Quick as a flash, Relvar&#8217;s SPID leaps onto Polly&#8217;s SPID and pins him to the ground) <\/p>\n<dl>\n<dt>Relvar  <\/dt>\n<dd><em>(gloatingly)<\/em> &#8220;So fate has chosen your SPID to be a deadlock victim. Soon he will be a bound variable&#8221; <\/dd>\n<\/dl>\n<p class=\"stagedirections\">Captain Codd bursts in on the scene. A clash of Cymbals <\/p>\n<dl>\n<dt>Codd:  <\/dt>\n<dd>Not so fast, Relvar. You have committed a fatal error and made a hash of it. Polly is under my protection!! <\/dd>\n<\/dl>\n<p class=\"stagedirections\">(An immediate conflict ensues. Wham! Bam! Captain Codd delivers a lightning Sheffer stroke to Relvar&#8217;s jaw, Soon, Captain Codd has Relvar in a granular lock followed by a restriction, an immediate constraint, finishing with a deadly embrace) <\/p>\n<dl>\n<dt>Relvar  <\/dt>\n<dd>Aiee! You have me in a Multi-Relvar constraint. I repent!! Let me go! Release my constraint! From now on I shall lead a Normal life. <\/dd>\n<dt>Captain Codd:  <\/dt>\n<dd>If so, it will be your first Normal Form, Relvar. I suspect you will need a unique constraint. Any base manipulation, and you will be a bound variable in a loop structure. <\/dd>\n<dt>Polly  <\/dt>\n<dd>Thanks, Captain Codd! I rely on you but it is a multi-valued dependency, though I am irreducably dependent <\/dd>\n<\/dl>\n<h3>Scene 3<\/h3>\n<p class=\"stagedirections\">An Arcadian meadow. The sun is shining. Polly Morphism and Captain Codd admire Polly&#8217;s flock of tuples <\/p>\n<dl>\n<dt>Polly  <\/dt>\n<dd><em>(surrounded by her bleating tuples, nuzzling up to her adoringly)<\/em> Oh Captain Codd, now my SPID is released and my tuples safe, I can enjoy a tuple union. How can I repay you? <\/dd>\n<dt>Captain Codd  <\/dt>\n<dd><em>(looking serious)<\/em> It isn&#8217;t over until we can engineer some sort of total Relvar constraint, with an identity restriction. He could yet strike again. <\/dd>\n<\/dl>\n<p class=\"stagedirections\">Ominous music&#8230;<\/p>\n<p class=\"bitattheend\">Will Relvar Predicate strike again? <br \/>Look out for the thrilling Sequel to&#8230; <strong>Captain Codd and the Simple Proposition<\/strong> <\/p>\n<p class=\"stagedirections\">Heroic music&#8230;<\/p>\n<p class=\"stagedirections\">Ends.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A Pantomime for Database Professionals.&hellip;<\/p>\n","protected":false},"author":154613,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[30],"tags":[4168,4144,4148],"coauthors":[],"class_list":["post-309","post","type-post","status-publish","format-standard","hentry","category-opinion-pieces","tag-database","tag-opinion","tag-opinion-pieces"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/154613"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=309"}],"version-history":[{"count":1,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":21006,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/309\/revisions\/21006"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=309"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}