Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does Codd's 'non-subversion rule' mean?

Tags:

sql

oracle

rdbms

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.

like image 589
Chintan Shah Avatar asked Sep 03 '09 17:09

Chintan Shah


People also ask

What do you mean by the non subversion rule?

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.

What are Codd's rules briefly explain?

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).

What do you mean by the non subversion rule of Codd rule Mcq?

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.

Which are the following is Codd's rule?

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.


2 Answers

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.

like image 127
Michael Petrotta Avatar answered Oct 13 '22 13:10

Michael Petrotta


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.

like image 27
Walter Mitty Avatar answered Oct 13 '22 15:10

Walter Mitty