In 1985, Dr. E.F. Codd, in an article for Computerworld came up with 12 rules for a database to be considered as relational:
Rule-1: Information rule: Every information in a relational database is represented explicitly at logical level. This information can be represented in only one way, by values in tables.
Rule-2: Guaranteed access rule: Each and every atomic value in a relational database is guaranteed to be logically accessible by specifying table name, column name and primary key.
Rule-3: Systematic treatment of NULL values: Null values are used to represent missing information and inapplicable information in a systematic way, independent of the data type. They are are distinct from an empty character string, zero or any number, and blank characters are supported in a relational Database Management System.
Rule-4: Dynamic online catalog based on the relational model: Description of database is represented at logical level in the same way as ordinary data. Authorized users can apply same query language to access structure of the database as they apply to the data in the database.
Rule-5: Comprehensive data sublanguage rule: A relational system must support at least one relational language having a well defined syntax which can be used in an interactive fashion and with programs. It should also support: data definition, data manipulation, view definition , authorization transaction operations like begin, commit, and rollback, and security and integrity constraints.
Rule-6: View updating rule: All views which are theoretically updatable, should also be updatable by the system.
Rule-7: High-level insert, update, and delete: Insert, update, and delete of data must be supported for any set of data ( in single row in a table and in multiple rows and tables).
Rule-8: Physical data independence: Changes on physical data (how data is stored or accessed) should not change application programs and terminal activities.
Rule-9: Logical data independence: Changes on logical data (tables, rows or columns) should not change application programs and terminal activities.
Rule-10: Integrity independence: Integrity constraints should be stored in the catalog separate from application programs.
Rule-11: Distribution independence: Distribution of sections of database should not be visible to the users.
Rule-12: Non subversion rule: If a relational system has a low level (one record at a time) interface, then that interface cannot bypass relational security, integrity rules and constraints expressed in the high level interface (multiple records at a time).