a

Friday 11 April 2014

Sekilas cara setting SoftPerfect Bandwidth Manager

Di komputer Client



Di komputer Server



Setelah program terinstall di kedua komputer, jalankan programnya yang ada di komputer Server. Lalu program akan muncul seperti ini :



Lalu masukkan IP Address komputer Client yang sudah terinstall softwarenya. Misalnya IP address client adalah 192.168.0.11, maka akan tampak seperti dibawah ini :



Setelah masuk, maka tampilan akan tampak seperti ini :



Nah, mari kita mulai managemen bandwidthnya. Pertama yang harus kita lakukan adalah memberikan akses yang tidak terbatas (bebas) kepada jaringan LAN, karena LAN digunakan untuk menyambungkan komputer kedalam suatu jaringan (misalnya mengcopy lagu dari komputer lain, mengeprint ke printer yang sudah di share, atau Billing). Karena itulah kita harus membuat akses LAN menjadi Unlimited. Caranya adalah sebagai berikut.

Klik tombol 'Add Rule', maka akan tampak seperti ini :



Untuk 'Rule Name' nya kita isi 'LAN', 'Direction' nya diisi 'Both', 'Transfer Rate Limit' diisi 'Unlimited', 'Protocol' kita pilih 'TCP dan UDP', dan untuk 'Interface' nya kita pilih 'Any Interface'. Lalu pilih tab 'Source' dan pilih 'Source Address' nya 'Localhost'.



Dan tab 'Destination' nya kita pilih 'Whole IP range' dan kita isi sesuai dengan LAN range yang kita miliki. Misalnya Range IP kita adalah 192.168.0.1 sampai 192.168.0.255, seperti dibawah ini :



Setelah itu tekan 'OK'. Dengan begitu berarti kita sudah memberi akses full control pada jaringan LAN. Sekarang kita atur managemen bandwidth untuk Internet Upload dan Internet Download. Kita mulai dengan Internet Upload nya. Tekan tombol 'Add Rule' lalu isi seperti dibawah ini :



Untuk nilai 'Transfer Rate Limit' dapat kita atur sesuai dengan kebutuhan kita. Misalnya kita kehendaki kecepatan maksimal upload sebesar 2,5 Kbps, maka kita masukkan nilainya sebesar 2500. Lalu untuk Tab 'Source' nya kita pilih 'Localhost' sedangkan Tab 'Destination' nya kita pilih 'Any IP Address'. Lalu tekan 'OK'.

Sekarang kita kecepatan maksimal downloadnya. Langkah-langkahnya sama seperti pada proses membatasi kecepatan uploadnya, hanya saja ada beberapa hal yang diganti. 'Rule Name' nya kita isi 'Internet Download', 'Direction' kita pilih 'Incoming', 'Transfer Rate Limit' nya kita isi 5400 yang berarti 5,4 Kbps (nilai ini bisa kita ubah-ubah lagi sesuai dengan keinginan kita), Tab 'Source' kita pilih 'Any IP Address' dan Tab 'Destination' kita pilih 'Localhost'. Ini berarti kebalikan dari proses upload yang tadi. Lalu tekan OK. Jika semua langkah-langkah tersebut diatas Anda ikuti dengan baik, maka akan tampak seperti dibawah ini :



Jika sudah benar, maka Anda telah berhasil membagi bandwidth komputer Client Anda, sehingga tidak terjadi rebutan dan monopoli antar pemakai bandwidth. Untuk instalasi ke komputer Client yang lain, caranya sama, dan ingat, cukup install 'System Services' nya saja di komputer klien, dan cukup install 'GUI Frontend' saja di komputer Servernya. Nah, berarti untuk membagi bandwidth tidak harus pake mikrotik dan mengorbankan satu unit komputer lagi bukan?
Read More >>

Tuesday 8 April 2014

Materi Stored Procedures, Functions dan Trigger

 
Jika tidak mau membaca bisa langsung download versi doc dan pdf .
Versi Doc Download DISINI
Versi PDF Download DISINI

Setiap database mempunyai fasilitas yang memungkinkan aplikasi-aplikasi
untuk menyimpan dan memanipulasi data. Selain itu, database juga memberikan
fasilitas lain yang lebih spesifik yang dipakai untuk menjamin konsistensi hubungan
antar tabel dan integritas data di dalam database. Referential integrity merupakan
sebuah mekanisme untuk mencegah putusnya hubungan master/detail. Jika user
mencoba menghapus sebuah field pada tabel master sehingga record di tabel detail
menjadi yatim (tidak mempunyai induk), referential integrity akan mencegahnya.
Trigger, Stored Procedure/Function, dan View merupakan komponen dan fitur
database, yang dengan keunikan fungsi masing-masing dapat dimanfaatkan untuk
menjaga, mengelola, dan membantu kinerja database engineer dalam upaya
terjaminnya integritas sebuah database.




Stored Prosedure

Adalah suatu subprogram atau sekelompok statemen Transact-SQL, yang tersimpan dan menyatu dalam suatu database. Stored procedure dibuat dalam SQL Server, bukan di computer client, dan akan menyatu dengan suatu database dalam server.
Stored procedure dapat diakses program aplikasi melalui object-object tertentu pada program aplikasi masing-masing. Sebagai contoh, pada Visual Basic dan Delphi, stored procedure dapat diakses pada computer client melalui object Adodc.
Saat dieksekudi (dipanggil) dari program aplikasi seperti VB dan Delphi maka baris-baris dalam stored procedure akan dilaksanakan di komputer server dan hasilnya dikirimkan ke computer client. Dengan demikian akan terjadi pembagian kerja antara client dan server serta aktivitas lalu lintas jaringan terkurangi. Akibatnya untuk kerja client-server meningkat dan semakin efisien.
Stored procedure tersimpan dalam database dalam bentuk kode yang sudah terkompilasi sehingga prosesnya menjadi lebih cepat.

Kemampuan utama SQL Server berada pada Store Procedure dan Fungsi (Fungsi hanya terdapat pada SQL Server 2000)
Dengan adanya Store Procedure, maka program SQL yang telah kita buat :

Dapat digunakan kapanpun

Seperti halnya pembuatan prosedur pada C++ / Pascal / Java atau pemrograman yang lain, apabila pembuatan program bersifat modular (dibuat kecil untuk setiap maksud/tujuan), akan lebih baik apabila pemrograman tesebut menggunakan banyak prosedur. Dengan dibuat terpisah, kapanpun diinginkan, hanya tinggal memanggil program tersebut.

Lebih cepat dan efisien

Untuk program yang besar, pembuatan program Server Side, terasa lebih mudah dibandingkan Client Side. Dengan Server Side, program lebih bersifat Netral terhadap semua aplikasi. Disisi Programer, ia tidak perlu mengetahui terlalu mendalam terhadap suatu program aplikasi seperti VB, Delphi, Java , C++ Builder, PHP, ASP, J2ME, WAP, SMS dsb. karena tugas–tugas tersebut sebenarnya dapat dilakukan oleh Server (dalam hal ini SQL Server) VB, Delphi, Java , C++ Builder PHP, ASP, J2ME, WAP, SMS dsb tersebut hanyalah User interface/tampilan belaka, yang hanya berfungsi untuk menampilkan data, memasukkan data, serta memberikan parameter-parameter yang dibutuhkan oleh server untuk menghapus , mengubah, skeduling, backup dan sebagainya. Sedangkan program yang sesungguhnya berada pada Server tersebut.

Mudah dibuat dan dirawat karena kecil tapi ‘Power Full’

Kecil dan PowerFull, akan diperlihatkan pada beberapa contoh berikutnya.

Sintak SQL dalam Store Procedure


CREATE PROCEDURE nama_stored_procedurenya @parameter1 tipe_data, @parameter2 2 tipe_data AS isi procedurenya.
Penjelasan
1. nama stored_procedure tidak boleh sama dengan nama fungsi internal, misal CREATE PROCEDURE SUM, tidak boleh ada spasi, tapi bisa menggunakan karakter _
2. Untuk membuat stored procedure gunakan perintah CREATE, untuk mengedit gunakan ALTER , untuk menghapus gunakan DROP.
perintah CREATE, ALTER, DROP dapat digunakan juga untuk membuat TABLE, VIEW, TRIGGER, FUNCTION, misal CREATE VIEW, ALTER FUNCTION,dsb
3. SQL Server mengenali parameter/variabel karena ada tanda @, contoh : @nama_barang char(50), @tanggal datetime, dsb
4. Untuk deklarasi parameter di Stored Procedure gunakan DECLARE
contoh : DECLARE @StartDate datetime, @EndDate datetime, dst..
5. Untuk memasukkan nilai ke sebuah parameter, gunakan SET atau SELECT, contoh :
SET @nama='Itanium' 
SET @Web='Klik-kanan' (perintah SET hanya bisa untuk 1 variabel saja)
SELECT @nama='Itanium', @Web='Klik-kanan' (perintah SELECT bisa digunakan untuk banyak variabel)

6. Untuk mengambil nilai dari sebuah field dari tabel ke dalam variabel dapat juga menggunakan SET / SELECT , misal : SET @nama= SELECT nama FROM user WHERE login='Itanium') selalu gunakan anda(),perintah ini valid bila data yang ditemukan hanya 1, bila lebih, maka varibale @nama tidak akan ada nilai nya.
7. Untuk mengambil data dalam jumlah banyak, misal seperti array atau StringList, gunakan temporary tabel.untuk pembahasan lebih lengkap, tunggu posting berikut nya.
Contoh pembuatan Stored Procedure. Kita akan membuat sebuah Stored procedure yang berfungsi untuk menggantikan perintah SELECT yang rumit, misal untuk laporan stok barang.
3.      Contoh Store Procedure.
Dalam contoh ini ada 3 tabel yang digunakan :

1. Barang (IDBarang, NamaBarang, IDSatuan).

2. Satuan (IDSatuan, Satuan).

3. StockBarang (Tanggal, IDBarang, SAwal,Masuk,Keluar,SAkhir) laporan yang diminta adalah untuk menampilkan stock sesuai dengan periode tertentu (bisa per hari, bisa juga per minggu, tergantung inputan StartDate dan EndDate). SQL untuk pembuatan Stored Procedure nya :
CREATE PROCEDURE LapStockBarang1 @StartDate varchar(10), @EndDate varchar(10) AS

DECLARE @tgl1 datetime, @tgl2 datetime 

**(variabel StartDate tidak bisa langsung datetime karena perintah EXEC LapStockBarang dalam bentuk string)

CREATE TABLE #TStock (IDBarang varchar(5), SAwal real, Masuk real, Keluar real)

CREATE TABLE #TStock2 (IDBarang varchar(5), SAwal real, Masuk real, Keluar real, SAkhir real)

** buat temporary table , tanda # menandai bahwa tabel ini hanya akan ada saat proses stored procedure.



SELECT@tgl1=CONVERT(datetime,@StartDate,103),@tgl2=CONVERT(datetime,@EndDate,103)

** convert varchar(string) ke tipe datetime, gunakan perintah CONVERT(tipe,variabel,format). Format 103 adalah format dd/mm/yyyy

INSERT INTO #TStock (IDBarang, SAwal)

SELECT (IDBarang, SAwal)

FROM StockBarang 

WHERE tanggal= @tgl1

** masukkan saldo awal pada tanggal bulan itu

INSERT INTO #TStock (IDBarang, Masuk, Keluar)

SELECT IDBarang, SUM(Masuk), SUM(Keluar)

FROM StockBarang

WHERE tanggal BETWEEN @tgl1 AND @tgl2

GROUP BY IDBarang

** masukkan JUMLAH dari masuk dan keluar

INSERT INTO #TStock2 (IDBarang, SAwal, Masuk, Keluar)

SELECT IDBarang, SUM(SAwal), SUM(Masuk), SUM(Keluar)

FROM #TStock

GROUP BY IDBarang

** sekarang gabungkan data2 nya

UPDATE #TStock2 SET SAkhir= SAwal + Masuk - Keluar

SELECT t.*, b.NamaBarang, s.Satuan

FROM #TStock2 AS t, Barang AS b, Satuan AS s

WHERE t.IDBarang=b.IDBarang

ND b.IDSatuan=s.IDSatuan

ORDER BY b.IDBarang




Trigger

Trigger adalah bentuk khusud dari suatu Stored Procedure yang dilaksanakan secara otomatis pada saat atau sesudah modifikasi data (UPDATE, INSERT, dan DELETE). Trigger dipakai untuk menjaga integritas data dan mengimplementasikan aturan bisnis yang kompleks. Trigger dibuat dengan memakai bahasa Transact-SQL atau SQL Enterprise Manager. Tugas-tugas manajemen Trigger meliputi mengubah, mengganti nama, menampilkan, menghapus dan membuat Trigger tidak aktif.
Trigger memakai dua tabel maya yaitu Inserted dan Deleted untuk mendeteksi modifikasi data. Untuk memprogram Trigger, Anda harus mendalami kedua tabel tersebut dan bahasa Transact-SQL. Untuk menjaga integritas data, Anda dapat memakai beberapa alternatif, yaitu Trigger atau Konstrain (Rule). Anda juga dapat memakai kunci utama dan kunci unik untuk mengidentifikasi baris dalam sebuah tabel secara unik. Anda juga dapat memakai nilai default dan domain untuk membatasi nilai-nilai yang diperbolehkan pada sebuah kolom. Referential Integrity dipakai untuk menjamin keabsahan hubungan antar tabel. Sebaliknya Anda memakai konstrain-konstrain tersebut sebelum memilih Trigger, karena Trigger dapat melakukan proses yang lebih rumit tetapi beban sistem lebih berat.

Pakailah Trigger untuk kasus-kasus berikut:
- Jika pemakaian cara deklaratif tidak dapat memenuhi kebutuhan yang diperlukan. Misalnya, buatlah Trigger untuk mengubah sebuah nilai numerik dalam tabel jika sebuah record di dalam tabel tersebut dihapus.
- Sebuah perubahan harus mengubah tabel-tabel lain yang terhubung. Misalnya jika data order ditambahkan, tabel lain yang menyimpan data stok akan berubah.
- Jika database didenormalisasi dan memerlukan cara otomasi untuk mengubah data redundan yang ada dibeberapa tabel.
- Jika sebuah nilai pada sebuah tabel harus divalidasi dengan data pada tabel lain.
- Jika diperlukan pesan kesalahan dan penangganan kesalahan secara khusus.
Kemampuan-kemampuan yang dimiliki Trigger:
- Trigger dapat menjaga referential integrity dengan melakukan perubahan data atau penghapusan kunci tamu (Foreign Key) di dalam database.
- Trigger dapat bekerja pada beberapa kolom dalam sebuah database bahkan pada objek di luar database. Anda juga dapat memakai Trigger pada View.
- Sebuah Trigger dapat melakukan beberapa aksi dan Trigger dapat diaktifkan oleh beberapa event. Misalnya Anda membuat sebuah Trigger yang akan diaktifkan jika terjadi proses INSERT, UPDATE atau DELETE. Dengan perintah Transact-SQL, Anda dapat mendefinisikan aturan bisnis untuk tiap event.
Selain kemampuan-kemampuan tersebut, Trigger juga mempunyai keterbatasan. Trigger tidak dapat dibuat pada sebuah tabel sistem atau temporer, meskipun perintah di dalama Trigger mengacu ke tabel sistem atau tabel temporer.
Trigger tidak dapat diaktifkan secara manual, tetapi diaktifkan secara otomatis jika terjadi event INSERT, UPDATE, dan DELETE. Dalam Trigger selalu berisi satu atau beberapa event tersebut sebelum perintah Transact-SQL didefinisikan. Tipe-tipe Trigger sesuai dengan event-nya. Misalnya Anda membuat sebuah Trigger UPDATE sehingga jika terjadi pengubahan data pada sebuah tabel, Trigger tersebut dapat diaktifkan. Sebuah Trigger dapat diaktifkan oleh beberapa event.
Pada saat terjadi INSERT atau UPDATE yang diaktifkan Trigger, Trigger menyimpan data baru atau data hasil modifikasi di dalam sebuah tabel yang bernama INSERTED. Jika terjadi DELETE yang mengaktifkan Trigger, data yang dihapus akan tersimpan ditabel yang bernama Deleted. Tabel tersebut berada dimemori dan dibaca oleh Trigger dengan perintah-perintah Transact-SQL. Kemampuan ini penting anda ketahui, karena pada umumnya Trigger membandingkan data dalam tabel Inserted dan Deleted dengan data baru sebelum proses Commit. Dengan kedua tabel tersebut, Trigger dapat melakukan proses Roll-Back.

CONTOH



Syntax
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
biar lebih mengerti, kita mulai dengan contoh.. jadi kita butuh membuat 2 tabel tersebut di SQL server 2005, script sebagai berikut
create table BARANG
(
BAR_ID int not null,
BAR_NAMA varchar(255) not null,
BAR_STOCK int null
default 0,
constraint PK_BARANG primary key (BAR_ID)
)
go

create table PEMBELIAN
(
PEM_ID int not null,
BAR_ID int null ,
PEM_JUMLAH int null ,
constraint PK_PEMBELIAN primary key (PEM_ID)
)
go

create index RELATION_FK on PEMBELIAN (BAR_ID)
go

alter table PEMBELIAN
add constraint FK_PEMBELIA_RELATION_BARANG foreign key (BAR_ID)
references BARANG (BAR_ID)
go

INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (1,’AQUA’);
INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (2,’TOTAL’);
INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (3,’AQUADES’); 


setelah anda menjalankan script tersebut, maka anda akan mempunyai 2 tabel, yaitu tabel barang dengan isi 3 buah data, dan tabel pembelian dengan data masih kosong.3 data di tabel barang tersebut secara defaut stocknya adalah 0
kemudian saatnya kita buat trigger sehingga ketika kita menambahkan data di tabel pembelian dengan jumlah pembelian barang tertentu, maka stock di tabel barang akan bertambah sesuai dengan barang yg dibeli, syntac trigger tersebut adalah sebagai berikut

create trigger tambahStockbarang on pembelian
for insert
as
update b set b.bar_stock = b.bar_stock + i.pem_jumlah
from barang b join inserted i on b.bar_id = i.bar_id

arti dari kode tersebut adalah sebagai berikut
create trigger tambahStockbarang on pembelian
membuat trigger dengan nama tambahStockBarang dimana trigger tersebut akan terpicu jika ada perubahan di tabel pembelian
for insert
as

perubahan tersebut adalah penambahan(insert) di tabel pembelian , selain penambahan bisa juga diisi dengan perubahan(update) atau penghapusan(delete)
for disini juga bisa rubah isinya jadi after atau instead of . perbedaanya adalah waktu trigger dikerjakan, biasaya yg sering digunakan adalah for
update b set b.bar_stock = b.bar_stock + i.pem_jumlah
from barang b join inserted i on b.bar_id = i.bar_id

ini adalah kode yg dikerjakan ketika kejadian trigger terpicu, kode diatas bertujuan merubah nilai bar_stock pada tabel barang dengan menambahkan nilai bar_stock yg sekarang dengan jumlah barang yg dibeli (pem_jumlah). perhatikan disini ada tabel yang bernama inserted, tabel tersebut merupakan tabel logika yg digunakan untuk menyimpan data yang memicu terjadinya trigger, dalam hal ini nilai data yg dimasukkan(insert) kedalam tabel pembelian, selain inserted, tabel logika lainnya adalah deleted, tabel logika ini digunakan untuk trigger yg terpicu dengan kejadian delete
kita coba masukkan kode berikut:

INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (1,1,4);
INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (2,3,2);
INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (3,1,1);

arti kode tersebut
pem_id haruslah beda karena merupakan primary key
beli aqua(kode bar_id=1) sebanyak 4
beli aquades (kode bar_id=3) sebanyak 2
beli aqua lagi sebanyak 1
sehingga secara keseluruhan yg dibeli aqua sebanyak 5 dan aquades sebanyak 2
karena default nilai stock barang adalah 0, maka seharusnya nilai aqua 5 dan aquades 2 adalah jumlah stock barang sekarang ini
dan kita lihat data barang…




Function




Function adalah suatu blok PL/SQL yang memiliki konsep sama dengan procedure, hanya saja pada function terdapat pengembalian nilai (return value).
Karena function dapat mengembalikan sebuah nilai, function dapat diakses seperti layaknya sebuah variabel biasa.

contoh fungsi untuk mendapatkan volume balok
mysql> create function volume (panjang int, lebar int, tinggi int) returns int d
eterministic
-> begin
-> declare volum int;
-> set volum = panjang * lebar * tinggi;
-> return volum;
-> end$
Query OK, 0 rows affected (0.00 sec)

untuk melihat hasil dari fungsi yang dibuat
mysql> select volume(12, 13, 2)$
+-------------------+
| volume(12, 13, 2) |
+-------------------+
| 312 |
+-------------------+
1 row in set (0.00 sec)

contoh lain
CREATE TABLE `data_siswa`.`tbl_siswa` (
`nis` char(10) NOT NULL,
`nama` varchar(255) NOT NULL,
`kelas` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1


function untuk mengembalikan jumlah data dari setiap kelas

DELIMITER $$
CREATE FUNCTION sf_tampil_siswa_kelas (p_kelas int) RETURNS INT DETERMINISTIC

BEGIN
DECLARE jml INT;
SELECT COUNT(*) AS jml_kelas INTO jml FROM tb_siswa WHERE kelas = p_kelas;
RETURN jml;
END$$

DELIMITER;
 * DELIMITER = adalah untuk memberi tahu kepada myql soal delimiter yang digunakan, secara default menggunakan ; jadi bila ada tanda ; mysql akan mengartikan akhir dari statement, pada contoh di atas delimeter yang digunakan $$ jadi akhir statementnya adalah $$

  * CREATE FUNCTION = adalah header untuk membuat function

  * RETURNS = adalah untuk menentukan tipe data yang di return-kan oleh function

  * DETERMINISTIC/ NOT DETERMINISTIC = adalah untuk menentukan yang bisa menggunakan function ini adalah user pembuatnya saja (determinisric) atau user siapa saja (not determinisric).

  * BEGIN END = adalah body dari function jadi semua SQL nya di tulis disini.

contoh pemanggilannya seperiti dibawah ini:
select sf_tampil_siswa_kelas("2");
sebuah function hanya bisa memberikan return berupa nilai saja dan tidak bisa berupa resutlset
untuk penulisan DETEMINISTIC bisa ditulis secara implisit dengan memberikan setting global pada mysql dan secara default benilai NOT DETEMINISTIC , caranya dibawah ini:
SET GLOBAL log_bin_trust_function_creators = 1;
Read More >>

ENHANCED ENTITY RELATIONS DIAGRAM (EERD)

 
Jika tidak mau membaca bisa langsung download versi doc dan pdf .
Versi Doc Download DISINI
Versi PDF Download DISINI
 
 
 ENHANCED ENTITY RELATIONS DIAGRAM (EERD)
            Model EERD berisi seluruh konsep ERD ditambah dengan konsep konsep yang berhubungan yaitu specialization dan generalization, model EERD menekankan pada superclass/subclass relationship yang  merupakan  hubungan antara superclass dan subclassnya.
            Berikut ini adalah konsep-konsep EERD :
1.      Subclass
Subset dari suatu entity yang dikelompokkan dalam pengertian tertentu yang disajikan secara eksplisit  dengan kata lain subclass merupakan suatu entity  yang merupakan anggota dari superclass tapi perannya berbeda.Contoh : Entitas PEGAWAI mempunyai beberapa subclass seperti : SEKRETARIS, TEKNISI, SALES (gb.1)
2.      Superclass
Entity yang merupakan induk dari subclass-subclass atau merupakan suatu entity yang mempunyai subclass-subclass yang berbeda tapi harus dipresentasikan dalam model data.Contoh : Subclass SEKRETARIS, TEKNISI, SALES mempunyai superclass PEGAWAI (gb.1)
3.      Specialization
Proses pemecahan entity menjadi subclass-subclass beserta atribut-atributnya atau merupakan proses pendefInisian suatu himpunan subclass dari suatu entity berdasarkan karasteristik tertentu. Contoh : Spesialisasi dari PEGAWAI berdasarkan tipe pekerjaan (gb. 2)
4.      Generalization
Proses penggabungan subclass-subclass menjadi suatu entitas yang lebih umum.Contoh : Generalisasi dari MOBIL dan TRUK menjadi KENDARAAN
 
5.      Attribut Inheritance
Merupakan pewarisan attribute dari superclassnya. Entity yang merupakan anggota dari subclass mewarisi semua atribut dari entity superclassnya.
6.      Subclass / Superclass Relationship
a.       Relationship yang menghubungkan subclass dan superclassnya.
b.      Bila suatu entity yang merupakan anggota dari suatu subclass, maka ia juga merupakan anggota dari superclass.
c.        Bila suatu entity merupakan anggota dari suatu superclass maka ia belum tentu merupakan anggota dari subclass.

Notasi specialization dalam EER adalah sebagai berikut :
1.      Disjoint constraint, Subclass-subclass  dari spesialisasi saling disjoint,artinya entity merupakan anggota dari salah satu subclass. Disjoint Constraint dilambangkan dengan “d”.
2.      Non-Disjoint constraint (overlapping), subclass-subclass dari spesialisasi tidak saling disjoint, artinya entity mungkin anggota lebih dari satu subclass. Dilambangkan dengan “o”

Berikut ini juga istilah-istilah yang didapatkan pada EERD :
1.      Total Specialization constraintsetiap entity di dalam superclass harus merupakan anggota dari salah satu subclass.
2.      Partial Specialization Constraint, setiap entity didalam superclass dapat merupakan anggota dari subclass-sublass yang didefenisikan.
3.      Specialization Hierarchy :
Spesialisasi bertingkat dimana setiap subclass berpartisipasi didalam satu kelas / subclass relationship
4.      Specialization Lattice :
Spesialisasi bertingkat dimana suatu subclass dapat berpartisipasi didalam beberapa class / subclass relationship.
5.      Shared – Subclass :
Subclass yang mempunyai lebih dari satu superclass.
            Salah satu contoh yang bisa diambil untuk melihat penggunaan EERD adalah pada perancangan database universitas.
Read More >>