IP header format


Assalamualaikum............

IP VERSI 4

Deskripsi/Penjelasan :
  • ·         Version: nomor versi IP (4)
  • ·         Header leght (IHL) : Panjang Header dalam format 32 bits
  • ·         Packet leght : panjang dari paket termasuk header dan data
  • ·         Identification : Pengidentificatian packet ip
  • ·         Fragment offest : menyediakan fragmentasi dan perakitan kembali jika paket terlalu besar  untuk disimpan didalam frame
  • ·         Flags : menspesikasian apakah fragmentasi harus ada
  • ·         Time to Live : diset didalam paket yang dibuat pertama kali
  • ·         Protokol : port dari protokol upper-layer (TCP adalah port 6 dan UDP adalah port 17)
  • ·         Header cheksum : CRC yg hanya berada pada header
  • ·         Source ip address : alamat ip 32bits dari host pengiriman paket
  • ·         Destination addressip : 32bits dari host tujuan pengiriman paket
  • ·         IP option : digunakan untuk network testing, debug,keamanan dan yg lainya
  • ·         Padding : jika kurang dari batas minimum, yaitu 46 bytes, maka tambah bit 0 sesuai ukuran data hinggamencapai batas minimum..


IP VERSI 6
Deskripsi/Penjelasan :
  • ·         Header IPv6 ini akan selalu ada dengan ukuran yang tetap yaitu 40 bytes.
  • ·         Header berjumlah 8 kolom
  • ·         Jumlah header field yang harus diproses oleh router antara (intermediate router) menjadi 4 yang  membuat proses forwarding paket IPv6 normal menjadi lebih efisien
  • ·         Header field yang jarang terpakai seperti fields supporting fragmentation dan option pada header IPv4 dipindahkan ke extension header IPv6
  • ·         Adanya perluasan jumlah alamat dari 32 menjadi 128 bit
  • ·         Memungkinkan pelabelan paket atau pengklasifikasikan paket yang meminta penanganan khusus, seperti kualitas mutu layanan tertentu (QoS) atau real-time.



konfigurasi snort pada windows


Alat dan Bahan
1.      OS windows XP
2.      Master snort yang dapat di download pada www.snort.org
3.      Snort rule yang juga di download pada www.snort.org
4.      Winpcap yang dapat di download pada http://www.winpcap.org.

Langkah Kerja
1. Install Winpcap pada PC-A
a. Setelah mendapatkan installernya tinggal double klik ikon tersebut.
b.  Akan muncul langkah instalasi sebagai berikut, tekan tombol next, muncul proses instalasi    berikutnya tekan next, setelah membaca lisence agreement tekan I Agree..
c. Selesai sudah proses instalasi winpcap tekan finish
2. Install Master snort pada windows Xp PC-A
a.      Setelah membaca license Agreement tekan tombol I Agree.
Instalasi option akan memberikan pilihan database yang akan digunakan tergantung database yang akan dipakai.
b.      Proses selanjutnya adalah memilih komponen-komponen apa saja yang akan di install. Tekan tombol next.
c.       Tunggu proses instalasi
d.      Install Snort selesai
3. Ekstrak snort rules yang sudah di download sebelumnya
4. Copy snort rules dari /snortrules-snapshot-2900/rules ke folder /snort/etc/rules
5. Copy snort. conf dari /snortrules-snapshot-2900/etc ke /snort/etc/
6. Melakukan konfigurasi snort pada file c: /snort/etc/snort.conf
a.      Network Setting
Untuk memonitor aktivitas jaringan yang lebih spesifik ubahlah var HOME_NET any  menjadi var HOME_NET 192.168.1.1/24, untuk var EXTERNAL_NET any biarkan saja karena akan memonitor ip luar yang masuk ke jaringan kita.

# or you can specify the variable to be any IP address
# like this:
var HOME_NET 192.168.1.0/24
# Set up the external network addresses as well. A good
start may be “any”
var EXTERNAL_NET any
b.      Beri IP pada Dns Server dan Telnet Server (sifatnya opsional .terserah ingin   membuka protocol yang apa)
# List of DNS servers on your network
ipvar DNS_SERVERS 192.168.1.1
# List of SMTP servers on your network
ipvar SMTP_SERVERS $HOME_NET
# List of web servers on your network
ipvar HTTP_SERVERS $HOME_NET
# List of sql servers on your network
ipvar SQL_SERVERS $HOME_NET
# List of telnet servers on your network
ipvar TELNET_SERVERS 192.168.1.1

c.       Edit Var Rule path sesuai letak konfigrsi rule di snort yaitu C:\snort\rules
# Path to your rules files (this can be a relative path)
# Note for Windows users:  You are advised to make this an absolute path,
# such as:  c:\snort\rules
var RULE_PATH c:\snort\rules

d.      Edit path dynamic rules dan path dynamic preprocessor sesuai letak di konfigurasi snort.
# path to dynamic preprocessor libraries
dynamicpreprocessor file C:\Snort\lib\snort_dynamicpreprocessor\sf_dce2.dll
dynamicpreprocessor file C:\Snort\lib\snort_dynamicpreprocessor\sf_sdf.dll
dynamicpreprocessor file C:\Snort\lib\snort_dynamicpreprocessor\sf_ssl.dll
dynamicpreprocessor file C:\Snort\lib\snort_dynamicpreprocessor\sf_dns.dll
dynamicpreprocessor file C:\Snort\lib\snort_dynamicpreprocessor\sf_smtp.dll
dynamicpreprocessor file C:\Snort\lib\snort_dynamicpreprocessor\sf_ftptelnet.dll
dynamicpreprocessor file C:\Snort\lib\snort_dynamicpreprocessor\sf_ssh.dll
# path to base preprocessor engine
dynamicengine C:\Snort\lib\snort_dynamicengine\sf_engine.dll
e.      Edit include classification.config dan include reference.config dengan memberi tambahan c:\snort\etc\
# metadata reference data.  do not modify these lines
include C:\Snort\etc\classification.config
include C:\Snort\etc\reference.config

f.        Buat file alerts.ids di folder c:\snort\log
g.      Buat konfigurasi log pada snort.conf dengan perintah output alert_fast
# output log_tcpdump: tcpdump.log
output alert_fast: alerts.ids

7. Mengecek Keberhasilan Konfigurasi Snort
a.      Buka CMD lalu masuk /snort/bin untuk melihat konektifitas jaringan PC,dengan perintah :
C:\Snort\bin> snort –dev –i 1
b.      Buka tab cmd baru ,lalu buat perintah agar nanti log dapat dilihat di file /snort/log/alerts.ids
C:\Snort\bin> snort –c c:\Snort\etc\snort.conf –l c:\snort\log –i 1
c.       Lakukan Pengecekan dengan cara PING dari PC-B
Setelah dilakukan PING(aktifitas jaringan) maka CMD yang di Snort –dev –i 1 akan memunculkan log
d.      Log akan tertulis di file /Snort/log/alerts.ids

Tugas KAPITA SELEKTA


Assalamualaikum...

TUGAS KAPITA SELEKTA
Terminologi Data Ware House, Data Mart, Data Mining, OLAP (Online Analytical Processing), MOLAP, ROLAP. (Kelebihan,Kekurangan, dan Deskripsi)

Data Warehouse dan Data Mart
Data yang terdapat dalam data warehouse dapat dibagi perbagian sesuai dengan kebutuhan dalam informasi. Inilah yang dsebut dengan data mart. Data mart memiliki karakteristik yang sama dengan data warehouse, perbedaannya hanya terdapat pada jumlah data yang dimiliki. Dalam data mart, data yang ada hanya berasal dari satu bagian atau satu departemen saja, sedangkan pada data warehouse, data yang ada berasal dari seluruh bagian dalam perusahaan tersebut.

Dalam pembuatan data warehouse, ada dua pendekatan yang dapat digunakan, yaitu :
Pendekatan Top Down (Top Down Approach)
Pendekatan ini dilakukan dengan membuat perancangan data warehouse terlebih dahulu secara keseluruhan. Dalam pembuatannya, ditentukan apa yang menjadi sumber data dan bagaimana cara untuk memasukkannya ke dalam data warehouse yang telah dirancang terlebih dahulu. Pendekatan ini menyatakan bahwa pembangunan desain arsitektur data warehouse adalah hal pertama yang dilakukan dalam membangun suatu data warehouse.

Pendekatan Bottom Up (Bottom Up Approach)
Berbeda dengan pendekatan Top Down, pendekatan ini menyatakan bahwa data warehouse berawal dari kumpulan data mart yang telah dibangun terlebih dahulu untuk masing-masing departemen. Data mart yang telah dibangun kemudian digabungkan untuk membangun suatu data warehouse yang utuh.

Dalam pembangunan data mart, terdapat 2 arsitektur, yaitu : Dependent Data Mart dan Independent Data Mart (IDM). Perbedaan dari kedua arsitektur tersebut hanya terletak pada ketergantungannya terhadap data warehouse. Pada Dependent Data Mart, data yang diperoleh sangat tergantung pada data warehouse terpusat sedangkan pada IDM, data yang digunakan terpisah dari data warehouse terpusat dan bersifat independent (berdiri sendiri).




OLAP
Online Analytical Processing (OLAP ) merupakan suatu metode pendekatan untuk menyajikan jawaban dari  permintaan proses analisis yang bersifat dimensional secara cepat, yaitu desain dari aplikasi dan teknologi yang dapat mengoleksi, menyimpan, memanipulasi suatu data multidimensi untuk tujuan analisis.

1.      MOLAP
Multidimensional online analitycal processing (MOLAP) menyimpan data dan agregasi pada struktur data multidimensi. Struktur MOLAP ini tidak tersimpan pada data warehouse tapi tersimpan pada OLAP server.
Sehingga performa query yang dihasilkan olehnya sangat bagus. Model penyimpanan ini sesuai untuk database dengan ukuran kecil sampai sedang.
Cara kerja MOLAP secara umum dibagi ke dalam dua tahap sebagai berikut :
·         Tahap konstruksi dan populasi data, pada tahap ini sumber data akan dibaca, dilakukan perhitungan          agegrasi (summary group) pada berbagai level dimensi, dan hasilnya akan disimpan di storage MOLAP. Jika objek data diperumpamakan dengan table, maka untuk satu cube akan banyak fragmen table yang isinya adalah detil agregasi dari level tertentu.
·         Tahap query atau layanan permintaan data analisis, pada tahap ini OLAP Server akan melayani permintaan query dari client dan membaca data dari storage MOLAP. Table yang akan dibaca adalah suatu fragmen yang akan disesuaikan dengan permintaan dari client. Pada fase query ini, jika OLAP Server terputus dengan data source tidak apa-apa karena sudah tidak ada kaitannya.
Keuntungan dari MOLAP ini yang paling jelas adalah performa kecepatan akses yang sangat baik. Namun kelemahannya adalah jika kombinasi agregasi data yang dihasilkan untuk semua level, maka ukuran penyimpanan akan bisa lebih besar daripada sumbernya sendiri.

2.      ROLAP
ROLAP (relational online Analitycal processing) menggunakan tabel pada database relasional data warehouse untuk menyimpan detil data dan agregasi kubus. Berbeda dengan MOLAP, ROLAP tidak menyimpan salinan database, ia mengakses langsung pada tabel fact ketika membutuhkan jawaban sebuah query.
Sehingga query pada ROLAP mempunyai response time yang lebih lambat dibandingkan ROLAP maupun HOLAP. Karakteristik model ini digunakan untuk menyimpan data yang besar dan jarang dilakukannya proses query. Misalkan, data histori dalam jumlah besar dari beberapa tahun yang sebelumnya.
Cara kerja ROLAP secara umum adalah sebagai berikut :
·         OLAP client mengirimkan query analisis ke OLAP Server.
·         OLAP server akan melakukan pemeriksaan di cache apakah sudah bisa melayani permintaan query dari client tersebut, jika sudah akan dikirimkan.
·         Jika pada cache belum terdapat data diminta, akan dilakukan query SQL ke data mart dan hasil eksekusinya disimpan di cache dan dikirimkan kepada client. Cache akan.
Keuntungan dari ROLAP ini adalah tidak memerlukan storage tambahan. Namun kelemahannya adalah  jika data untuk suatu cube sangat besar (masif) maka performa pengambilan data akan cukup buruk.

3.       HOLAP
Gabungan model MOLAP dan ROLAP dapat kita peroleh dari HOLAP (hibrid online analitycal processing).Detil data tersimpan pada tabel relasional tapi aggregasi data disimpan dalam format multidimensi.
HOLAP hadir untuk mengatasi kelemahan dari ROLAP dan MOLAP, kelemahan tersebut adalah :
·         Performa ROLAP tidak begitu baik karena agregasi selalu dilakukan ulang apabila cache sudah expired.
·         Keterbatasan storage dari MOLAP jika digunakan untuk menyimpan kombinasi agregasi pada semua level.
Jadi HOLAP merupakan kombinasi atau "jalan tengah" antara keduanya dimana HOLAP akan menyimpan data precomputed aggregate pada media penyimpanan (storage) HOLAP sendiri.




Jadi Kesimpulanya

Istilah Business Intelligence pertama kali didengungkan pada tahun 1989 oleh Howard Dresner. Dia menggambarkan istilah tersebut sebagai seperangkat konsep dan metode yang berguna untuk meningkatkan pembuatan keputusan dengan bantuan sistem yang berbasiskan fakta atau realita yang terjadi.Menurut tim studi Busines Intelligence pada Departemen Keuangan Indonesia menyatakan,Business Intelligence (BI) merupakan sistem dan aplikasi yang berfungsi untuk mengubah data-data dalam suatu perusahaan atau organisasi (data operasional, data transaksional, atau data lainnya) ke dalam bentuk pengetahuan.
Aplikasi ini melakukan analisis data-data di masa lampau,  menganalisisnya dan kemudian menggunakan pengetahuan tersebut untuk mendukung keputusan dan perencanaan organisasi(Indonesia, 2007).Dari definisi itu, dapat dikatakan bahwa Business Intelligence merupakan suatu sistem pendukung keputusan yang berdasarkan pada data-data fakta kinerja perusahaan. Business Intelligence berguna untuk mengefisienkan finansial, manusia, material serta beberapa sumber daya lainya. Dalam perkembanganya banyak orang setuju bahwaBusiness Intelligence telah banyak mencakup beberapa area teknologi dan proses, antara lain adalah:
·         Forecasting
·         Budgeting
·         Dashboarding
·         Reporting
·         Strategic Planning
·         Analysis
·         Scorecarding
·         Data Mining
·         Data Warehousing



Assalamualikum.......

1.     IDS
Intrusion Detection System (disingkat IDS) adalah sebuah aplikasi perangkat lunak atau perangkat keras yang dapat mendeteksi aktivitas yang mencurigakan dalam sebuah sistem atau jaringan. IDS dapat melakukan inspeksi terhadap lalu lintas inbound dan outbound dalam sebuah sistem atau jaringan melakukan analisis dan mencari bukti dari percobaan intrusi (penyusupan).

Jenis-jenis IDS
Ada dua jenis IDS, yakni:
  • Network-based Intrusion Detection System (NIDS): Semua lalu lintas yang mengalir ke sebuah jaringan akan dianalisis untuk mencari apakah ada percobaan serangan atau penyusupan ke dalam sistem jaringan. NIDS umumnya terletak di dalam segmen jaringan penting di mana server berada atau terdapat pada "pintu masuk" jaringan. Kelemahan NIDS adalah bahwa NIDS agak rumit diimplementasikan dalam sebuah jaringan yang menggunakan switch Ethernet, meskipun beberapa vendor switch Ethernet sekarang telah menerapkan fungsi IDS di dalam switch buatannya untuk memonitor port atau koneksi.
  • Host-based Intrusion Detection System (HIDS): Aktivitas sebuah host jaringan individual akan dipantau apakah terjadi sebuah percobaan serangan atau penyusupan ke dalamnya atau tidak. HIDS seringnya diletakkan pada server-server kritis di jaringan, seperti halnya firewall, web server, atau server yang terkoneksi ke Internet.
Kebanyakan produk IDS merupakan sistem yang bersifat pasif, mengingat tugasnya hanyalah mendeteksi intrusi yang terjadi dan memberikan peringatan kepada administrator jaringan bahwa mungkin ada serangan atau gangguan terhadap jaringan. Akhir-akhir ini, beberapa vendor juga mengembangkan IDS yang bersifat aktif yang dapat melakukan beberapa tugas untuk melindungi host atau jaringan dari serangan ketika terdeteksi, seperti halnya menutup beberapa port atau memblokir beberapa alamat IP. Produk seperti ini umumnya disebut sebagai Intrusion Prevention System (IPS). Beberapa produk IDS juga menggabungkan kemampuan yang dimiliki oleh HIDS dan NIDS, yang kemudian disebut sebagai sistem hibrid (hybrid intrusion detection system).
Ada beberapa cara bagaimana IDS bekerja. Cara yang paling populer adalah dengan menggunakan pendeteksian berbasis signature (seperti halnya yang dilakukan oleh beberapa antivirus), yang melibatkan pencocokan lalu lintas jaringan dengan basis data yang berisi cara-cara serangan dan penyusupan yang sering dilakukan oleh penyerang. Sama seperti halnya antivirus, jenis ini membutuhkan pembaruan terhadap basis data signature IDS yang bersangkutan.
Metode selanjutnya adalah dengan mendeteksi adanya anomali, yang disebut sebagai Anomaly-based IDS. Jenis ini melibatkan pola lalu lintas yang mungkin merupakan sebuah serangan yang sedang dilakukan oleh penyerang. Umumnya, dilakukan dengan menggunakan teknik statistik untuk membandingkan lalu lintas yang sedang dipantau dengan lalu lintas normal yang biasa terjadi. Metode ini menawarkan kelebihan dibandingkansignature-based IDS, yakni ia dapat mendeteksi bentuk serangan yang baru dan belum terdapat di dalam basis data signature IDS. Kelemahannya, adalah jenis ini sering mengeluarkan pesan false positive. Sehingga tugasadministrator menjadi lebih rumit, dengan harus memilah-milah mana yang merupakan serangan yang sebenarnya dari banyaknya laporan false positive yang muncul.
2.     IPS
            Intrusion Prevention System (disingkat IPS) adalah kombinasi dari firewall blocking dengan IDS itu sendiri. IPS langsung melihat aplikasi atau apapun yang dianggap dicurigai daripada melihat alamat atau pun jaringan mana aplikasi tersebut muncul. IPS dapat mencegah serangan sebelum serangan itu dilakukan. Selain itu IPS bisa membandingkan file checksum yang tidak semestinya mendapatkan izin untuk dieksekusi dan juga bisa menginterupsi sistem call.
Ada dua jenis IDS, yakni:
1.      Network-based Intrusion Detection System (NIDS)
2.      Host-based Intrusion Detection System (HIDS)

           






Menurut saya yang network securuty itu bisa terjadi apabila komputer kita terhubung dengan internet, maka apabila jika tidak terhubung maka ancaman terhadap network securuty tidak akan terjadi karena komputer kita tidak terhubung dengan jaringan internet.

Menurut saya kita bisa melindungi komputer kita terhadap ancaman jaringan dapat kita lakukan melalui cara:

1.       Encryption maksudya cara ini untuk meningkatkan privasi, dan akses terbatas
2.       Acces Control
3.       Authentication
4.       Penggantian password secara rutin
5.       Pengaktifan farewall

Dan sistem itu dapat juga di jebol, dengan cara mengetahui dari si pembuat keamanan internet itu sendiri, apakah dia bisa menjaga rahasia terhadap orang-orang luar yang tidak ada hubungan nya, atau juga orang tersebut berusaha mencuri dari si pembuat situs keamanan itu.
Guna untuk mencegah berhasilnya eksploitasi para hacker dan intruder tersebut, dikembangkan sebuah konsep yang dikenal dengan UNIX Network Security Architecture. Arsitektur ini mencakup 7 lapis tingkat sekuriti pada jaringan. Ketujuh lapis tersebut adalah sebagai berikut :

1. Lapis ke-7 : Kebijaksanaan(pelindung terhadap keseluruhan program proteksi dan sekuriti jaringan yang diterapkan).
2.  Lapis ke-6 : Personil (mendefinisikan segi manusia dalam sistem jaringan informasi).
3. Lapis ke-5 : Local Area Network (mendefinisikan peralatan-peralatan dan data-data yang arus mendapatkan proteksi).
4. Lapis ke-4 : Batas Dalam Jaringan (pemisah antara sistem jaringan informasi lokal dengan jaringan luar).
5. Lapis ke-3 : Gateway (mendefinisikan menjadi pintu utama dari dan ke sistem yang dimiliki).
6. Lapis ke-2 : Paket Filtering (bersifat sebagai program yang menjalankan fungsi pengawasan (monitoring) terhadap paket-paket data yang masuk maupun yang keluar sistem).
7. Lapis ke-1 : Batas Luar Jaringan (mendefinisikan titik dimana sistem terhubung dan tidak memiliki kontrol langsung terhadap titik tersebut).

tugas Basis Data 2

SQL 10 G


INTEGRITY CONSTRAINTS


Integrity Constraints are used to prevent the entry of invalid information into tables. There are five Integrity Constraints Available in Oracle. They are :

  • Not Null
  • Primary Key
  • Foreign Key
  • Check
  • Unique

Not Null


By default all columns in a table can contain null values. If you want to ensure that a column must always have a value, i.e. it should not be left blank, then define a NOT NULL constraint on it.

Always be careful in defining NOT NULL constraint on columns, for example in employee table some employees might have commission  and some employees might not have any commission. If you put NOT NULL constraint on COMM column then you will not be able insert rows for those employees whose commission is null. Only put NOT NULL constraint on those column which are essential for example in EMP table ENAME column is a good candidate for NOT NULL constraint.

Primary Key


Each table can have one primary key, which uniquely identifies each row in a table and ensures that no duplicate rows exist. Use the following guidelines when selecting a primary key:
  • Whenever practical, use a column containing a sequence number. It is a simple way to satisfy all the other guidelines.
  • Minimize your use of composite primary keys. Although composite primary keys are allowed, they do not satisfy all of the other recommendations. For example, composite primary key values are long and cannot be assigned by sequence numbers.
  • Choose a column whose data values are unique, because the purpose of a primary key is to uniquely identify each row of the table.
  • Choose a column whose data values are never changed. A primary key value is only used to identify a row in the table, and its data should never be used for any other purpose. Therefore, primary key values should rarely or never be changed.
  • Choose a column that does not contain any nulls. A PRIMARY KEY constraint, by definition, does not allow any row to contain a null in any column that is part of the primary key.
  • Choose a column that is short and numeric. Short primary keys are easy to type. You can use sequence numbers to easily generate numeric primary keys.
For example in EMP table EMPNO column is a good candidate for PRIMARY KEY.

To define a primary key on a table give the following command.

Alter table emp add constraint emppk primary key (empno);

The above command will succeed only if the existing values are compliant i.e. no duplicates are there in EMPNO column. If EMPNO column contains any duplicate value then the above command fails and Oracle returns an error indicating of non compliant values.

Whenever you define a PRIMARY KEY oracle automatically creates a index on that column. If an Index already exist on that column then oracle uses that index only.

FOREIGN KEY


On whichever column you put FOREIGN KEY constraint then the values in that column must refer to existing values in the other table. A foreign key column can refer to primary key or unique key column of other tables. This Primary key and foreign key relationship is also known as PARENT-CHILD relationship i.e. the table which has Primary Key is known as PARENT table and the table which has Foreign key is known as CHILD table. This relationship is also known as REFERENTIAL INTEGRITY.

The following shows an example of parent child relationship.

Here EMPNO in attendance table is a foreign key referring to EMPNO of EMP table.

Alter table attendance add constraint empno_fk
     Foreign key (empno) references emp(empno);

The above command succeeds only if EMPNO column in ATTENDANCE table contains values which are existing in EMPNO column of EMP table. If any value is not existing then the above statement fails and Oracle returns an error indicating non compliant values.

Some points to remember for referential integrity

  • You cannot delete a parent record if any existing child record is there. If you have to first delete the child record before deleting the parent record. In the above example you cannot delete row of employee no. 101 since it’s child exist in the ATTENDANCE table. However, you can delete the row of employee no. 103 since no child record exist for this employee in ATTENDANCE table.  If you define the FOREIGN KEY with ON DELETE CASCADE option then you can delete the parent record and if any child record exist it will be automatically deleted.

To define a foreign key constraint with ON DELETE CASCADE option give the following command.

Alter table attendance add constraint empno_fk
          Foreign key (empno) references emp(empno)
              On delete cascade;                   

In Oracle 9i oracle has also given a new feature i.e. ON DELETE SET NULL . That is it sets the value for foreign key to null whenever the parent record is deleted.

To define a foreign key constraint with ON DELETE SET NULL option give the following command.

Alter table attendance add constraint empno_fk
          Foreign key (empno) references emp(empno)
              On delete set null;                  

  • You also cannot drop the parent table without first dropping the FOREIGN KEY constraint from attendance table. However if you give CASCADE CONSTRAINTS option in DROP TABLE statement then Oracle will automatically drop the references and then drops the table.







CHECK


Use the check constraint to validate values entered into a column. For example in the above ATTENDANCE table, the DAYS column should not contain any value more than 31. For this you can define a CHECK constraint as given below

Alter table attendance add constraint dayscheck
              Check (days <= 31);

Similarly if you  want the salaries entered in to SAL column of employee table should be between 1000 and 20000 then you can define a CHECK constraint on EMP table as follows

alter table emp add constraint sal_check
                   check (sal between 1000 and 20000);

You can define as  many check constraints on a single column as you want there is no restrictions on number of check constraints.


UNIQUE KEY


Unique Key constraint is same as primary key i.e. it does not accept duplicate values, except the following differences

·         There can be only on Primary key per table. Whereas, you can have as many Unique Keys per table as you want.

·         Primary key does not accept NULL values whereas, unique key columns can be left blank.

You can also refer to Unique key from Foreign key of other tables.

On which columns you should put Unique Key Constraint ?

It depends on situations, first situation is suppose you have already defined a Primary key constraint on one column and now you have another column which also should not contain any duplicate values, Since a table can have only one primary key,  you can define Unique Key constraint on these columns.  Second situation is when a column should not contain any duplicate value but it should also be left blank. For example in the EMP table IDNO is a good candidate for Unique Key because all the IDNO’s are unique but some employees might not have ID Card so you want to leave this column blank.

To define a UNIQUE KEY constraint on an existing table give the following command.

Alter table emp add constraint id_unique unique (idno);

Again the above command will execute successfully if IDNO column contains complying values otherwise you have to remove non complying values and then add the constraint.

DEFAULT

You can also specify the DEFAULT value for columns i.e. when user does not enter anything in that column then that column will have the default value. For example in EMP table suppose most of the employees are from Hyderabad, then you can put this as default value for CITY column. Then while inserting records if user doesn’t enter anything in the CITY column then the city column will have Hyderabad.

To define default value for columns create the table as given below

create table emp (empno number(5),
                   name varchar2(20),
                   sal number(10,2),
                   city varchar2(20) default ‘Hyd’);

Now, when user inserts record like this

insert into emp values (101,’Sami’,2000,’Bom’);

Then the city column will have value ‘Bom ‘. But when user inserts a record like this

Insert into emp (empno,name,sal) values (102,’Ashi’,4000);

Then the city column will have  value ‘Hyd’. Since it is the default.

Examples

Defining Constraints in CREATE TABLE statement.

create table emp (empno number(5) constraint emppk
                                  Primary key,
                   ename varchar2(20) constraint namenn
                                  not null,
                   sal  number(10,2) constraint salcheck
                        check (sal between 1000 and 20000)
                   idno varchar2(20) constraint id_unique
                             unique );

create table attendance (empno number(5) constraint empfk
                             references emp (empno)
                             on delete cascade,
                   month varchar2(10),
                   days number(2) constraint dayscheck
                             check (days <= 31) );

The name of the constraints are optional. If you don’t define the names then oracle generates the names randomly like ‘SYS_C1234’



Another way of defining constraint in CREATE TABLE statement.

create table emp (empno number(5),
                   ename varchar2(20) not null,
                   sal  number(10,2),
                   idno varchar2(20),
                      constraint emppk Primary key (empno)
  constraint salcheck
                        check (sal between 1000 and 20000)
                     constraint id_unique unique (idno) );

create table attendance (empno number(5),
                   month varchar2(10),
                   days number(2),
constraint empfk foreign key (empno)    
     references emp (empno)
       on delete cascade
constraint dayscheck
                        check (days <= 31) );

Deferring Constraint Checks

You may wish to defer constraint checks on UNIQUE and FOREIGN keys if the data you are working with has any of the following characteristics:
  • Tables are snapshots
  • Tables that contain a large amount of data being manipulated by another application, which may or may not return the data in the same order
  • Update cascade operations on foreign keys
When dealing with bulk data being manipulated by outside applications, you can defer checking constraints for validity until the end of a transaction.
Ensure Constraints Are Created Deferrable
After you have identified and selected the appropriate tables, make sure their FOREIGNUNIQUE and PRIMARY key constraints are created deferrable. You can do so by issuing a statement similar to the following:
create table attendance (empno number(5),
                   month varchar2(10),
                   days number(2),
constraint empfk foreign key (empno)    
     references emp (empno)
       on delete cascade
          DEFERRABLE
constraint dayscheck
                        check (days <= 31) );


Now give the following statement

Set constraint empfk deferred;
Update attendance set empno=104 where empno=102;
Insert into emp values (104,’Sami’,4000,’A123’);
Commit;
You can check for constraint violations before committing by issuing the SET CONSTRAINTS ALL IMMEDIATE statement just before issuing the COMMIT. If there are any problems with a constraint, this statement will fail and the constraint causing the error will be identified. If you commit while constraints are violated, the transaction will be rolled back and you will receive an error message.

 

ENABLING AND DISABLING CONSTRIANTS.

You can enable and disable constraints at any time.
To enable and disable constraints the syntax is

ALTER TABLE <TABLE_NAME> ENABLE/DISABLE
           CONSTRAINT  <CONSTRAINT_NAME>

For example to disable primary key of EMP table give the following statement

Alter table emp disable constraint emppk;

And to enable it again, give the following statement

Alter table emp enable constraint emppk;

Dropping constraints.


You can drop constraint by using ALTER TABLE DROP constraint statement.
For example to drop Unique constraint from emp table, give the following statement

Alter table emp drop constraint id_unique;

To drop primary key constraint from emp table.

Alter table emp drop constraint emppk;

The above statement will succeed only if the foreign key is first dropped otherwise you have to first drop the foreign key and then drop the primary key. If you want to drop primary key along with the foreign key in one statement then CASCADE CONSTRAINT statement like this

Alter table emp drop constraint emppk cascade;

Viewing Information about constraints


To see information about constraints, you can query the following data dictionary tables.

select * from user_constraints;
select * from user_cons_columns;