Recently I was reading about Codd's 12 Rules, and I understood all except number 12, the 'non-subversion' rule. If anyone can explain me the rule (using an example, preferably), that would be very helpful.
Thanks.
Recently I was reading about Codd's 12 Rules, and I understood all except number 12, the 'non-subversion' rule. If anyone can explain me the rule (using an example, preferably), that would be very helpful.
Thanks.
Rule 12: The nonsubversion rule:
If the system provides a low-level (record-at-a-time) interface, then that interface cannot be used to subvert the system, for example, bypassing a relational security or integrity constraint.
Let's say you define a non-null constraint on a column. Can you bypass the RDBMS (by, say, using a low-level Oracle-provided utility API) to insert a null in that column? If so, you've violated that rule.
What Michael said, and also it applies to bulk loaders.
Let's say that SQL*Loader allowed you to bulk load rows into a table, without checking to see whether the rows duplicate rows already in the table, in violation of a unique constraint. This would amount to subversion of the rules expressed in the schema.
Other DBMS products have bulk loaders, and some of them permit subversion, in order to speed up bulk loading.
Rule 12 prohibits this.