Tuesday, November 19, 2013

Masih Seperti Mimpi :')

Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...... :'(
pengen teriak sekencang-kencangnya, pengen tanya sama Tuhan kenapa harus Mamaku :'(

Hari itu bagaikan mimpi buruk dalam hidupku. Mimpi yang teramat-amat sangat BURUK!
Tuhan mengambil sosok yang paling aku cintai di dunia ini. Mama! Adilkah? Tidak adil bagiku tapi adil bagi mama :)

Aku masih butuh mama. Masih mau mama lihat aku waktu wisuda nanti :') Tapi Tuhan adil untuk mama. 1 tahun lebih Ia berjuang melawan penyakit yang Ia derita. Menahan sakit, Mengeluarkan banyak biaya asalkan Ia sembuh dan bersama-sama dengan keluarga. Tak pernah Ia keluhkan rasa sakitnya pada kami, tak pernah Ia bersungut. Dia selalu membuat orang di sekitarnya tertawa,  senang dan bahagia.

Maaaaaaaaa, aku rindu. Rindu pelukan mama, belaian mama, canda mama, dan semua tentang mama. Tapi hidup harus tetap berjalan, aku tidak bisa menangis dan terpuruk seperti ini. Yang mama mau aku harus kuat dan fokus kuliah.

Huuuuuh. Mencoba kuat tapi susah ma.
semoga mama baik-baik di sana :')
I love you so much much much Mama :*

Di pantai natsepa
Ini waktu temani mama di RS
Ini lagi nunggu dokter
Ini juga. lagi BBMan :D


Ini waktu temani mama chemo :')

Ini waktu jalan-jalan

Di pesawat. Pulang ke Indo




Hari terakhir liat mama :')

Monday, November 18, 2013

Kubus 3D


Hai sahabat blogger...
Yang pada ingin mendalami ilmu grafkom tentang 3D disini ada contohnya nih..
Membuat kubus 3D dimana semua sisinya bisa kita sispkan foto kita masing-masing...

Gak susah kok...!!! Tinggal di copas ajah codingnya di bawah ini...

Tapi ingat yah harus dibuat dua class (class tekstur & class imageloader) dalam projectnya...  Dan jangan lupa foto-foto kalian juga harus disiapkan dengan ukuran yang harus sama persis yah...!!! Gambarnya harus dalam format bitmap (.bmp) dan ukurannya juga gak usah terlalu besar-besar yah takutnya programnya error lagi... Saran dari kita ukurannya kira 400-an x 300-an gitulah atau boleh lebih-lebih dikit juga gak apa-apa kok...
Ini coding buat kelas tekstur.cpp-nya...
#include <iostream>
#include <stdlib.h>
#ifdef __APPLE__
#include <OpenGL/OpenGL.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include "imageloader.h"

using namespace std;

const float BOX_SIZE = 7.0f; //Panjang tiap sisi kubus
float _angle = 0;            //Rotasi terhadap box
GLuint _textureId;           //ID OpenGL untuk tekstur
GLuint _textureId2;           //ID OpenGL untuk tekstur
GLuint _textureId3;           //ID OpenGL untuk tekstur
GLuint _textureId4;           //ID OpenGL untuk tekstur
GLuint _textureId5;           //ID OpenGL untuk tekstur
GLuint _textureId6;           //ID OpenGL untuk tekstur
void handleKeypress(unsigned char key, int x, int y) {
    switch (key) {
        case 27:             //Tekan Escape untuk EXIT
            exit(0);
    }
}

//Membuat gambar menjadi tekstur kemudian berikan ID pada tekstur
GLuint loadTexture(Image* image) {
    GLuint textureId;
    glGenTextures(1, &textureId);
    glBindTexture(GL_TEXTURE_2D, textureId);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height, 0, GL_RGB, GL_UNSIGNED_BYTE, image->pixels);
    return textureId;
}

void initRendering() {
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
   
    Image* image1 = loadBMP("ilo1.bmp");
    _textureId = loadTexture(image1);
    delete image1;
   
    Image* image2 = loadBMP("yoga1.bmp");
    _textureId2 = loadTexture(image2);
    delete image2;
   
    Image* image3 = loadBMP("vito1.bmp");
    _textureId3 = loadTexture(image3);
    delete image3;
   
    Image* image4 = loadBMP("ilo2.bmp");
    _textureId4 = loadTexture(image4);
    delete image4;
   
    Image* image5 = loadBMP("yoga2.bmp");
    _textureId5 = loadTexture(image5);
    delete image5;
   
    Image* image6 = loadBMP("vito2.bmp");
    _textureId6 = loadTexture(image6);
    delete image6;
}

void handleResize(int w, int h) {
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0, (float)w / (float)h, 1.0, 200.0);
}

void drawScene() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
   
    glTranslatef(0.0f, 0.0f, -20.0f);
   
    GLfloat ambientLight[] = {0.3f, 0.3f, 0.3f, 1.0f};
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);
   
    GLfloat lightColor[] = {0.7f, 0.7f, 0.7f, 1.0f};
    GLfloat lightPos[] = {-2 * BOX_SIZE, BOX_SIZE, 4 * BOX_SIZE, 1.0f};
    glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor);
    glLightfv(GL_LIGHT0, GL_POSITION, lightPos);   
    glRotatef(-_angle, 50.0f, 50.0f, 2.0f);
   
    //Sisi atas
    glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, _textureId);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glColor3f(1.0f, 1.0f, 1.0f);
   
    glBegin(GL_QUADS);   
        glTexCoord2f(0.0f, 0.0f);
        glNormal3f(0.0, 1.0f, 0.0f);
        glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);       
    glEnd();
   
    //Sisi bawah   
    glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, _textureId2);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glColor3f(1.0f, 1.0f, 1.0f);
       
    glBegin(GL_QUADS);   
        glTexCoord2f(0.0f, 0.0f);
        glNormal3f(0.0, -1.0f, 0.0f);
        glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glEnd();
   
    //Sisi kiri
    glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, _textureId3);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
   
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);   
        glNormal3f(-1.0, 0.0f, 0.0f);
        glTexCoord2f(0.0f, 0.0f);
        glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
    glEnd();
   
    //Sisi kanan
    glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, _textureId4);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
       
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);   
        glNormal3f(1.0, 0.0f, 0.0f);
        glTexCoord2f(0.0f, 0.0f);
        glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glEnd();
   
    //Sisi depan
    glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, _textureId5);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
       
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);   
        glNormal3f(0.0, 0.0f, 1.0f);
        glTexCoord2f(0.0f, 0.0f);
        glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
    glEnd();
   
    //Sisi belakang
    glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, _textureId6);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
       
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
        glNormal3f(0.0, 0.0f, -1.0f);
        glTexCoord2f(0.0f, 0.0f);
        glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
    glEnd();
   
    glDisable(GL_TEXTURE_2D);
    glutSwapBuffers();
}

//Panggil setiap 25ms
void update(int value) {
    _angle += 1.0f;
    if (_angle > 360) {
        _angle -= 360;
    }
    glutPostRedisplay();
    glutTimerFunc(25, update, 0);
}

int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(400, 400);
   
    glutCreateWindow("ilo yoga vito");
    initRendering();
   
    glutDisplayFunc(drawScene);
    glutKeyboardFunc(handleKeypress);
    glutReshapeFunc(handleResize);
    glutTimerFunc(25, update, 0);
   
    glutMainLoop();
    return 0;
}



Ini buat kelas imageloader.cpp-nya...

#include <assert.h>
#include <fstream>
#include "imageloader.h"

using namespace std;

Image::Image(char* ps, int w, int h) : pixels(ps), width(w), height(h) {
   
}

Image::~Image() {
    delete[] pixels;
}

namespace {
    //Konversi 4 buah karakter ke integer, menggunakan bentuk little-endian
    int toInt(const char* bytes) {
        return (int)(((unsigned char)bytes[3] << 24) |
                     ((unsigned char)bytes[2] << 16) |
                     ((unsigned char)bytes[1] << 8) |
                     (unsigned char)bytes[0]);
    }
   
    //Konversi 2 buah karakter ke integer, menggunakan bentuk little-endian
    short toShort(const char* bytes) {
        return (short)(((unsigned char)bytes[1] << 8) |
                       (unsigned char)bytes[0]);
    }
   
    //Membaca 4 byte selanjutnya sebagai integer, menggunakan bentuk little-endian
    int readInt(ifstream &input) {
        char buffer[4];
        input.read(buffer, 4);
        return toInt(buffer);
    }
   
    short readShort(ifstream &input) {
        char buffer[2];
        input.read(buffer, 2);
        return toShort(buffer);
    }
   
    template<class T>
    class auto_array {
        private:
            T* array;
            mutable bool isReleased;
        public:
            explicit auto_array(T* array_ = NULL) :
                array(array_), isReleased(false) {
            }
           
            auto_array(const auto_array<T> &aarray) {
                array = aarray.array;
                isReleased = aarray.isReleased;
                aarray.isReleased = true;
            }
           
            ~auto_array() {
                if (!isReleased && array != NULL) {
                    delete[] array;
                }
            }
           
            T* get() const {
                return array;
            }
           
            T &operator*() const {
                return *array;
            }
           
            void operator=(const auto_array<T> &aarray) {
                if (!isReleased && array != NULL) {
                    delete[] array;
                }
                array = aarray.array;
                isReleased = aarray.isReleased;
                aarray.isReleased = true;
            }
           
            T* operator->() const {
                return array;
            }
           
            T* release() {
                isReleased = true;
                return array;
            }
           
            void reset(T* array_ = NULL) {
                if (!isReleased && array != NULL) {
                    delete[] array;
                }
                array = array_;
            }
           
            T* operator+(int i) {
                return array + i;
            }
           
            T &operator[](int i) {
                return array[i];
            }
    };
}

Image* loadBMP(const char* filename) {
    ifstream input;
    input.open(filename, ifstream::binary);
    assert(!input.fail() || !"File tidak ditemukan!!!");
    char buffer[2];
    input.read(buffer, 2);
    assert(buffer[0] == 'B' && buffer[1] == 'M' || !"Bukan file bitmap!!!");
    input.ignore(8);
    int dataOffset = readInt(input);
   
    int headerSize = readInt(input);
    int width;
    int height;
    switch(headerSize) {
        case 40:
            width = readInt(input);
            height = readInt(input);
            input.ignore(2);
            assert(readShort(input) == 24 || !"Gambar tidak 24 bits per pixel!");
            assert(readShort(input) == 0 || !"Gambar dikompres!");
            break;
        case 12:
            width = readShort(input);
            height = readShort(input);
            input.ignore(2);
            assert(readShort(input) == 24 || !"Gambar tidak 24 bits per pixel!");
            break;
        case 64:
            assert(!"Tidak dapat mengambil OS/2 V2 bitmaps");
            break;
        case 108:
            assert(!"Tidak dapat mengambil Windows V4 bitmaps");
            break;
        case 124:
            assert(!"Tidak dapat mengambil Windows V5 bitmaps");
            break;
        default:
            assert(!"Format bitmap ini tidak diketahui!");
    }
   
    //Membaca data
    int bytesPerRow = ((width * 3 + 3) / 4) * 4 - (width * 3 % 4);
    int size = bytesPerRow * height;
    auto_array<char> pixels(new char[size]);
    input.seekg(dataOffset, ios_base::beg);
    input.read(pixels.get(), size);
   
    //Mengambil data yang mempunyai format benar
    auto_array<char> pixels2(new char[width * height * 3]);
    for(int y = 0; y < height; y++) {
        for(int x = 0; x < width; x++) {
            for(int c = 0; c < 3; c++) {
                pixels2[3 * (width * y + x) + c] =
                    pixels[bytesPerRow * y + 3 * x + (2 - c)];
            }
        }
    }
   
    input.close();
    return new Image(pixels2.release(), width, height);
}


nah diatas kan ada 2 class (teksture & imageloader) class teksture itu fungsinya untuk mengatur putaran pada kubusnya, bentuk kubusnya, serta jendela tampilan programnya
kalau class imageloader itu agar kita dapat memuat gambar yang kita inginkan kedadlam setiap sisi kubus 3D kita

selain itu gambar yang kita inginkan harus diletakan pada folder tempat project kita disimpan..

Sekian dan terimaksih. selamat mencoba :)

Thursday, March 14, 2013

PARER Normalisasi Basis Data


A.   Definisi
Normalisasi adalah suatu teknik untuk mengorganisasi data ke dalam tabel-tabel untuk memenuhi kebutuhan pemakai di dalam suatu organisasi.


B.   Tujuan Normalisasi
- Untuk menghilangkan kerangkapan data
- Untukmengurangikompleksitas
- Untukmempermudahpemodifikasian data


C.   Proses Normalisasi 
Data diuraikan dalam bentuk tabel, selanjutnya dianalisis berdasarkan persyaratan tertentu ke beberapa tingkat.
Apabila tabel yang diuji belum memenuhi persyaratan tertentu, maka tabel tersebut perlu dipecah menjadi beberapa tabel yang lebih sederhana sampai memenuhi bentuk yang optimal.


D.   Teknik Normalisasi
normalisasi adalah proses pengelompokan data elemen menjadi tabel-tabel yang menunjukan entitas dan relasinnya. pada proses normalisasi selalu dilakukan pengujian database pada beberapa kondisi, antara lain:
- menambah/insert
- menghapus/delete
- mengubah/update
- membaca/retrieve
bila ada pengujian tersebut makan relasi tersebut dipecahkan pada beberapa tabel lagi atau dengan kata lain perancangan belumlah menghasilkan database yang optimal. beberapa konsep yang harus diketahui lebih dahulu yang berhubungan dengan normalisasi,yaitu:
- Field/atribute kunci
- Kebergantungan fungsi (functional dependency)



E.   Bentuk-Bentuk NORMALISASI
Bentuk – bentuk Normalisi  yang ada dalam mendesain basis data adalah sebagai berikut:
Artinya adalah pada kebanyakan relasi, bila ketiga bentuk normal tersebut telah dipenuhi, maka persoalan anomali tidak akan muncul lagi didalam kita melakukan perancangan database.Kriteria dalam proses normalisasi adalah kebergantungan fungsional, kebergantungan banyaknilai dan kebergantungan join. Ketiga tipe kebergantungan tersebut digunakan untuk menilai relasi –relasi yang dihasilkan dari konversi diagram ER menjadi kumpulan relasi – relasi. Proses normalisasi membentuk relasi – relasi bentuk normal menggunakan dekomposisi yang memecah relasi menjadirelasi – relasi berbentuk normal lebih tinggi.Berikut ini adalah gambar untuk langkah – langkah melakukan normalisasi data, seperti tampak berikut ini:

 1. Bentuk tidak normal
Bentuk ini merupakan kumpulan data yang akan disimpan, tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi dan data dikumpulkan apa adanya.

 2. Bentuk normal pertama
Suatu tabel dikatakan dalam bentuk normal pertama (1NF) bila setiap kolom bernilai tunggal untuk setiap baris. Ini berarti bahwa nama kolom yang berulang cukup diwakili oleh sebuah nama  kolom (tidak perlu ada indeks dalam memberi nama kolom).

 3. Bentuk normal kedua
Suatu tabel berada dalam bentuk normal kedua (2NF) jika tabel berada dalam bentuk normal pertama, semua kolom bukan kunci primer tergantung sepenuhnya terhadap kunci primer. Suatu kolom disebut tergantung sepenuhnya terhadap kunci primer jika nilai pada suatu kolom selalu bernilai sama untuk suatu nilai kunci primer yang sama.

 4. Bentuk normal ketiga
Suatu tabel berada dalam bentuk normal ketiga (3NF) jika  tabel berada dalam bentuk normal kedua, setiap kolom bukan kunci primer tidak memiliki ketergantungan secara transitif terhadap kunci primer.





Wednesday, February 27, 2013

PAPER Entity Relationship Model



PENDAHULUAN

Latarbelakang
Model Entity Relationship diperkenalkan pertama kali oleh P.P. Chen pada tahun 1976. Model ini dirancang untuk menggambarkan persepsi dari pemakai dan berisi
obyek-obyek dasar yang disebut entity dan hubungan antar entity-entity tersebut yang disebut relationship. Pada model ER ini semesta data yang ada dalam dunia nyata ditransformasikan dengan memanfaatkan perangkat konseptual menjadik sebuah diagram, yaitu diagram ER ( Entity Relationship).
Untuk lebih jelasnya akan saya bahas dalam paper ini.

Tujuan
Tujuan dari paper ini yaitu membuat kita lebih memahami tentang ERD dan kita juga dituntut untuk lebih teliti dalam menentukan entity, relasi, atribut, lain sebagainya.

Manfaat
Manfaat  ERD yaitu :

  •  Memudahkan untuk dilakukannya analisis dan perubahan sistem sejak dini, bersifat murah dan cepat.
  • Memberikan gambaran umum akan sistem yang akan di buat sehingga memudahkan developer.



LANDASAN TEORI


Model Data
Model data merupakansuatu cara untuk menerangkan data, hubungan antar data dan batasan-batasan data.

Entity Relationship Model
Merupakan model data yang paling terkenal yang digunakan dalam perancangan basis data.
Diagram untuk menggambarkan model Entitiy-Relationship ini disebut Entitiy-Relationship diagram, ER diagram, atau ERD.

Simbol yang digunakan :












Elemen-Elemen Diagram Hubungan Entity

Entitas merupakan objek yang mewakili sesuatu yang nyata dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 1999: 30). Sekelompok entitas sejenis dan berada dalam lingkup yang sama disebut Himpunan Entitas. Misalnya mobil merupakan himpunan entitas, sedangkan toyota, suzuki, honda merupakan entitas. Entitas digambarkan dalam bentuk persegi panjang.

Atribut : Entitas mempunyai elemen yang disebut atribut dan berfungsi mendeskripsikan karakteristik dari entitas. Atribut digambarkan dalam bentuk lingkaran atau elips.

Relasi atau Hubungan, Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Hubungan digambarkan dalam bentuk diamonds/bela ketupat.
Penghubung antara himpunan relasi dengan himpunan entitas dan himpunan entitas dengan atribut dinyatakan dalam bentuk garis.


Kardinalitas atau Derajat Relasi

Terdapat 3 macam kardinalitas relasi yang terdapat pada ERD , yaitu :
One to One (1 to 1)
Hubungan satu ke satu. Contoh seorang Dosen mengepalai satu progdi.

One to Many (1 to M) atau Many to One (N to 1)
Hubungan satu ke banyak dan sebaliknya. Contoh seorang dosen mengajar banyak banyak mahasiswa.

Many to Many (M to N)
Hubungan banyak ke banyak. Contoh mahasiswa mengambil matakuliah.


Tahapan Penbuatan Diagram E-R
  • Mengidentifikasi dan menetapkan entitas-entitas yang akan terlibat.
  • Menentukan atribut key pada setiap entitas.
  •  Mengidentifikasi dan menetapkan relasi diantara entitas-entitas yang ada.
  •    Menentukan derajat/kardinalitas relasi untuk setiap himpunan relasi
  • Melengkapi himpunan entitas dan himpunan relasi dengan atribut-atribut deskriptif




DAFTAR PUSTAKA



Thursday, February 7, 2013

Our memories :')


Putih abu abu :) masa-masa terakhir :'(

Saat-saat terakhir semua terasa semakin indah. Canda,tawa, dan kesal dengan teman-teman sekelas semakin ku nikmati. Tiada dendam dengan mereka karena yang ada hanya ‘kebercandaan dan kekesalan semata’. Akankah semuanya tidak dapat ku rasakan ketika lulus nanti? (Ya, pasti!).

Takkan pernah terulang masa-masa itu. Pertanyaan-pertanyaan pun selalu muncul disaat merenungkan sisa-sisa sekolah yang tinggal bersisa besok.

Nanti tiada lagi sebutan teman sekelas atau teman satu sekolah. tetapi yang ada hanya sebutan “teman waktu SMA:(”. Begitu cepat waktu berlalu, padahal masa-masa orientasi siswa yang kita lewati dengan penuh suka cita masih teringat dengan jelas di fikiran, masa-masa perkenalan, saling taksir menaksir, bahkan cinta lokasi sama teman sekelaspun masi sering ku kenang. Tetapi sekarang masa-masa perpisahan yang harus kita nantikan dengan kata “mau tak mau”.

Kemeja putih, celana abu2 dan rok abu2 yang akan terlipat dengan rapih di dalam lemari akan kita rindukan bahkan kita ingin kembali memakainya. Merindukan masa-masa diterangin guru, dinasihati guru, bahkan diomeli guru.

Memikirkan teman baru seperti apa yang akan kita temui di kampus atau di dunia kerja. Akankah se asyik teman-teman di SMA? Takkan pernah kulupakan kalian yang akan menjadi ‘teman lamaku’.

Karena Kalian yang mengisi dan mewarnai masa-masa SMK ku.


putih abu-abu punya cerita tentang cinta , tentang tawa , tentang segalanya !
putih abu-abu bukan judul lagu , tapi saksi bisu anak remaja yang baru kenal dunia !
putih abu-abu lambang segala rasa bersama , selama 3thn yang berkesan ! putih abu-abu banyak memberi kita bekal menjalani hidup menuju masa depan, oleh sebab itu nikmati masa SMAmu dengan
-30% belajar
-35% berdoa
-50% main
-75% tertawa bareng
-30% pacaran
kapan lagi kita bisa kaya gini ?
karna putih abu-abu tidak akan abadi !
berterima kasih pada teman mu , tanpa mereka masa putih abuabu takkan berkesan !
THE LAST is the best :) :*

LOVE YOU ALL MY CLASSMATE :'(

Ini sebagian dari foto kenangan kita :') Kenangan yang tak akan terlupakan :*


































Wednesday, February 6, 2013

PAPER SISTEM BASIS DATA

PENDAHULUAN

Latarbelakang
Di zaman yang kian moderen ini, kita semua telah mengenal dan berhubungan langsung dengan teknologi. Teknologi yang telah membuat segala perkerjaan dan kegiatan kita semakin lebih mudah, sama halnya dengan Sistem Basis Data yang adalah sistem penyusunan dan pengelolaan record-record dengan menggunakan komputer, dengan tujuan untuk menyimpan data operasional lengkap sehingga mampu menyediakan informasi yang optimal yang diperlukan. Itulah sebabnya kita memerlukan Sistem Basis Data yang mempermudah kita dalam pencarian data, dan masih banyak lagi keuntungan kita setelah menggunakan Sistem Basis Data.

Tujuan
Tujuan dibuatnya Sistem Basis Data yaitu agar mempermudah kita dalam pencarian data yang telah disimpan oleh sistem, disamping itu juga mengurangi redundansi yang artinya data yang sama pada beberapa aplikasi cukup disimpan sekali saja, dan juga keamanan data kita terjamin.

Manfaat
Manfaat adanya Sistem Basis Data yaitu efisiensi data, mudah pencarian data, privacy data lebih terjamin, data yang kita simpan lebih terorganisir, tidak adanya Redudancy data (Duplikat).



LANDASAN TEORI

SISTEM
Sistem berasal dari bahasa latin (systema) dan bahasa yunani (sustema) adalah suatu kesatuan yang terdiri kompponen atau elemen yang dihubungkan bersama untuk memudahkan aliran informasi, materi atau energi untuk mencapai suatu tujuan. (wikipedia, 2013)

Basis Data
Pangkalan data atau basis data (bahasa Inggris: database), atau sering pula dieja basisdata, adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. (wikipedia: 2013)

Sistem Basis Data
Sistem Basis Data adalah suatu sistem penyusunan dan pengelolaan record-record dengan menggunakan komputer, dengan tujuan untuk menyimpan atau merekam serta memelihara data operasional lengkap sebuah organisasi/perusahaan, sehingga mampu menyediakan informasi yang optimal yang diperlukan pemakai untuk kepentingan proses pengambilan keputusan. (Nico, 2008)




KOMPONEN UTAMA BASIS DATA

  • Hardware (perangkat keras) merupakan semua bagian fisik komputer yang mendukung operasi pengolahan data. Contohnya yaitu : mouse, keyboard, monitor, CPU, dan lain-lain.
  • Sistem Operasi (Operating System) Perangkat lunak merupakan software sistem yang bertugas untuk mengontrol hardware serta operasi-operasi dasar sistem, termasuk menjalankan software aplikasi seperti program-program pengolah kata dan browser web. Contohnya : DOS, Windows XP/7, Linux, dan lain-lain.\
  • Basis Data (Database) sebagai inti dari sistem basis data.
  • Database Management System (DBMS) adalah software yang menangani semua akses ke basis data. Contoh dari DBMS yaitu MS. SQL Server, Oracle, dan lain-lain.
  • Pemakai (User) merupakan orang yang akan mengakses dan merubah isi basis data.
  

ABSTRAKSI DATA

Sebuah data memiliki abstraksi data. Abstraksi data itu sendiri adalah tingkatan atau level bagaimana kita dapat melihat data itu sendiri dalam sebuah sistem basis data. Terdapat 3 level dalam asbtraksi data, yaitu :
  • Level Fisik merupakan level terendah yang menggambarkan bagaimana data disimpan secara fisik. Misalnya kita memiliki data mahasiswa. Pada level ini data mahasiswa dipandang dengan memperhatikan bahwa dalam data tersebut terdapat atribut Nama yang disimpan (20 byte).
  • Level Konseptual menggambarkan data apa yang disimpan dalam basis data dan hubungan relasi dengan data yang lain. Pemakai (user) tidak mempedulikan kerumitan dalam struktur fisik lagi, penggambaran cukup menggunakan kotak, garis, dan hubungan secukupnya.
  • Level Pandangan (User View Level) Level ini merupakan level tertinggi dalam abstraksi data yang menggambarkan hanya sebagian yang dilihat dan dipakai dari keseluruhan database.

 Hubungan dari ketiga level ini dapa dilihat pada gambar di bawah ini :
  
               




MANFAAT SISTEM BASIS DATA

Manfaat dari sistem basis data adalah sebagai berikut :
  • Mengurangi redundansi : Data yang sama pada beberapa aplikasi cukup disimpan sekali saja.
  • Menghindarkan inkonsistensi : Karena redundansi berkurang, sehingga umumnya update hanya sekali saja.
  • Terpeliharanya integritas data : Data tersimpan secara akurat.
  • Data dapat dipakai bersama-sama : Data yang sama dapat diakses oleh beberapa user pada saat bersamaan.
  • Memudahkan penerapan standarisasi  : Menyangkut keseragaman penyajian data.
  • Jaminan sekuriti hanya dapat diakses oleh yang berhak.
  • Menyeimbangkan kebutuhan : Dapat ditentukan prioritas suatu operasi, misalnya antara update (mengubah data) dengan retrieval (menampilkan data) didahulukan update.




DAFTAR PUSTAKA