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.
The non-submersion rule defines RDBMS as a SQL language to store and manipulate the data in the database. If a system has a low-level or separate language other than SQL to access the database system, it should not subvert or bypass integrity to transform data.
Codd's twelve rules are a set of thirteen rules (numbered zero to twelve) proposed by Edgar F. Codd, a pioneer of the relational model for databases, designed to define what is required from a database management system in order for it to be considered relational, i.e., a relational database management system (RDBMS).
Rule 12: The Non-Subversion Rule RDBMS is defined by this rule as a SQL language for storing and manipulating data in a DB. If a system uses a low-level or different language to access the DB system other than SQL, it should not bypass or subvert data integrity.
The logical data in a database must be independent of its user's view (application). Any change in logical data must not affect the applications using it. For example, if two tables are merged or one is split into two different tables, there should be no impact or change on the user application.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With