Professional Documents
Culture Documents
CREATE
1.
CREATE TABLE CUSTOMER
(ID NUMBER(5,0) CONSTRAINT ID_KEY PRIMARY KEY,
COMPANYNAME VARCHAR2(50),
LASTNAME VARCHAR2(50) NOT NULL,
FIRSTNAME VARCHAR2(100) NOT NULL,
ADDRESS VARCHAR2(100),
CITY VARCHAR2(50),
STATE CHAR(2),
ZIPCODE VARCHAR2(10),
PHONE VARCHAR2(20),
FAX VARCHAR2(20),
UNIQUE ( LASTNAME,FIRSTNAME),
CHECK ( STATE IN ( 'MS','UP','GU','HP','AS','MP') ) );
2.
CREATE TABLE STOCK
( ID NUMBER(5,0) PRIMARY KEY,
UNIT PRICE NUMBER(10,2) NOT NULL,
ONHAND NUMBER(5,0),
REORDER NUMBER(5,0),
DES VARCHAR2(200) );
3.
CREATE TABLE ORDERS
( ID NUMBER(5,0) PRIMARY KEY ,
CUSTID NUMBER(5,0) NOT NULL,
SHIPDATE DATE,
PADIDATE DATE
STATUS CHAR(1),
CHECK ( STATUS IN('F','B')),
FOREIGN KEY ( CUSTID) REFERENCES CUSTOMER );
4.
CREATE TABLE ITEM
( ID NUMBER(5,0),
ORDERID NUMBER(5,0),
STOCKID NUMBER(5.0) NOT NULL,
QUANTITY NUMBER(5,0) NOT NULL,
TOTAL NUMBER(10,2),
PRIMARY KEY (ID,ORDERID),
FOREIGN KEY (ODERID) REFERENCES ORDERS ON DELETE CASCEDE,
FOREIGN KEY (STOCKID) REFERENCES STOCK );
5.
CREATE TABLE XYZ AS ( SELECT ITEM.ID,ITEM.ODERID,ITEM.STOCKID, FROM ITEM);
6.
CREATE VIEW ITEM_VIEW AS SELECT ITEM.ID,ITEM.ORDERID FROM ITEM;
ALTER
1.
ALTER TABLE CUSTOMER MODIFY ( COMPANYNAME VARCHAR2(30) );
2.
ALTER TABLE CUSTOMER MODIFY ( STATE DEFAULT 'MS')
3.
ALTER TABLE CUSTOMER ADD ( BAL NUMBER(9,2));
4.
ALTER TABLE CUSTOMER MODIFY STATE CONSTRAINT STS_CON NOT NULL;
5.
ALTER TABLE CUSTOMER DROP CONSTRAINT STS_CON;
6.
ALTER TABLE ORDERS DISABLE PRIMARY KEY;
-2
SELECT STATEMENTS
SELECT JOB FROM EMP
SELECT DISTINCT JOB FROM EMP
1) EQUALITY
SELECT * FROM EMP WHERE SAL =1700;
2) INEQUALITY TEST [ != , <> ]
SELECT * FROM EMP WHERE SAL !=1700;
3) GREATER THAN & LESS THAN
SELECT * FROM EMP WHERE SAL > 1700;
SELECT * FROM EMP WHERE SAL < 1700;
4) GREATER THAN EQUAL TO OR LESS THAN EQUAL TO
SELECT * FROM EMP WHERE SAL >= 1700;
SELECT * FROM EMP WHERE SAL <= 1700;
5) IN, ANY
SELECT * FROM EMP WHERE JOB IN('CLERK','ANALYST');
SELECT * FROM EMP WHERE SAL IN ( SELECT SAL FROM EMP WHERE
DEPTNO = 30 );
SELECT LASTNAME, FIRSTNAME, ADDRESS, STATE, ZIPCODE
FROM CUSTOMERS WHERE STATE IN ( MS, AP);
SELECT * FROM EMP WHERE SAL = ANY ( SELECT SAL FROM EMP
WHERE DEPTNO = 30 );
6) NOT IN
SELECT * FROM EMP WHERE SAL NOT IN ( SELECT SAL FROM EMP
WHERE DEPTNO = 30 );
SELECT * FROM EMP WHERE JOB NOT IN ('CLERK', 'ANALYST');
SELECT ID, LASTNAME FROM CUSTOMERS
WHERE (FIRSTNAME IS NULL) OR (ADDRESS IS NULL);
SELECT ID, LASTNAME FROM CUSTOMERS WHERE
ID NOT IN ( SELECT CUSTOMERID FROM ORDERS );
7) ALL
SELECT * FROM EMP WHERE SAL >= ALL(1400,3000);
8) BETWEEN
SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 3000;
9) EXISTS
SELECT DNAME,DEPTNO FROM DEPT WHERE EXISTS ( SELECT * FROM
EMP WHERE DEPT.DEPTNO = EMP.DEPTNO);
10 ) NULL
SELECT * FROM EMP WHERE COMM IS NULL;
11) LIKE
SELECT SAL FROM EMP WHERE ENAME LIKE'SM%';
SELECT SAL FROM EMP WHERE ENAME LIKE'SMITH_';
12) NOT
-3
SELECT * FROM EMP WHERE NOT ( JOB IS NULL );
SELECT * FROM EMP WHERE NOT( SAL BETWEEN 1000 AND 2000 );
13) AND
SELECT * FROM EMP WHERE JOB = 'CLERK' AND DEPTNO =10 ;
SELECT ID FROM ORDERS WHERE ORDERDATE BETWEEN
01-JUN-96 AND 30-JUN-96;
14) OR
SELECT * FROM EMP WHERE JOB = 'CLERK' OR DEPTNO = 10 ;
INSERT
INSERT INTO EMP VALUES ( , , );
INSERT INTO EMP (EMPNO, ENAME) VALUES (1000,IAN SMITH);
INSERT INTO ORDERHISTORY
(SELECT * FROM ORDERS WHERE ORDERDATE < 31-MAY-96);
ORDER_LIST2
PART
-----CRANKSHAFT
TAILPIPE
TAILPIPE
1) UNION
[ALL DISTINC ROWS SELECTED BY EITHER QUERIES]
SELECT PART FROM ODER_LIST1
UNION
SELECT PART FROM ODER_LIST2;
UNION
-------SPARKPLUG
FUELPUMP
TAILPIPE
CRANKSHAFT
2) UNION ALL
[ ALL ROWS SELECTED BY EITHER QURY INCLUDING ALL DUPLICATES ]
SELECT PART FROM ODER_LIST1
UNION ALL
SELECT PART FROM ODER_LIST2;
UNION ALL
------1&2
3) INTERSECT
[ ALL DISTINCT ROWS SELECTED BY BOTH QUERIES, COMMON IN BOTH ]
SELECT PART FROM ODER_LIST1
INTERSECT
SELECT PART FROM ODER_LIST2;
INTERSECT
--------TAILPIPE
-4
4) MINUS
[ ALL DISTINCT ROWS SELECTED BY FIRST QUERY BUT NOT THE SECOND ]
SELECT PART FROM ODER_LIST1
MINUS
SELECT PART FROM ODER_LIST2;
MINUS
-------SPARKPLUG
FUELPUMP
5) GROUP BY
SELECT DEPTNO,MIN(SAL),MAX(SAL) FROM EMP GROUP BY DEPTNO;
SELECT DEPTNO,MIN(SAL),MAX(SAL) FROM EMP WHERE
JOB = 'CLERK' GROUP BY DEPTNO;
6) HAVING
SELECT DEPTNO,MIN(SAL),MAX(SAL) FROM EMP WHERE
JOB = 'CLERK' GROUP BY DEPTNO HAVING MIN(SAL) < 1000;
7) ORDER
SELECT * FROM EMP WHERE JOB = 'SALESMAN' ORDER BY COMM DESC;
SELECT ENAME,DEPTNO,SAL FROM EMP ORDER BY DEPTNO ASC, SAL DESC;
SELECT ENAME,DEPTNO,SAL FROM EMP ORDER BY 2 ASC, 3 DESC;
SELECT ID, LASTNAME, FIRSTNAME FROM CUSTOMERS
ORDER BY LASTNAME, FIRSTNAME
8) JOINS
SELECT ENAME, EMP.DEPTNO,DNAME FROM EMP, DEPT WHERE
EMP.DEPTNO=DEPT.DEPTNO;
NUMBER FUNCTIONS
THESE FUNCTIONS ACCEPT NUMERIC VALUES & RETURNS NUMERIC VALUES.
ACCURATE UPTO 38 DECIMAL DIGITS.
1)ABS
SELECT ABS(-15) "ABSOLUTE" FROM DUAL;
2) CEIL
SELECT CEIL(15.7) "CEILING" FROM DUAL;
3) FLOOR
SELECT FLOOR(15.7) "FLOOR" FROM DUAL;
4) MOD
SELECT MOD(11,4) " MOD" FROM DUAL;
5) POWER
SELECT POWER(3,2) " RAISED" FROM DUAL;
6) ROUND
SELECT ROUND(15.193,1) "ROUND" FROM DUAL;
7) SIGN
SELECT SIGN(-15) "SIGN" FROM DUAL;
8) SQRT
SELECT SQRT(26) "SQARE ROOT" FROM DUAL ;
-5
9) TRUNC
SELECT TRUNC(15.79,+1) "TRUNCATE" FROM DUAL;
10)
COUNT
CHAR FUNCTIONS
1) CHR
SELECT CHR(75) "CHARACTER" FROM DUAL;
2) CONCAT
SELECT CONCAT('CHAR1','CHAR2') "CHARACTER" FROM DUAL;
SELECT CONCAT(CONCAT(FIRSTNAME, ), LASTNAME) NAME
FROM CUSTOMERS;
3) INITCAP
SELECT INITCAP ('THE SOAP') "CHARACTER" FROM DUAL;
4)LOWER
SELECT LOWER('MR SAMUEL') "CHARACTER" FROM DUAL;
MR SAMUAEL
5) LPAD
SELECT LPAD('PAGE1',15,'*') "CHARACTER" FROM DUAL;
6)LTRIM
SELECT LTRIM('XYXYXYLAST','XY') "CHARACTER" FROM DUAL;
XYLAST
7)RTRIM
SELECT RTRIM('TURNERXXXY','XY') "CHARACTER" FROM DUAL;
TURNERXX
8)RPAD
SELECT RPAD(ENAME,12,'AB') "NAME" FROM EMP;
TURNERABABA
9)REPLACE
SELECT REPLACE('JACK AND JUE','J','BL') "CHARACTER" FROM DUAL;
BLACK AND BLUE
10)SOUNDEX
SELECT ENAME FROM EMP
WHERE SOUNDEX(ENAME) = SOUNDEX('SMYTHE')
11)SUBSTR
SELECT SUBSTR('ABCDEFG',3,2) "CHARACTER" FROM DUAL;
CD
SUBSTR('ABCDEFG',-3,2)
-6
EF
12)UPPER
SELECT UPPER('LARGE') "CHARACTER" FROM DUAL;
LARGE
Conversion Functions
1)TO_CHAR
4)CHARTOROWID
5)ROWIDTOCHAR
Date Functions
1) ADD_MONTHS
ADD_MONTHS(DATE,VALUE)
SELECT EMPNO, ENAME, HIREDATE, ADD_MONTHS ( HIREDATE, 8) FROM EMP;
2)MONTHS_BETWEEN - NUMBER OF MONTHS BETWEEN 2 DATES
MONTHS_BETWEEN(DATE1,DATE2)
3)LAST_DAY - THE LAST DAY OF DATE'S MONTHS
LAST_DAY(SYSDATE)
4)NEXT_DAY - DATE OF NEXT OCCURRENCE OF A PARTICULAR DAY OF THE WEEK
NEXT_DAY(SYS_DATE,'THURSDAY')
5)NEW_TIME
6)TRUNC
-7
DESC
DESC TABLE_NAME;
DESCRIBES THE SAID TABLE IN TERMS OF FIELDS.
SELECT * FROM TAB WHERE TYPE = TABLE;
THIS WILL LIST ALL THE TABLES STORED.
SELECT * FROM TAB;
THIS WILL LIST ALL THE TABLES, SYNOYMNS, VIEWS.
SELECT * FROM USER_TRIGGERS;
THIS WILL LIST ALL THE THE TRIGGERS CREATED BY THE USERS.
SELECT TRIGGER_NAME, TRIGGER_BODY FROM USER_TRIGGERS;
THIS WILL DISPLAY ALL THE TRIGGERS WITH THE NAME AND THE ACTUAL BODY OF THE
TRIGGER.
UPDATE ORDERS SET CUSTOMERID =
(SELECT ID FROM CUSTOMERS WHERE
LASTNAME = KING AND FIRSTNAME = MARTIN)
WHERE ID = 562;
DELETE FROM ORDERHISTORY;
-8
DATABASES TRIGGERS
1.
CREATE OR REPLACE TRIGGER USR_CHECK
BEFORE
UPDATE OR INSERT OR DELETE
ON
DEPT
DECLARE
USR VARCHAR2(10);
BEGIN
SELECT USER INTO USR FROM DUAL;
IF USR <> 'SCOTT' THEN
RAISE_APPLICATION_ERROR(-20000,'INVALID USER');
END IF;
END;
2.
CREATE OR REPLACE TRIGGER TIME_CHECK
BEFORE
UPDATE OR INSERT OR DELETE
ON
EMP
BEGIN
IF TO_CHAR(SYSDATE,'DY')='SAT' OR
TO_CHAR(SYSDATE,'DY')='SUN' THEN
RAISE_APPLICATION_ERROR(-20501,CHANGES NOT MADE DURING WEEKENDS');
END IF;
IF TO_CHAR(SYSDATE,'HH24') < 8 OR
TO_CHAR(SYSDATE,'HH24') >= 18 THEN
RAISE_APPLICATION_ERROR(-20501,CHANGES MADE DURING OFFICE HOURS ONLY');
END IF;
END;
3.
CREATE OR REPLACE TRIGGER SAL_CKECK
BEFORE
UPDATE OR INSERT
OF SAL,JOB
ON EMP
OF EACH ROW
DECLARE
V_MINSAL NUMBER;
V_MAXSAL NUMBER;
BEGIN
SELECT MINSAL,MAXSAL INTO V_MINSAL,V_MAXSAL FROM SALGRADE
WHERE JOB = :NEW.JOB;
IF :NEW.SAL < V_MINSAL OR :NEW.SAL > V_MAXSAL THEN
RAISE_APPLICATION_ERROR(-20505,'SAL NOT WITH IN THE RANGE');
END IF;
END;
4.
CREATE TWO TABLES IF NOT AVAILABLE
ITEM
STOCK
****
******
STOCKID
ID
QTY
ITEMDESC
TOTAL
UNITPRICE
CREATE TABLE ITEM
(STOCKID NUMBER(4,0),
QTY NUMBER(5,0),
TOTAL NUMBER(7,2));
CREATE TABLE STOCK
-9
(ID NUMBER (4,0),
ITEMDESC VARCHAR2(20),
UNITPRICE NUMBER (7,2));
CREATE OR REPLACE TRIGGER LINE_TOTAL
BEFORE
UPDATE OR INSERT
OF QTY
ON ITEM
FOR EACH ROW
DECLARE
V_ITEMPRICE REAL;
BEGIN
- 10
WHEN (new.job != 'PRESIDENT')
DECLARE
minsal NUMBER;
maxsal NUMBER;
BEGIN
/* Get salary range for a given job from table sals. */
SELECT losal, hisal INTO minsal, maxsal FROM sals
WHERE job = :new.job;
/* If salary is out of range, increase is negative, *
* or increase exceeds 10%, raise an exception. */
IF (:new.sal < minsal OR :new.sal > maxsal) THEN
raise_application_error(-20225, 'Salary out of range');
ELSIF (:new.sal < :old.sal) THEN
raise_application_error(-20230, 'Negative increase');
ELSIF (:new.sal > 1.1 * :old.sal) THEN
raise_application_error(-20235, 'Increase exceeds 10%');
END IF;
END;
PROCEDURES
1.
CREATE PROCEDURE DELETEEMP (ENO IN INTEGER) AS
EMPNAME VARCHAR2(20);
MGRNO INTEGER;
BEGIN
SELECT ENAME,MGR INTO EMPNAME, MGRNO
FROM EMP WHERE EMPNO = ENO;
INSERT INTO EMP_LOG VALUES(ENO,EMPNAME,MGRNO);
DELETE FROM EMP WHERE EMPNO = ENO;
EXCEPTION WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20506,'INVALID EMPLOYEE');
END DELETEEMP;
2.
CREATE PROCEDURE DELETECUST( CUSTID IN INTEGER) AS
DECLARE
LAST VARCHAR2(20);
FIRST VARCHAR2(20);
BEGIN
SELECT LASTNAME,FIRSTNAME INTO LAST,FIRST
FROM CUSTOMER WHERE ID = CUSTID;
INSERT INTO CUST_LOG VALUES(CUSTID,LAST,FIRST);
DELETE FROM CUSTOMER WHERE ID = CUSTID;
EXCEPTION WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20506,'INVALID CUSTID');
END DELETCUST;
3.
CREATE PROCEDURE DELETECUST(CUSTID IN NUMBER) AS
ERRNUM NUMBER := -20000;
ERRMESS VARCHAR2(200) := 'STANDARD ERROR';
BEGIN
DELETE FROM CUSTOMER WHERE ID = CUSTID;
IF SQL%NOTFOUND THEN
SELECT ERRORNUMBER,ERRORMESSAGE INTO ERRNUM,ERRMESS
FROM USERERRORS
WHERE ERRORMESSAGE LIKE('INVALID CUST%');
RAISE_APPLICATION_ERROR(ERRNUM,ERRMESS);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(ERRNUM,ERRMESS);
END DELETECUST;
FOR ABOVE PROCEDURE HAVE THE FOLLOWING TABLE CREATED.
- 11
CREATE TABLE USERERRORS
( ERRORNUMBER NUMBER(5,0) PRIMARY KEY,
ERRORMESSAGE VARCHAR2(200) );
INSERT FOLLOWING VALUES
INSERT INTO USERERRORS VALUES(-20000,'STANDARD ERROR');
INSERT INTO USERERRORS VALUES(-20001,'INVALID CUSTOMER ID');
4.
CREATE PROCEDURE raise_salary (emp_id NUMBER, increase NUMBER) AS
current_salary NUMBER;
BEGIN
SELECT sal INTO current_salary FROM emp
WHERE empno = emp_id;
IF current_salary IS NULL THEN
raise_application_error(-20101, 'Salary is missing');
ELSE
UPDATE emp SET sal = current_salary + increase
WHERE empno = emp_id;
END IF;
END raise_salary;
5.
DECLARE
X NUMBER (5,0);
BEGIN
X := 60404;
DBMS_OUTPUT.PUTLINE('THE VALUE OF X IS');
DBMS_OUTPUT.PUTLINE(X);
END;
CURSORS
1.
DECLARE
CUSOR ORDCUSRSOR (ORDNUM NUMBER) IS
SELECT ID,CUSTID,ORDDATE
FROM
ORDERS
WHERE ID > ORDNUM;
OPEN ORDCUSRSOR(3)
2.
DECLARE
V_CALC_COMM
NUMBER(9,2);
V_SAL
NUMBER(9,2);
V_ID
INTEGER;
CURSOR EMP_COMM IS SELECT SAL,EMPNO FROM
EMP WHERE COMM <= 0 OR COMM IS NULL;
BEGIN
LOOP
OPEN EMP_COMM;
FUNCTIONS
1.
CREATE FUNCTION FINDCUST(LAST IN VARCHAR2, FIRST IN VARCHAR2)
RETURN INTEGER AS
CUSTID INTEGER;
- 12
BEGIN
SELECT ID INTO CUSTID FROM CUSTOMER
WHERE LASTNAME=UPPER(LAST) AND FIRSTNAME=UPPER(FIRST);
RETURN CUSTID;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20001,'INVALID CUSTOMER NAME');
END FINDCUST;
2.
CREATE FUNCTION FINDEMP(NAME IN VARCHAR2)
RETURN INTEGER AS
EMPID INTEGER;
BEGIN
SELECT EMPNO INTO EMPID FROM EMP
WHERE ENAME=UPPER(NAME);
RETURN EMPID;
END FINDEMP;
- 13
DataBase Management System
A database management system (DBMS) consists of a collection of interrelated data and a set of programs to access
that data. The collection of data, usually referred to as the database, contains information about one
particular enterprise. The primary goal of a DBMS is to provide an environment that is both convenient and
efficient to use in retrieving and storing database information.
The management of data involves both the definition of structures for the storage of information and the
provision of mechanisms for the manipulation of information. In addition, the database system must provide
for the safety of the information stored, despite system crashes or attempts at unauthorized access. If data is to be
shared among several users, the system must avoid possible anomalous results.
The typical file-processing system is supported by a conventional operating system. Permanent records are stored
in various files, and a number of different application programs are written to extract records from and add records
to the appropriate files. This scheme has major disadvantages
Disadvantages
Data isolation
Since data is scattered in various files and files may be in various formats then it is difficult to write new
application programs to retrieve the appropriate data. But in RDBMS new applications can developed on same
data.
Security Problem
Not every user of the database system should be able to access all the data. For example, in a banking system,
payroll personnel need only see that part of the database that has information about the various bank employees.
They do not need access to information about customer accounts. But it is difficult to enforce such security
constraints.
Integrity Problem
The data values stored in the database must satisfy certain types of consistency constraints. For example, the
balance of a bank account may never fall below a prescribed amount (say, Rs 100). These constraints are enforced
in RDBMS by adding validation checks.
- 14
Data Abstraction
Data abstraction is achieved by dividing the database in three different levels
Physical Level
The lowest level of abstraction describes how the data are actually stored . At the physical level, complex lowlevel structures are described in detail.
Conceptual Level
The next-higher-level of abstraction describe what data are actually stored in the database, and the relationships
that exist among the data. This level is used by DBA who decide what information is to be kept in database.
View Level
To simplify the interaction with the system, the view level of abstraction is defined. The system may provide many
views of same database. The highest level of abstraction describes only part of entire database.
Entity Relationships
It consists of a collection of basic objects called entity & relationships among these objects.
Rectangles, which represent entity sets.
Ellipses, which represent attributes.
Diamonds, which represent relationships among entity sets.
Lines, which link attributes to entity sets and entity sets to relationships.
Relational Model
The relational model represents data and relationships among data by collection of tables, each of which has a
number of columns with unique names.
Network Model
Data in the network model are represented by collections of records and relationships among data are represented
by links, which can be viewed as pointers. The records in the database are organized as collections of
arbitrary graphs.
Hierarchical Model
It is same as network model since data and relationships among data are represented by records and links
respectively. But records are organized as collections of trees rather than graphs.
Granting of different types of authorization allows the database administrator to regulate which part of database
various user can use.
- 15
System Structure
File manager : It manages allocation of space on disk storage & data structures used to
represent information stored on disk
Database manager which provides the interface between the low-level data stored and the
application programs .
Query processor, which translates statements in a query language into low-level instructions
that the database manager understands.
DML precompiler, which converts DML statements embedded in an application program to
normal procedure calls in the host language .
DDL compiler, which converts DDL statements to a set of tables containing metadata, or
"data about data".
Data files, which store the database itself.
Data dictionary, which stores metadata about the structure of the database.
- 16
CODDs Rules
Rules For DBMS to be RDBMS
RDBMS (Codds Rules) (1)
All informaion is explicitly and logically represented in exactly one way by data values
in tables.
i.e. If an item of data doesnt reside somewhere in a table in the database then it
doesnt exist.
The information about Table, View & Column names should exist somewhere in table
form.
It is fundamental to the DBMS that NULL values are supported in the representation of
missing and in applicable information. this support of null values must be consistent
throughout the DBMS, & independent to data types.
The description of a database & its contents (tables etc) can be queried on line using
some data manipulation language.
A RDBMS may support several languages, but at least one of them should allow the
user to do all the following :
Define tables, views, query and update data, set integrity constraints and define
transactions
- 17
RDBMS (Codds Rules)(6)
All views that can be updated in theory, can also be updated by the system
This means that the major DML commands, namely SELECT, UPDATE, DELETE
and INSERT or their equivalents must be available and operational on sets of rows.
User access to the database, via terminal monitors or application programs, must remain
logically consistent, whereever changes to the representation, or access methods to the
data, are changed.
Appliaction programs and termianl activities must remain logically impaired whenever
information preserving changes of any kind, that are theoretically permitted, are made to the
base table
This rule allows many types of database design changes to be made dynamically,
without users being aware of them.
All integrity constraints defined for a database must be definable in the language
referred to in rule 5, and stored in the database as tables.
No component of a primary key can have missing values - this is the basic rule of
entity integrity
- 18
For each distinct foreign key value there must exist a matching primary key value in
the same domain. Conformation to this rule ensures what is called referential integrity
Distribution Rule
Here the tables can be decomposed into sub-tables, and recombine then using the SQL
JOIN, MINUS, UNION and INTERSECT operations.