Hot News »
Bagikan kepada teman!

5 Tips Berinternet Yang Aman Untuk Sang Buah Hati

Penulis : Unknown on Selasa, 15 Mei 2012 | 01.05

Selasa, 15 Mei 2012


Seperti yang kita ketahui meski internet menjadi sumber informasi tak terbatas, namun tetap menyimpan ancaman bagi penggunanya, terutama bagi anak-anak. Tapi bukan berarti buah hati kita tidak boleh mengenal internet.
Berikut 5 kiat untuk mengenalkan internet yang aman bagi anak-anak :
1. Komunikasi Ini merupakan faktor terpenting bagi orangtua dan anak-anaknya. Cobalah untuk menjalin alur komunikasi yang baik dengan buah hati kita. Ketika mengenalkan internet ke anak-anak, jelaskan aturan mainnya. Jangan sampai anak-anak Anda kebablasan online.
2. Batasi Waktu Online Sebaiknya jangan menempatkan komputer dengan fasilitas internet di kamar anak. Tempatkan komputer di ruang keluarga atau ruang dimana Anda bisa mengontrol anak-anak kala berinternet. Jika perlu, buatlah daftar situs yang sekiranya boleh diakses mereka. Tentukan pula waktu onlinenya dan jangan sampai larut malam. American Academy of Pediatrics menyarankan jika batas anak-anak untuk berada di depan layar maksimal sampai dua jam per hari.
3. Jejaring Sosial Anak-anak jaman sekarang pasti sudah akrab dengan yang namanya chatting, Facebook, YouTube atau Twitter. Tak ada salahnya membiarkan anak Anda bermain di dalamnya. Hanya saja perlu dipantau gerak-geriknya. Jika memang anak-anak Anda sudah cukup dewasa, tak ada salahnya membantu mereka membuat profil di jejaring sosial. Namun ada baiknya menggunakan nickname ketimbang nama asli. Jangan masukkan data-data pribadi dalam keterangan profil. Gunakan foto olahragawan kesukaannya, kartun karakter, atau ilustasi lainnya sebagai gambar profil. Selanjutnya adalah mengingatkan anak-anak untuk tidak berinteraksi dengan orang-orang yang tidak mereka kenal melalui dunia maya.

4. Kenali Masalahnya Observasi kebiasaan berinternet anak. Jika ia kerap kali melanggar kesepakatan dengan tetap online hingga larut malam tidak ada salahnya untuk bertindak tegas. Jauhi mereka dari kegiatan online untuk beberapa saat. Sebab jika dibiarkan dikhawatirkan akan semakin menjadi. Di sinilah peran komunikasi begitu diperlukan, cobalah bicara dari hati ke hati tanpa harus menarik urat. Sesekali para orangtua ada baiknya untuk mengecek histori di browser untuk mengetahui situs-situs apa saja yang sering dikunjungi anak-anak Anda.
5. Perkuat Sistem Keamanan 
Orangtua tentunya tidak bisa setiap saat mengawasi anak-anak. Maka diperlukan keberadaan software yang bisa memagari anak-anak dari keberadaan konten negatif di internet secara otomatis. Dewasa ini, sudah banyak aplikasi filtering atau parental control yang bisa digunakan untuk komputer di rumah. Dengan aplikasi ini diharapkan dapat memblokir situs pornografi dan situs bermuatan negatif lainnya sebelum terlihat anak-anak.
Aplikasi keamanan juga meliputi software antivirus untuk melindungi komputer secara keseluruhan. Selain itu, orangtua sebaiknya melakukan settingan di bagian mesin pencari seperti Google untuk hanya melakukan sistem pencarian yang aman (safe search). Jadi ketika anak-anak menggunakan Google untuk mencari informasi, konten yang muncul akan lebih tersaring.
komentar (1) | | Read More...

10 Tips Mneggunakan Twitter Dengan Baik Dan Benar


Twitter merupakan situs mikroblog yang berfungsi sebagai jejaring sosial. Twitter berguna untuk melakukan update berita, untuk mengetahui hal-hal terbaru dari sesuatu atau seseorang yang ingin kita ikuti sehari-hari. Namun, di luar itu, Twitter bisa menjadi musuh bagi hidup kita. Contohnya, ada karyawan yang dipecat hanya karena tweet-nya di Twitter. Ada pula kasus phisingyang merugikan, juga pemblokiran dari pemerintah. Berikut ini adalah tips untuk menjaga akun Twitter, agar terhindar dari penyalahgunaan, virus, spam, phising, dan juga pemblokiran. Jangan bagikan informasi pribadi Jangan pernah berbagi alamat e-mail Anda, alamat rumah atau kantor, nomor telepon, dan informasi lainnya yang mengungkapkan privasi Anda. Selain itu, jika Anda merasa tidak membutuhkannya, jangan aktifkan fiturgeotagging pada Twitter Anda sehingga tweet-tweet Anda tidak akan disertai dengan lokasi dimana anda melakukan tweet. Periksa aplikasi yang telah dan akan digunakan Hindari aplikasi berbasis web yang meminta Anda memasukkan username dan password Twitter. Aplikasi yang baik akan menggunakan Twitter OAuth dan tidak akan meminta Anda memasukkanusername dan password. Selain itu, secara teratur tinjau aplikasi yang Anda gunakan di Twitter melalui halaman "Twitter | Settings | Application". Hapus semua aplikasi yang menurut Anda tidak akan lagi Anda gunakan. Mengubah password secara teratur Bot (mesin) biasanya digunakan hacker untuk memperoleh akses ke akun Twitter Anda. Gunakan password yang sulit ditebak dan ubah password Anda secara reguler, misalnya setiap 4 atau 6 minggu. Intip dulu Short URL sebelum di-klik Link website pendek (short URL) sering digunakan untuk menyembunyikan alamat web yang tidak aman. Meng-klik dan mengunjungi website yang tidak aman menyebabkan bahaya malware, situs phising, dan lainnya. Jika Anda menggunakan Tweetdeck, aktifkan pilihan "Show Preview Information for Short URL". Jika Anda menggunakan Firefox, maka gunakan add-on seperti Long URL Mobile Expander atau DeTiny URL Expander. Semua pilihan ini membantu Anda mengetahui isi link sebelum membuka halaman web dengan pratinjau. Waspadai Direct Message (DM) Anda mungkin mendapatkan link dari orang yang Anda kenal dan telah anda percaya, sehingga Anda membuka link tersebut. Padahal, link dari orang yang Anda kenal belum tentu aman. Bisa jadi itu dikirimkan oleh hacker yang berhasil mengirimkan link spam ke dalam DM. Cara menjaga akun Anda adalah jangan buka link tersebut jika Anda belum yakin link tersebut aman. Jangan lupa tanyakan kepada pengirim melalui mentionagar Anda memastikan link tersebut memang dikirim oleh pemilik akun dan terjamin aman. Pisahkan akun pribadi dengan akun bisnis Jika Anda membuat akun Twitter untuk keperluan pribadi, sebaiknya ubah setting Anda menjadi akun yang terlindungi (protected). Pada setting profil, Anda bisa mencentang pilihan "Protect My Tweet". Dengan ini, tweet Anda hanya bisa dibaca oleh orang-orang yang Anda izinkan mem-follow Anda. Jika Anda ingin membuat akun yang ingin dibaca oleh umum, seperti akun untuk promosi produk, akun anonim, atau akun perusahaan, sebaiknya pilihan ini tidak dipilih. Blok dan laporkan spam Jika Anda membaca mention dari akun twitter yang tidak Anda kenal dan isinya tidak berhubungan dengan tweet-tweet Anda, sebaiknya Anda langsung mem-blok akun tersebut. Kalau melalui web, ada pilihan langsung untuk blokir akun sebagai spam tanpa harus membuka akun yang dimaksud. Jika membuka dari dari aplikasi mobile, biasanya anda harus membuka profil akun tersebut lalu bisa meng-klik pilihan "block as spam". Batasan dalam Twitter yang harus dipatuhi Twitter memiliki batasan-batasan tertentu terhadap penggunaan akun. Jika Anda menggunakan akun secara berlebihan, akun Anda akan terblokir sementara karena dianggap spam. Oleh karena itu, abaikan tawaran yang menjanjikan Anda bisa memiliki ratusan follower dalam waktu singkat. Anda juga harus tahu bahwa Anda hanya bisa mem-follow 2000 akun, sebelum bisa menambah jumlah "following", jika jumlah "follower" Anda jumlahnya tidak seimbang dengan yang Anda follow. Selain itu, Anda hanya punya batas mengirim maksimal 1000 tweet dan 250 DM setiap hari. Melakukan "unfollow" ratusan akun dalam sehari bisa membuat akun Anda terblokir sementara. Hindari Membuat Akun "Samaran" Sebaiknya nama akun yang Anda gunakan adalah nama asli Anda, sehingga orang lain tidak akan bisa menggunakannya untuk penipuan. Jika Anda menemukan akun palsu yang mengatasnamakan Anda, laporkan kepada Twitter dengan mengirim email keimpersonation@twitter.com. Sebaliknya, jika Anda hobi membuat akun terselubung agar tidak dikenali orang lain, baiknya Anda tidak menggunakan nama publik figur agar akun Anda tidak dibekukan oleh Twitter. Gunakan antivirus dan firewall Akhirnya, tak ada tips keamanan yang melewatkan himbauan untuk menggunakan antivirus danfirewall. Keduanya akan lebih melindungi akun Anda dari spam ataupun virus berbahaya yang mungkin menyusup melalui link dari DM atau short URL. Baik untuk PC maupun perangkat bergerak, menggunakan antivirus dan firewall sangat membantu melindungi akun jejaring sosial yang Anda miliki.
komentar (1) | | Read More...

Nokia 808 PureView Dengan Kamera 41MP


Nokia menggebrak Mobile World Congress (MWC) 2012 dengan smartphone berkamera monster. Nokia 808 PureView, demikian namanya, dihadirkan dengan kamera berkekuatan 41 megapixel. Ya, jauh lebih tinggi dibandingkan kamera di smartphone lain. Dengan sensor berkekuatan 41 MP, kamera milik ponsel Nokia Pure View 808 tentu saja menggebrak jagad ponsel maupun fotografi. Namun apakah dengan sensor ini ia benar-benar menangkap foto 41 MP? Ternyata tidak juga. Dalam kamera 'monster' yang mereka besut ini, Nokia memakai teknologi yang dijuluki 'over-sampling'. Dengan teknik ini, kamera memadatkan jumlah beberapa piksel menjadi satu piksel yang 'super'. Nah, hasilnya pengguna bisa mendapatkan foto di resolusi efektif 5 MP dengan detail yang luar biasa dan hampir tanpa noise. Manfaat lain yang didapat dari teknik tersebut ialah bahwa pengguna dimungkinkan untuk melakukan zoom hingga 4x tanpa harus kehilangan kualitas foto. Sebuah langkah yang menggembirakan. Ia juga akan tetap menghasilkan foto yang memukau meski diambil dalam kondisi minim cahaya. Tak hanya itu, Nokia juga memungkinkan foto disimpan dalam ukuran compact yang akan memudahkan user untuk berbagi foto via email, MMS atau situs jejaring. Selain didapat dari jumlah resolusi yang diusung, Nokia mampu memuaskan pecinta foto dengan optik Carl Zeiss. Seperti diketahui sebelumnya, Nokia sudah lama menjalin hubungan dengan merk ini untuk menghasilkan kamera yang menawan. Sekedar catatan, resolusi tertinggi yang bisa dihasilkan dari Pure View adalah 38 MP. PureView 808 ditujukan sebagai suksesor Nokia N8 yang juga kuat di sisi kamera pada masanya. Handset ini memakai sistem operasi Symbian Belle. Selain dari sisi kameranya yang buas, spesifikasi PureView 808 terhitung biasa-biasa saja. Smartphone tersebut memiliki bentang layar 4 inch dengan resolusi 360x640, prosesor 1,3 GHz, RAM 512MB, storage internal 16GB, slot microSD dan konektivitas HSPA 14,4Mbps. Kamera 41MP yang terdapat di PureView memakai lensa Carl Zeiss. Kualitas gambarnya pun diklaim sangat jernih dengan detail yang memukau. Wujud 808 PureView sendiri cukup cantik meskipun terlihat lumayan tebal. Handset ini rencananya akan mulai beredar bulan Mei 2012 dengan harga di kisaran 450 euro. Berikut spesifikasi lensa dan sensor di 808 PureView:
  •  Carl Zeiss Optics
  •  Focal length: 8.02mm
  •  35mm equivalent focal length: 26mm, 16:9 | 28mm, 4:3
  •  F-number: f/2.4
  •  Focus range: 15cm – Infinity (throughout the zoom range) 
  •  Construction: 
  •  - 5 elements, 1 group. All lens surfaces are aspherical
  •  - One high-index, low-dispersion glass mould lensa 
  •  - Mechanical shutter with neutral density filter
  •  Optical format: 1/1.2” 
  • Total number of pixels: 7728 x 5368 
  •  Pixel Size: 1.4 microns
komentar | | Read More...

8 Hal Yang Harus Diketahui Programer Pemula Tentang MySQL

Penulis : Unknown on Minggu, 06 Mei 2012 | 14.27

Minggu, 06 Mei 2012


PHP+MySQL. Siapa yang tidak tahu bahwa duo sejoli ini adalah pasangan terpopular di dunia open source, bahkan di seluruh Internet. PHP telah menggeser Perl sebagai bahasa pilihan dalam membuat aplikasi Web, terutama bagi pemula. Dan PHP hampir selalu bersanding dengan MySQL; 90–95%+ skrip PHP di www.hotscripts.com mungkin bertuliskan “membutuhkan PHP dan MySQL”. Buku-buku PHP, termasuk untuk pemula, tidak akan dipandang afdol kalau belum membahas MySQL. Dan programer PHP, lambat atau cepat, mau atau tidak mau, pasti akan harus mengakrabi software database yang satu ini.
Sayangnya, banyak programer sudah bermain-main dan memakai MySQL secara live di situs produksi, padahal masih asing sama sekali dengan konsep database relasional. Bahkan sebetulnya MySQL juga banyak memiliki kekurangan dalam hal fitur SQL. Sehingga programer PHP tidak bisa memahami dan memanfaatkan kekuatan penuh database relasional + SQL.
Buat Anda para programer pemula yang memang masih awam dengan MySQL dan konsep database pada umumnya, tidak perlu minder atau khawatir. Di dunia IT yang bergerak serba cepat ini memang ada terlalu banyak hal yang harus dipelajari. Dan kebanyakan jadinya dipelajari sambil jalan, sambil dipraktikkan. Ketika mulai membangun CMS untuk satunet.com tahun 1999 pun, saya hanya punya skill terbatas tentang SQL: hanya tahu SELECT, UPDATE, DELETE, CREATE TABLE, dan DROP TABLE. Apa itu JOIN, bagaimana mengubah skema tabel, bagaimana mendesain database yang baik dan ternormalisasi, semuanya masih blank. Dan semua harus dipelajari sambil jalan. Tapi toh akhirnya semua baik-baik saja.
Lewat artikel ini kita akan membahas hal-hal dasar apa yang perlu diketahui agar bisa memakai MySQL dengan efektif dan efisien. Mari kita mulai dengan hal nomor satu:

1. Tabel MySQL bukanlah array

Programer PHP atau Perl tentu saja familiar dengan array dan hash, yang biasanya dipakai untuk menyimpan sekumpulan data terkait. Sebagian dari mereka yang tidak familiar dengan MySQL akan cenderung menganalogikan tabel database dengan array/hash (tepatnya, array of array atau array 2 dimensi). Tabel dipandang sama seperti sebuah array, hanya saja bisa berukuran besar sekali dan persisten (disimpan di disk).
Cara pandang ini tidak sepenuhnya salah, karena toh dalam mengambil record dari tabel biasanya ditampung ke dalam variabel array/hash. Hanya saja, cara pandang ini kadang-kadang membuat programer PHP melakukan sesuatu seperti:
$res = mysql_query("SELECT * FROM t1");
$rows = array();
ql_fetch_row($res)) $rows[] = $row;
echo "Jumlah rec
while ($row = my
sord di tabel t1 = ", count($rows);
atau membuat tabel seperti:
CREATE TABLE t2 (
f0 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
f1 INT UNSIGNED, f2 VARCHAR(5),
,
f5 BLOB
);
f3 VARCHAR(200), f4 VARCHAR(200
)
Apa yang salah dengan kode PHP pertama di atas, yang bertujuan mencari jumlah record dalam sebuah tabel? Si programer, yang terlalu terobsesi menganggap tabel MySQL sebagai sebuah array, mencoba membangun dulu arraynya dengan mengisi satu-persatu elemen dari hasil query agar nantinya bisa menggunakan fungsi array count(). Masalahnya, bagaimana kalau jumlah record ada 100 ribu? 1 juta? 10 juta? Bukan itu saja, selesai di-count() variabel $rows langsung dibuang lagi! Padahal, ada cara yang jauh lebih efisien:
SELECT COUNT(*) FROM t1
Hasil querynya hanyalah sebuah record saja, tak peduli berapa pun ukuran tabel t1.
Lalu apa yang salah dengan kode SQL kedua? Si programer Perl, dalam hal ini, terobsesi ingin mengambil tiap record di tabel dengan fungsi DBI $sth->fetchrow_array()
@row = $sth->fetchrow_array();
print $row[0]; # f0
print $row[2]; # f2
print $row[1]; # f1
# ...
Enak bukan? Elemen ke-0 berisi nilai field f0, elemen ke-1 field f1, dst. Masalahnya, kemudahan ini mengorbankan nama field yang menjadi sangat tidak deskriptif. Belum lagi kalau tabel perlu diubah dengan menyisipkan field-field lain di antara field yang sudah ada. Atau field-field lama perlu dihapus. Semuanya akan menjadi mimpi buruk.
Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP dan Perl yang melakukan kedua hal di atas? Percaya deh, ada. Saya pernah harus ketiban getah memaintain tabel dengan nama field kriptik seperti ini.

2. Bahasa SQL dan Fungsi-Fungsi MySQL

MySQL adalah database SQL bukan? Sayangnya, programer PHP pemula kadang terbatas sekali pengetahuan SQL-nya. Padahal, untuk menggunakan database MySQL dengan efektif, ia tidak boleh malas mempelajari bahasa kedua, yaitu SQL. Jika tidak belajar SQL, maka ada kemungkinan Anda akan melakukan hal-hal seperti:
$res = mysql_query("SELECT * FROM bigtable");
while ($row = mysql_fetch_assoc($res)) {
"Ditemukan kustomer yang be
if ($row['age'] >= 40) { ech orusia lebih dari 40 tahun!\n"; break; }
}
Apa salah kode di atas? Si programer PHP mencoba mensimulasikan klausa WHERE SQL dengan melakukan pengujian kondisi di kode PHP. Padahal, yang seharusnya dilakukan adalah:
SELECT * FROM bigtable WHERE age >= 40
Ini amat mengirit trafik client/server karena tidak semua record harus dikirimkan dari MySQL ke program PHP Anda.
Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP yang seperti ini? Percaya deh, ada.
SQL sudah menyediakan cara untuk menyortir data, memformat tampilan, mengelompokkan dan memfilter record, dsb. MySQL juga terkenal banyak menyediakan fungsi-fungsi, mulai dari manipulasi tanggal, angka, string, dsb. Kenali SQL dan fungsi-fungsi MySQL; jangan duplikasikan ini semua di PHP sebab akan lebih efisien jika dilakukan di level MySQL.
Ini contoh lain programer PHP yang tidak memanfaatkan fasilitas dari MySQL:
$res = mysql_query("SELECT * FROM customers");
while ($row = mysql_fetch_assoc($res)) {
g_match("/(\d\d\d\d)-(\d\d?)-(\d\
# format semula yyyy-mm-dd... pr ed?)/", $row[date], $matches); # ... dan ingin dijadikan dd/mm/yyyy
w[name], Tanggal lahir=$tanggal<br>\n";
}
$tanggal = "$matches[3]/$matches[2]/$matches[1]"; echo "Nama=$r
o
Padahal MySQL sudah menyediakan fungsi pemformatan dan manipulasi tanggal:
$res = mysql_query("SELECT name, DATE_FORMAT(date,'%d-%m-%Y') as tanggal ".
"FROM customers");
while ($row = mysql_fetch_assoc($res)) {
# tidak perlu capek-capek manipulasi string lagi...
echo "Nama=$row[name], Tanggal lahir=$row[tanggal]<br>\n";
}
Poin no. 2 ini kedengarannya klise, tapi, seperti nasihat Inggris bilang: know thy tools.

3. LIMIT, LIMIT, LIMIT

Salah satu alasan mengapa MySQL sangat cocok untuk aplikasi Web adalah mendukung klausa LIMIT. Dengan klausa ini, mudah sekali membatasi jumlah record hasil yang diinginkan dalam satu perintah SQL. Tidak perlu bermain kursor atau bersusah payah lewat cara lainnya. Belakangan database lain seperti PostgreSQL dan Firebird pun ikut mendukung fungsionalitas LIMIT (dengan sintaks yang tidak persis sama tentunya).
Sayangnya, programer PHP sendiri yang belum mengenal MySQL dengan baik tidak menggunakannya dengan semestinya.
$res = mysql_query("SELECT name FROM users ORDER BY date");
$rows = array();
; $i++) $rows[] = mysql_fetch_row($res);
for ($i=1; $i<=1 0
Si programer hanya berniat mengambil 10 record, tapi menyuruh MySQL mengambil semua record yang ada dulu. Bagaimana kalau ada 100 ribu record? 1 juta record? 10 juta? Seharusnya, setiap kali Anda menginginkan hanya satu, sepuluh, lima belas record, Anda perlu memberitahu MySQL lewat klausa LIMIT.
SELECT name FROM users ORDER BY date LIMIT 10
Sehingga kita bisa mengirit trafik komunikasi client/server dan mengizinkan MySQL melakukan optimisasi terhadap query tersebut.

4. Tipe Data

Berbeda dengan PHP dan bahasa-bahasa skripting yang mengizinkan kita menaruh apa saja dalam sebuah $variable tanpa deklarasi tipe terlebih dahulu, di MySQL kita perlu mendeklarasikan tipe-tipe data semua field yang ada pada saat membuat sebuah tabel. Seorang programer PHP yang tidak kenal MySQL kadang-kadang cenderung memilih jenis data yang salah (umumnya: memilih VARCHAR() padahal ada tipe data yang lebih tepat) dikarenakan tidak mengenal jenis-jenis data yang tersedia.
Berikut beberapa contoh kurang tepatnya pemilihan tipe data: 1) memilih CHAR(8) atau VARCHAR(10) dan bukannya DATE untuk menyimpan tanggal; kerugiannya, lebih boros tempat dan tidak bisa memanfaatkan fungsi-fungsi khusus tanggal; 2) memilih CHAR(3) atau CHAR(6) ketimbang TINYINT UNSIGNED untuk menyimpan data boolean (“YES” dan “NO”; atau “TRUE” dan “FALSE”; padahal jauh lebih irit dinyatakan dengan 1 dan 0 yang hanya menempati 1 byte); 3) memilih FLOAT atau DOUBLE dan bukannya DECIMAL untuk menyimpan jumlah uang; kerugiannya, FLOAT dan DOUBLE adalah berbasis biner dan seringkali tidak eksak dalam menyimpan pecahan desimal.
Nomor 3 sering terjadi karena programer biasanya hanya mengenal single/double floating point number yang tersedia di bahasa pemrograman. Padahal database umumnya menyediakan angka pecahan berbasis desimal yang bisa eksak menyimpan pecahan desimal.
Manual MySQL amat membantu di sini; di subbab tentang Column Types dijelaskan dengan rinci jenis-jenis data yang ada, termasuk rentang nilai yang dapat ditampung, berapa byte yang ditempati tipe data tersebut, dsb.

5. Normalisasi dan Pemodelan

Normalisasi, skema, entiti-atribut, primary key (PK) dan foreign key (FK), tabel entiti, tabel relasi, OLTP & OLAP… semuanya adalah istilah-istilah yang umum dijumpai dalam pemodelan fisik database. Sayangnya, banyak programer pemula tidak memiliki kemampuan modeling. Sehingga jika disuruh mendesain skema database (sekumpulan tabel-tabel beserta nama field dan tipenya) hasilnya tidak optimal bahkan berantakan. Skema yang buruk berakibat terjadinya duplikasi data, tidak scalable, performance yang buruk, tidak memenuhi requirements, dsb.
Modeling tentunya tidak bisa diajarkan dalam 1–2 hari, apalagi dalam artikel yang singkat ini. Anda perlu membaca buku-buku mengenai pemodelan database dan belajar dari pengalaman maupun dari model-model yang sudah ada. Tapi beberapa nasihat yang mungkin bisa saya berikan di sini adalah sbb.
Satu, langkah pertama dalam pemodelan adalah menemukan entiti-entiti. Entiti bisa dibilang “objek” yang akan kita gelluti. Misalnya, customer, produk, dan transaksi. Setiap entiti umumnya ditaruh dalam satu tabel, tabel ini disebut tabel entiti. Langkah kedua adalah mencari atribut-atribut entiti tersebut. Misalnya tabel customers memiliki atribut sapaan, nama, alamat (jalan + kota + kodepos + propinsi + negara), tanggal record ini ditambahkan, dsb. Langkah ketiga adalah mencari relasi di antara entiti-entiti. Umumnya relasi adalah satu dari: 1-1, 1-many, many-many. Misalnya, relasi antara transaksi dan produk adalah many-many, artinya sebuah transaksi pembelian dapat berisi banyak produk dan sebuah produk tentu saja dapat dibeli dalam lebih dari satu transaksi. Setiap relasi juga akan ditempatkan pada tabel, yaitu tabel relasi.
Dua, dalam pemodelan tidak ada istilah model yang benar atau salah. Yang ada adalah model yang tepat dan tidak tepat untuk keperluan tertentu. Misalnya, untuk aplikasi sederhana modelnya sederhana. Semakin kompleks aplikasi, model pun semakin rumit (jumlah entiti, relasi, dan atribut akan bertambah). Pada umumnya, seiring kompleksitas bertambah, yang tadinya atribut akan berubah menjadi entiti dikarenakan adanya kenyataan hubungan 1-many/many-many antara atribut. Contohnya, tabel customers memiliki atribut alamat. Jika kita ingin mendukung banyak alamat untuk satu customers, maka alamat akan menjadi entiti dan menempati tabel sendiri. Lalu kita membuat tabel relasi customers-alamat.

6. Indeks

Indeks adalah sesuatu yang berkaitan erat dengan implementasi, bukan modeling. Kita seringkali perlu menambahkan indeks pada sebuah field atau banyak field dikarenakan jika tidak ditambahkan maka performance database tidak menjadi praktis. Serba-serbi indexing juga mungkin terlalu panjang untuk bisa dijelaskan dalam artikel pendek ini, tapi intinya setiap kolom yang: 1) memiliki rentang nilai cukup banyak; 2) terletak pada tabel yang berisi banyak record; 3) seringkali disebutkan di klausa WHERE dan/atau ORDER BY dan/atau GROUP BY; perlu diberi indeks. Ini dikarenakan indeks membantu mencari secara cepat sebuah nilai dari banyak nilai yang ada. Beberapa contoh:
* Setiap primary key umumnya otomatis diberi indeks oleh database server, meskipun tabelnya masih berisi sedikit record atau bahkan kosong. Ini dikarenakan database perlu selalu mengecek keberadaan sebuah nilai field ini manakala ada sebuah record yang ditambahkan (ingat, PK artinya tak boleh ada dua record yang mengandung nilai field ini yang sama). Tanpa indexing, pengecekan akan linear dan memakan waktu lama.
* Field tanggal lahir dalam tabel customers kemungkinan besar harus diindeks. Bahkan dayofyear() field ini juga mungkin perlu diindeks. Mengapa? Karena: 1) rentang nilai cukup besar (365 hari dalam setahun x +- 60 jumlah tahun); 2) tabel customers potensial ukurannya besar; 3) sering disebutkan di klausa WHERE (misalnya mencari customer yang ultah hari ini).
* Field memo/notes kemungkinan besar tidak perlu diindeks (secara biasa). Mengapa? Karena meskipun 1) rentang nilai cukup besar; dan 2) tabel customers bisa besar; tapi 3) field ini tidak pernah disebutkan di klausa WHERE secara langsung (mis: Anda tidak pernah menyebutkan: … WHERE notes='nilai catatan tertentu' atau WHERE notes > 'nilai tertentu'). [Catatan: ada indeks lain yang “tidak biasa” di MySQL, yaitu FULLTEXT. Tapi ini di luar cakupan artikel kita kali ini.]
* Field jenis kelamin mungkin tidak perlu diindeks, kecuali jika perbandingan pria:wanita amat drastis bedanya. Mengapa? Sebab: 1) rentang nilai yang ada hanyalah dua: L (lelaki) dan P (perempuan). Meskipun Anda beri indeks, tidak akan memperbaiki kinerja.

7. Konkurensi, Locking, dan Transaksi

Programer web pemula kadang-kadang tidak menyadari bahwa program/skrip yang dibuatnya tidaklah seperti program desktop yang dijalankan oleh satu user. Melainkan, dalam satu waktu bisa saja ada 10 atau 100 user yang “menembak” skrip Anda di Web. Karena itu, isu locking dan konkurensi penting sekali. Contohnya adalah seperti ini:
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res); $value++;
"UPDATE counter SET value=$va
// do something else first... $res = mysql_query
(lue WHERE name='counter1'");
Di antara baris pertama (saat kita mengambil nilai record) dan baris keempat (saat kita menaruh kembali nilai dalam record) mungkin saja telah terjadi beberapa kali perubahan terhadap si record. Misalnya, pada baris pertama klien1 memperoleh nilai $value = 100. Di baris 3 $value di-increment menjadi 101. Tapi apa yang terjadi jika selama selang waktu itu nilai record counter1 telah menjadi 103 (karena misalnya klien2, klien3, dan klien4 telah meng-incrementnya)? Oleh si klien1, counter1 direset kembali menjadi 101 dan akibatnya increment oleh klien2, klien3, dan klien4 hilang. Seharusnya nilai counter1 menjadi 104.
Untuk kasus di atas, pemecahannya cukup gampang. Lakukan increment secara atomik:
// tidak perlu ambil nilai counter dulu...
// do something else first...
nter SET value=value+1 WHERE name='counter1'");
$res = mysql_query("UPDATE co u
Tapi dalam kasus lain, kadang-kadang kita harus melakukan locking terhadap tabel atau record untuk menjamin bahwa selama kita // do something else… klien2, klien3, dan klien4 tidak bisa seenaknya menaikkan nilai counter:
mysql_query("LOCK TABLES cuonters");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
value or something...
$res = mysql_query("UPDATE counter SET
// do something else first... increase value=$value WHERE name='counter1'");
mysql_query("UNLOCK TABLES");
atau (lebih baik karena kita tidak perlu melock keseluruhan tabel):
mysql_query("SELECT GET_LOCK('lock1')");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
value or something...
$res = mysql_query("UPDATE counter SET
// do something else first... increase value=$value WHERE name='counter1'");
mysql_query("SELECT RELEASE_LOCK('lock1')");
Ingat, locking dapat berakibat samping yaitu deadlock.
Transaksi. Transaksi pun sesuatu yang dipergunakan secara meluas di dunia database, tapi hampir tidak pernah kita jumpai di bahasa pemrograman (ini karena data di bahasa pemrograman ditaruh dalam variabel di memori semua; tidak ada isu disk yang crash/lambat/rusak/harus disinkronkan dengan data di memori). Karena itu Anda perlu memahami konsep ini dari buku-buku tentang database.

8. Jenis Tabel

Di MySQL dikenal istilah table handler dan jenis tabel. Saat ini ada 3 jenis tabel utama yang bisa dipakai di MySQL: MyISAM (default), BerkeleyDB, dan InnoDB. Yang perlu diketahui ada tiga hal: 1) tidak semua tabel mendukung transaksi (MyISAM tidak mendukung transaksi, jadi COMMIT dan ROLLBACK tidak melakukan sesuatu yang semestinya jika Anda menerapkan pada tabel MyISAM); 2) tidak semua tabel punya karakteristik performance yang sama (BerkeleyDB misalnya, lambat jika ukuran tabel besar) dan disimpan dengan cara yang sama (tabel MyISAM misalnya disimpan dalam 3 file: .MYI, .MYD, .frm sementara tabel-tabel dan database-database InnoDB disimpan bersama dalam daerah disk yang disebut tablespace; 3) distribusi MySQL yang bukan -Max tidak dikompile dengan dukungan terhadap BerkeleyDB dan InnoDB.
Nomor 3 penting Anda ketahui karena jika kita menginstruksikan MySQL untuk membuat database dengan jenis tertentu:
CREATE TABLE (...) TYPE=BDB;
Dan MySQL tidak dikompile untuk mendukung BerkeleyDB, maka MySQL tidak akan protes dengan error, melainkan membuatkan tabel tersebut untuk kita tapi dengan tipe default yaitu MyISAM. Jadi Anda perlu mengecek dulu menggunakan SHOW TABLE STATUS:
mysql> create table t4 (i int) type=innodb;
Query OK, 0 rows affected (0.00 sec)
 
sql> show table status from mydb like 't4';
m y
------+--------+-...
+| Name | Type | ...
t4 | MyISAM | ...
+------+--------+-...
|+------+--------+-...
Ternyata MyISAM!
sumber :http://www.master.web.id
komentar (4) | | Read More...