You are on page 1of 18

-1

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

TWO SEQUENCES INTO ONE RESULT


CREATE TWO TABLES OF ATLEAST ONE FIELD PART:ORDER_LIST1
PART
----SPARKPLUG
FUELPUMP
FUELPUMP
TAILPIPE

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

SELECT COUNT(DISTINCT JOB) FROM EMP


SELECT COUNT(*) FROM EMP
11) MAX
SELECT MAX(SAL) FROM EMP;

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

CHARACTER FUNCTIONS RETURNING NUMBER VALUES


1)ASCII
SELECT ASCII('Q') "VALUE" FROM DUAL;
81
2)INSTR
SELECT INSTR('CORPORATE FLOOR','OR',3,2) "VALUE" FROM DUAL;
14
INSTR('CORPORATE FLOOR','OR',-3,2)
2
3)LENGTH
SELECT LENGTH('CANDIDI') "VALUE" FROM DUAL;
7

Conversion Functions
1)TO_CHAR

- CONVERTS DATES & NUMBERS TO STRINGS

SELECT EMPNO, ENAME, TOCHAR(HIREDATE, MONTH DD, YYYY HH:MIPM)


HDATE, ROUND(HIREDATE, MM) FROM EMP;
2)TO_NUMBER - CONVERTS DATES & STRINGS TO NUMBERS
3)TO_DATE

-CONVERTS CHARACTERS & NUMBERS TO DATES

4)CHARTOROWID

-CONVERTS CHARACTERS TO A PSEUDO COLUMN ROWID

5)ROWIDTOCHAR

-CONVERTS A ROWID TO A CHARACTERS.

Date Functions
1) ADD_MONTHS

- ADD MONTHS TO ONE DATE TO GET ANOTHER.

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

- CONVERSION BETWEEN TIME ZONES

6)TRUNC

- DATE WITH TIME ELLMINATED

-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

SELECT UNITPRICE INTO V_ITEMPRICE FROM STOCK


WHERE ID = :NEW.STOCKID;

:NEW.TOTAL := :NEW.QTY * V_ITEMPRICE;


END LINE_TOTAL;
5.
SERVER PROGRAMMING
STAT_LOG TABLE
**********
USR_NAME VARCHAR2(10)
STAT VARCHAR(10)
CREATE TABLE STAT_LOG
( USR_NAME VARCHAR2(10),
STAT VARCHAR(10));
CREATE OR REPLACE TRIGGER STAT_LOG
AFTER
DELETE OR UPDATE OR INSERT
ON DEPT
DECLARE
USR VARCHAR2(10);
DES VARCHAR2(10);
BEGIN
SELECT USER INTO USR FROM DUAL;
IF INSERTING THEN
DES := 'INSERT';
END IF;
IF UPDATING THEN
DES := 'UPDATE';
END IF;
IF DELETING THEN
DES := 'DELETE';
END IF;
INSERT INTO STATLOG VALUES(USR,DES);
END ;
6.
CREATE TRIGGER reorder
/* triggering event */
AFTER UPDATE OF qty_on_hand ON inventory -- table
FOR EACH ROW
/* trigger constraint */
WHEN (new.reorderable = 'T')
BEGIN
/* trigger action */
IF :new.qty_on_hand < :new.reorder_point THEN
INSERT INTO pending_orders
VALUES (:new.part_no, :new.reorder_qty, SYSDATE);
END IF;
END;
7.
CREATE TRIGGER check_salary
BEFORE INSERT OR UPDATE OF sal, job ON emp
FOR EACH ROW

- 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;

FETCH EMP_COMM INTO V_SAL, V_ID;


EXIT WHEN EMP_COMM%NOTFOUND;
V_CALC_COMM := V_SAL * 0.12;
UPDATE EMP SET COMM = V_CALC_COMM
WHERE EMPNO = V_ID;
END LOOP;
CLOSE EMP_COMM;
END;

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 redundancy and inconsistency.


Data isolation
Standards can not be enforced
Security Problem
Integrity Problem

Data redundancy and inconsistency.


In nondatabase system files and application programs are created by different programmers over a long period of
time, the files are likely to have different formats and the programs may be written in several programming
languages. The same piece of information may be duplicated in several places (files)
Ex:
Two files containing Following data
Emp
Course admitted
-------------------------------Name
Name
Address
Address
Dept_No
Course_no
Salary
Course_details
If Emp file contains two same entries of one employee. Then two entries will not agree with each other when only
one is updated (ie capable of supplying incorrect or inconsistency data).

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.

Standards can not be enforced


Different programmer using various formats can not enforce standards. But in RDBMS, DBA can enforce company
standards for example : Employee code of 4 digits only will help in migrating data anywhere or Using British &
American date standards.

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.

Object - Based logical models


The entity-relationship model.
The object-oriented model.
The binary model.
Record - Based logical models
Network Model
Hierarchical Model
Relational Model

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.

Functions of database administrator


Scheme definition.
The original database scheme is created by writing a set of definitions which are translated by the DDL compiler
to a set of tables that are permanently stored in the data dictionary.

Storage structure and access method definition.


Appropriate storage structures and access methods are created by writing a set of
definitions which are translated by the data storage and definition language compiler.
Scheme and physical organization modification.
Modifications of database scheme or the description of physical storage are accomplished by writing set of
definitions which are used by either the DDL compiler or the data storage and defination language compiler to
generate modifications to the appropriate internal system tables.

Granting of authorization for data access.

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)

The Information Rule.

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.

RDBMS (Codds Rules) (2)

The Rule of Guranteed Access

Every Item of data must be logically by addressable by restoring to a combination of table


name, primary key value and column name.

RDBMS (Codds Rules) (3)

The systematic Treatment of Null Value

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.

RDBMS (Codds Rules) (4)

The Database Description Rule

The description of a database & its contents (tables etc) can be queried on line using
some data manipulation language.

RDBMS (Codds Rules) (5)

The comprehensive sub-language rule

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)

The View updating rule.

All views that can be updated in theory, can also be updated by the system

RDBMS (Codds Rules)(7)

The insert and update rule

The capability of handling a base relation, or infact a derived relation, as a single


operand must hold good for all retrieve, update, delete and insert activity.

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.

RDBMS (Codds Rules)(8)

The physical independence rule

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.

RDBMS (Codds Rules)(9)

The Logical data independence rule

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.

RDBMS (Codds Rules) (10)

Integrity independence rule

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.

RDBMS (Codds Rules) (10)

Integrity independence rules

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

RDBMS (Codds Rules)(11)

Distribution Rule

A RDBMS must have distribution independence.

Here the tables can be decomposed into sub-tables, and recombine then using the SQL
JOIN, MINUS, UNION and INTERSECT operations.

RDBMS (Codds Rules)(12)


No Subversion rule
If a RDBMS supports a lower language that permits, for example row-at-a-time
processing, then this language must not be able to bypass any integrity rules or constraints
defined in the higher-level, set-at-time, relational language.

You might also like