Konvensi penamaan database panel admin yang tetap mudah dibaca
Gunakan konvensi penamaan database untuk panel admin agar layar yang dihasilkan tetap terbaca: aturan tabel dan field yang jelas, enum, relasi, dan daftar periksa cepat.

Mengapa nama menentukan apakah panel admin terasa jelas atau berantakan
Sebagian besar panel admin dibangun dari model data Anda. Nama tabel dan field berakhir sebagai item menu, judul halaman, header kolom, label filter, dan bahkan kata-kata yang diketik orang ke dalam pencarian.
Saat nama jelas, seorang admin bisa memindai daftar dan memahaminya dalam hitungan detik. Saat nama tidak jelas, mereka berhenti, menebak, membuka sebuah record, kembali, dan mencoba lagi. Keraguan itu menumpuk. Itu berubah menjadi pertanyaan dukungan “Bagaimana saya menemukan pelanggan yang tepat?” dan dokumen pelatihan yang tak ada yang mau membaca.
Pengembang biasanya menamai hal untuk pembangunan dan debugging. Operator menamai hal untuk menyelesaikan pekerjaan. Seorang pengembang mungkin nyaman dengan acct, addr1, atau stat karena mereka ingat artinya. Operator butuh “Account”, “Address line 1”, dan “Status” tanpa harus menguraikannya.
Di layar admin, “terbaca” biasanya berarti:
- Anda bisa memindai sebuah tabel dan memahami setiap kolom tanpa membuka baris.
- Anda bisa mencari dan memfilter menggunakan kata-kata yang sama seperti yang dipakai sehari-hari.
- Anda bisa mengurutkan dan membandingkan nilai tanpa kejutan (misalnya, tanggal yang memang berupa tanggal, dan status yang konsisten).
Jika Anda menggunakan platform yang menghasilkan layar dari model (misalnya, AppMaster’s Data Designer dan tampilan bergaya admin), penamaan menjadi bagian dari desain UI. Nama yang baik memberi Anda layar default yang rapi sejak hari pertama, sebelum Anda mulai menyempurnakan label dan tata letak.
Baseline penamaan sederhana yang bisa diikuti seluruh tim
Jika Anda ingin layar admin yang dihasilkan terlihat rapi sejak hari pertama, sepakati baseline sebelum ada yang menambahkan tabel pertama. Sebagian besar masalah penamaan bukan teknis. Mereka masalah konsistensi.
Pilih satu gaya identifier dan jangan mencampurnya. Untuk database, snake_case biasanya paling mudah dibaca dan dicari. Jika stack Anda mengharapkan camelCase, gunakan itu di mana-mana (tabel, kolom, foreign key, enum). Berganti gaya di tengah proyek membuat label dan filter terasa acak.
Baseline yang bekerja untuk kebanyakan tim:
- Gunakan kata penuh:
customer_id, bukancust_id;description, bukandesc. - Gunakan kata benda yang jelas untuk entitas dan kata kerja yang jelas untuk aksi:
invoice,payment,refund_requested. - Gunakan nama timestamp yang konsisten:
created_at,updated_at,deleted_at. - Hindari kata-kata samar seperti
data,info,value, atautypekecuali Anda menambahkan konteks (misalnya,shipping_address,payout_method). - Jaga konsistensi tunggal vs jamak (banyak tim menggunakan tabel jamak seperti
customersdan kolom tunggal seperticustomer_id).
Tulislah glosarium kecil dan biarkan terlihat. Putuskan lebih awal apakah Anda memakai customer, client, account, atau user, lalu gunakan satu istilah. Lakukan hal yang sama untuk “order” vs “purchase” atau “ticket” vs “case”.
Cek cepat: jika dua orang bisa melihat sebuah kolom seperti account_status dan setuju apa maksudnya tanpa bertanya, baseline bekerja. Jika tidak, ganti namanya sebelum Anda membangun layar dan filter di atasnya.
Aturan penamaan tabel yang memetakan dengan rapi ke menu dan daftar
Sebagian besar panel admin mengubah nama tabel menjadi item menu, judul daftar, dan breadcrumb. Skema Anda bukan hanya untuk insinyur. Itu adalah draf pertama UI Anda.
Pilih satu gaya untuk tabel entitas dan patuhi: tunggal (user, invoice, ticket) atau jamak (users, invoices, tickets). Bentuk tunggal sering terbaca lebih baik pada judul formulir (“Edit Ticket”), sementara jamak bisa tampak lebih baik di menu (“Tickets”). Keduanya oke. Mencampur kedua gaya membuat navigasi terasa tidak konsisten.
Namai tabel untuk apa adanya, bukan untuk apa yang dilakukannya. Sebuah tabel harus merepresentasikan suatu hal yang bisa Anda tunjuk. payment adalah sebuah benda; processing adalah sebuah aksi. Jika nanti Anda menambahkan refunds, retries, dan settlements, nama tabel “processing” menjadi menyesatkan.
Aturan yang menjaga menu dan daftar tetap rapi:
- Gunakan kata benda konkret (
customer,subscription,invoice,ticket_message). - Hindari tabel bucket untuk data permanen (
settings,misc,temp,data). Pisahkan menjadi entitas nyata (notification_setting,tax_rate,feature_flag). - Lebih suka nama majemuk singkat dan dapat dibaca dengan underscore (
purchase_order,support_ticket) daripada singkatan. - Tambahkan prefix modul hanya bila mencegah tabrakan (misalnya,
billing_invoicevsinvoice). Jika menambahkan prefix, terapkan secara konsisten di seluruh modul.
Jika Anda menggunakan AppMaster untuk menghasilkan layar langsung dari skema, nama tabel berbasis kata benda yang stabil biasanya menghasilkan menu default dan tampilan daftar yang bersih dengan sedikit pembersihan nanti.
Tabel join dan identifier: menjaga many-to-many tetap terbaca
Relasi many-to-many adalah tempat panel admin sering mulai terlihat berantakan. Jika tabel join dan key-nya dinamai dengan baik, layar yang dihasilkan tetap terbaca tanpa banyak pembersihan manual.
Mulailah dengan satu aturan membosankan dan jangan melanggarnya: setiap tabel memiliki primary key bernama id. Jangan mencampur user_id sebagai primary key di satu tabel dan id di tabel lain. Identifier yang seragam membuat relasi dapat diprediksi, dan membantu formulir serta field referensi yang dihasilkan tetap konsisten.
Untuk tabel join murni, beri nama berdasarkan kedua entitas menggunakan satu pola dan urutan. Opsi umum adalah alfabetis (product_tag) atau “hal utama dulu” (user_role). Pilih satu urutan dan pertahankan di mana-mana.
Hindari nama samar seperti links atau mappings kecuali tabel benar-benar menyimpan tautan lintas-objek generik. Di kebanyakan panel admin, spesifik lebih baik daripada kreatif.
Ketika tabel join menjadi entitas nyata
Jika relasi memiliki field tambahan, perlakukan sebagai model sendiri dan beri nama seperti kata benda yang mudah dimengerti: membership, assignment, subscription. Misalnya, jika role user memiliki starts_at, ends_at, dan granted_by, user_role oke, tetapi membership mungkin lebih enak dibaca di UI.
Aturan sederhana yang menjaga layar tampak profesional:
- Gunakan
idsebagai primary key di setiap tabel. - Namai tabel join dengan kedua entitas dalam urutan konsisten (
user_role). - Gunakan foreign key yang jelas seperti
user_iddanrole_id. - Tambahkan aturan unik yang sesuai dunia nyata (misalnya, satu
role_idperuser_id). - Jika Anda mengizinkan sejarah, buat aturan unik sesuai catatan “aktif” (misalnya, unik ketika
ended_atbernilai null).
Pilihan-pilihan ini bertahan seiring data Anda tumbuh, dan bekerja baik dengan AppMaster’s Data Designer, di mana layar dapat dihasilkan langsung dari model.
Pola penamaan field yang menghasilkan kolom dan filter yang jelas
Nama field lebih dari sekadar membantu pengembang. Mereka menentukan apa yang dilihat pengguna sebagai header kolom, label filter, dan field formulir.
Sufiks yang dapat diprediksi menghilangkan tebakan:
- Gunakan
_iduntuk foreign key:customer_id,assigned_agent_id. - Gunakan
_atuntuk timestamp:created_at,paid_at,closed_at. - Gunakan
_countuntuk penghitung:login_count,attachment_count.
Boolean harus terbaca seperti kalimat biasa. Lebih suka is_ dan has_ sehingga checkbox masuk akal sekilas: is_active, has_paid, is_verified. Hindari negasi ganda seperti is_not_approved. Jika perlu keadaan “tidak”, modelkan positifnya dan balik logika di kode.
Field uang sering membingungkan di grid admin. Pilih satu pendekatan dan patuhi: simpan dalam unit kecil (mis. cents) sebagai integer, atau simpan desimal dengan presisi tetap. Namai field sehingga tidak ada yang menebak. Contoh: total_amount_cents + currency_code, atau total_amount + currency_code. Jangan mencampur price, amount, dan total kecuali mereka mewakili konsep berbeda.
Field teks harus spesifik tentang tujuan, bukan hanya tipe. description terlihat ke pengguna. internal_comment bersifat privat. notes adalah tempat penampung dan harus digunakan hati-hati. Jika punya beberapa catatan, beri nama berdasarkan audiens: customer_note, agent_note.
Field kontak harus literal karena sering menjadi filter cepat: website_url, contact_email, billing_email. Di layar admin yang dihasilkan AppMaster, nama-nama seperti ini biasanya berubah menjadi label default yang rapi.
Relasi dan foreign key: nama yang menjelaskan model data
Relasi yang baik terbaca seperti bahasa Inggris sehari-hari. Ketika panel admin dihasilkan dari database, nama foreign key sering menjadi judul kolom, filter, dan label formulir.
Pegang satu aturan: kolom foreign key adalah nama tabel yang direferensikan ditambah _id. Jika Anda punya customer.id, gunakan customer_id. Konsistensi ini membuat jelas kemana sebuah kolom mengarah.
Self-relation butuh kejelasan ekstra karena mudah disalahartikan nanti. Hindari related_id yang generik. Gunakan nama yang menjelaskan arah dan makna, seperti parent_id untuk pohon, manager_id untuk bagan organisasi, atau merged_into_id untuk deduplikasi.
Saat relasi melibatkan tabel join, namai sehingga terbaca seperti kalimat. Misalnya, ticket_assignee.user_id lebih jelas daripada ticket_user.user_id jika perannya adalah “assignee” (bukan “reporter” atau “watcher”).
Cek praktis yang mencegah sebagian besar masalah:
- Jangan pakai ulang
owner_iddengan makna berbeda di berbagai tabel. Lebih sukacreated_by_user_id,account_manager_user_id, ataubilling_contact_id. - Jika punya beberapa relasi ke tabel yang sama, sertakan peran:
requested_by_user_iddanapproved_by_user_id. - Pilih satu penanda soft delete dan patuhi.
deleted_atbanyak dipahami dan bekerja baik dengan filter.
Jika Anda membangun layar di AppMaster nanti, nama-nama ini muncul di mana-mana, jadi sedikit perhatian di sini menghemat banyak pembersihan UI.
Enum dan field status yang tetap dapat dimengerti seiring waktu
Jika panel admin dihasilkan dari database Anda, cara tercepat membuat layar terasa berantakan adalah menyebarkan arti ke banyak flag kecil. Lebih suka satu enum status yang jelas untuk lifecycle utama sebuah record, dan simpan flag tambahan hanya untuk perilaku yang benar-benar terpisah.
Aturan berguna: jika pengguna akan bertanya “Di mana item ini dalam perjalanannya?”, itu adalah status. Jika pertanyaannya “Haruskah kita menyembunyikannya?” atau “Apakah terkunci?”, itu boolean terpisah.
Satu status lebih baik daripada lima boolean
Daripada is_new, is_in_progress, is_done, is_cancelled, pakai satu ticket_status. Ini terbaca lebih baik di kolom daftar, filter, dan aksi massal. Juga menghindari kombinasi mustahil seperti “done + in_progress”.
Pertahankan nilai enum stabil. Teks UI bisa berubah, tapi nilai yang disimpan sebaiknya tidak. Simpan pending, bukan waiting_for_review. Simpan rejected, bukan rejected_by_manager. Anda selalu bisa menampilkan label yang lebih ramah nanti tanpa memigrasi data.
Saat perlu detail tambahan, tambahkan field kedua daripada membebani status. Contoh: pertahankan payment_status sebagai lifecycle, dan tambahkan failure_reason (teks) jika diperlukan.
Namai enum berdasarkan domain (agar filter masuk akal)
Gunakan prefix domain supaya layar tetap terbaca ketika beberapa model punya “status”:
payment_status(checkout pesanan)ticket_priority(urgensi dukungan)user_role(tingkat akses)invoice_status(lifecycle penagihan)delivery_status(lifecycle pengiriman)
Pisahkan lifecycle dari flag operasional. Misalnya: status menjelaskan di mana sesuatu dalam alur kerja, sementara is_archived berarti harus disembunyikan dari daftar sehari-hari.
Tulis satu kalimat makna untuk setiap nilai enum di catatan tim Anda. Anda yang akan lupa perbedaan antara cancelled dan voided. Jika Anda menggunakan AppMaster, definisi singkat itu juga membantu menjaga dropdown dan filter yang dihasilkan konsisten di web dan mobile.
Kasus tepi: tanggal, field audit, dan kolom “type”
Panduan penamaan sering mencakup tabel dan field dasar, tetapi panel admin menjadi berantakan pada kasus tepi. Tanggal, field audit, dan kolom “type” adalah tempat nama yang membingungkan berubah menjadi layar yang membingungkan.
Untuk tanggal dan timestamp, biarkan nama menceritakan ceritanya: apakah itu rencana, aktual, atau pengingat? Pola sederhana adalah arti seperti kata kerja ditambah sufiks yang jelas. Contoh: due_at (deadline yang direncanakan) dan completed_at (penyelesaian aktual) akan tampil sebagai kolom dan filter yang mudah dimengerti. Hindari pasangan samar seperti start_date dan end_date ketika yang sebenarnya Anda maksud scheduled_at dan finished_at.
Relasi opsional adalah jebakan umum lain. Jangan ciptakan pola baru per tabel. Pertahankan nama relasi stabil dan biarkan “opsional” dinyatakan dengan mengizinkan null, bukan dengan mengganti nama field. manager_id harus tetap manager_id meski opsional.
Alamat bisa terlihat baik di kode tetapi jelek di grid. Baris bernomor boleh saja hanya jika tim Anda sepakat artinya di mana-mana. Buatlah eksplisit:
address_line1,address_line2,city,region,postal_code,country_code- Hindari
address1,address2(lebih sulit dibaca, lebih mudah duplikasi)
Field audit sebaiknya membosankan dengan sengaja:
created_at,updated_atcreated_by_id,updated_by_id(hanya jika Anda benar-benar butuh pelacakan user)
Berhati-hatilah dengan type. Hampir selalu terlalu umum, dan cepat usang. Alih-alih type, namai maknanya: payment_method, ticket_channel, customer_tier. Dalam layar yang digerakkan oleh skema (termasuk AppMaster), pilihan tunggal ini bisa menjadi pembeda antara filter yang jelas dan dropdown yang membingungkan.
Contoh: menamai model ticket dukungan yang terlihat baik di admin
Sebuah setup dukungan kecil dan realistis: pelanggan menulis, staf membalas, dan tiket bisa ditandai. Konvensi penamaan adalah apa yang membuat menu auto-generated, layar daftar, dan filter terasa jelas.
Mulailah dengan nama tabel yang terbaca seperti kata benda di sidebar:
customerticketticket_messageticket_tagticket_tag_link
Di kebanyakan panel admin, ini menjadi label seperti “Tickets” dan “Ticket Messages”, dan tabel join tidak mengganggu tampilan.
Untuk layar daftar ticket, pilih nama field yang menjadi header kolom dan filter yang jelas:
subject,status,priorityassigned_to_id(mengarah ke user staf)last_message_at(mengatur pengurutan berdasarkan terbaru)created_at(standar dan bisa diprediksi)
Enum adalah tempat keterbacaan sering rusak nanti, jadi jaga set nilainya stabil dan sederhana:
ticket_status:new,open,pending_customer,resolved,closedticket_priority:low,normal,high,urgent
Satu pilihan penamaan yang mencegah kebingungan konstan: jangan membebani kata “customer”. Dalam dukungan, pengirim belum tentu pelanggan (rekan kerja bisa mengirim atas nama orang lain). Jika Anda menyimpan orang yang mengajukan tiket, namai requester_id, dan pisahkan customer_id untuk akun yang tiket tentangnya. Perbedaan itu menjaga formulir dan filter jujur sejak hari pertama.
Langkah demi langkah: cara menamai model baru sebelum membuat layar
Cara termudah menjaga layar terbaca adalah menamai saat Anda masih berpikir dengan bahasa sederhana, bukan saat Anda sudah membangun.
Proses berulang untuk setiap fitur
-
Mulai dengan glosarium mini (5 sampai 10 istilah). Tuliskan kata-kata yang akan digunakan rekan non-teknis dalam rapat, lalu pilih satu istilah untuk setiap konsep (misalnya, “customer” vs “client”).
-
Sketsakan layar yang Anda harapkan: list, detail, create, edit. Untuk tampilan daftar, tentukan 5 sampai 8 kolom yang harus langsung jelas sebagai header. Jika nama field terdengar aneh sebagai header, kemungkinan perlu diperbaiki.
-
Draft tabel dan relasi, lalu beri nama field menggunakan aturan sufiks (
*_id,*_at,is_*,*_count). Saat nanti Anda menghasilkan layar admin (termasuk di AppMaster), pola-pola ini cenderung menghasilkan label default yang rapi dan filter yang dapat diprediksi.
Sebelum melanjutkan, pastikan Anda tidak mencampur gaya (customer_id di satu tabel, clientId di tabel lain). Konsistensi mengalahkan kecerdikan.
-
Definisikan enum lebih awal, bukan setelah UI pertama ada. Tulis satu baris arti untuk setiap nilai, seolah menjelaskannya ke staf dukungan. Pilih nilai yang bisa bertahan perubahan, seperti
pending,active,archived(bukannew,newer,newest). -
Lakukan “baca header kolom.” Pura-puralah Anda admin yang memindai tabel.
- Apakah “Created At”, “Updated At”, “Status”, “Assigned To”, “Total Amount” masuk akal tanpa pelatihan?
- Apakah ada field yang terasa seperti kode internal (
tmp_flag,x_type,data1)? - Apakah satuan jelas (
amount_centsvsamount,duration_secondsvsduration)?
Jika ada yang terdengar tidak jelas saat dibacakan, ganti namanya sekarang. Mengganti nama nanti mungkin, tapi sering bocor ke laporan, filter, dan kebiasaan.
Kesalahan penamaan umum yang membuat panel admin sulit digunakan
Jika skema berantakan, layar juga akan berantakan, tidak peduli seberapa bagus UI-nya. Konvensi penamaan kurang soal “gaya” dan lebih soal kegunaan sehari-hari.
Perangkap pertama adalah kosakata campur aduk. Jika satu tabel menyebut client dan tabel lain menyebut customer, menu, filter, dan hasil pencarian terasa seperti menggambarkan hal berbeda. Pilih satu kata untuk setiap konsep inti dan gunakan di mana-mana, termasuk nama relasi.
Masalah umum lain adalah mempersingkat berlebihan. Singkatan seperti addr, misc, atau info menghemat beberapa karakter tetapi mengorbankan banyak kejelasan di tabel dan ekspor.
Kesalahan ketiga adalah memasukkan alur UI ke dalam database. Field seperti new_customer_wizard_step masuk akal saat peluncuran, lalu membingungkan ketika alur berubah atau Anda menambahkan jalur onboarding kedua. Simpan fakta bisnis (misalnya, onboarding_status) dan biarkan UI memutuskan cara membimbing orang.
Perhatikan juga overload boolean. Saat Anda menambahkan is_new, is_open, dan is_closed, Anda akhirnya mendapat konflik (dua true sekaligus) dan filter yang membingungkan. Lebih suka satu field status dengan sekumpulan nilai kecil yang bernama baik.
Tanda bahaya yang biasanya menghasilkan layar admin jelek:
- Dua nama berbeda untuk hal yang sama (
client_iddi satu tempat,customer_iddi tempat lain) - Kolom tempat sampah (
notes,misc,extra) yang menampung data campuran - Nama yang bergantung waktu (
summer_campaign_*) yang bertahan lebih lama dari kampanye - Banyak boolean yang mencoba menggambarkan satu keadaan
- Penggantian nama dilakukan sembarangan, tanpa rencana migrasi
Mengganti nama bukan hanya find-and-replace. Jika Anda mengganti customer_phone menjadi phone_number, rencanakan migrasi, perbarui layar yang dihasilkan, dan pertahankan kompatibilitas mundur bila perlu (terutama jika sistem lain membaca API). Di AppMaster, nama yang rapi langsung terasa manfaatnya karena daftar, formulir, dan filter mewarisi label ini dari model Anda.
Daftar periksa cepat sebelum Anda meluncurkan panel admin
Sebelum menyatakan skema “selesai,” lakukan satu kali pemeriksaan dari sudut pandang orang yang akan bekerja di panel admin setiap hari.
- Tabel terdengar seperti benda nyata. Seorang rekan harus bisa mengatakan apa yang direpresentasikan tabel (
ticket,customer,invoice) tanpa menebak. - Field kunci mengikuti sufiks yang dapat diprediksi. Gunakan pola yang dikenali:
*_iduntuk referensi,*_atuntuk timestamp,*_amount(atau*_amount_cents) untuk uang, danis_*untuk flag true/false. - Enum stabil dan sederhana. Simpan nilai seperti
pending,paid,failedalih-alih frasa UI yang bakal berubah. - Rekan baru bisa menebak maksudnya. Jika field muncul di tampilan daftar yang dihasilkan tanpa bantuan teks, apakah maksudnya tetap jelas?
- Kata ambigu dihapus atau dibuat spesifik. Ganti nama laci-sampah seperti
data,value,type, atauinfodengan yang konkret sepertistatus,source,category,notes, atauexternal_reference.
Jika Anda menggunakan AppMaster’s Data Designer untuk menghasilkan tampilan bergaya admin dari skema Anda, daftar periksa ini langsung praktis: nama yang jelas menjadi kolom dan filter yang jelas, dan Anda menghabiskan lebih sedikit waktu menambal label setelah pengguna mulai bekerja di sistem.
Langkah selanjutnya: jadikan penamaan kebiasaan (dan pertahankan konsistensi layar)
Penamaan yang baik bukan pembersihan sekali saja. Ini rutinitas kecil yang membuat UI admin Anda tetap terbaca saat skema tumbuh.
Mulailah dengan satu modul yang ada dan terapkan aturan hanya pada tabel baru berikutnya. Itu menghindari penulisan ulang besar dan memberi Anda tempat nyata untuk berlatih. Jika fitur berikutnya menambahkan “returns” ke sistem pesanan, beri nama tabel, foreign key, dan status menggunakan pola Anda dari hari pertama, lalu gunakan kembali pendekatan itu untuk fitur selanjutnya.
Simpan panduan penamaan satu halaman di dekat tempat Anda bekerja dengan skema. Singkat saja: bagaimana Anda menamai tabel, primary key, foreign key, timestamp, dan enum status. Tujuannya keputusan cepat, bukan debat panjang.
Jika Anda membangun dengan AppMaster, membantu untuk menetapkan pola ini di Data Designer sebelum menyentuh layar UI. Saat Anda mengganti nama tabel atau field, regenerasi aplikasi agar layar, API, dan logika tetap selaras alih-alih menyimpang.
Langkah review ringan sebelum setiap rilis biasanya cukup:
- Apakah nama tabel dan field terbaca seperti item menu, header kolom, dan filter?
- Apakah status dan enum jelas tanpa penjelasan tambahan?
- Apakah relasi dan foreign key menjelaskan dirinya sendiri (tanpa singkatan misterius)?
- Apakah model serupa dinamai konsisten (kata yang sama, urutan yang sama)?
Seiring waktu, kemenangan nyata adalah konsistensi. Ketika setiap model baru mengikuti aturan yang sama, panel admin Anda mulai terlihat dirancang meskipun dihasilkan, karena label dan daftar terbaca seperti produk yang kohesif.
FAQ
Gunakan nama yang dibaca seperti apa sebenarnya rekaman itu, bukan apa yang dilakukannya. Tabel bernama ticket atau invoice akan menjadi item menu yang jelas, sementara sesuatu seperti processing cepat menjadi membingungkan saat alur kerja berubah.
Pilih satu gaya dan gunakan konsisten di mana-mana. Untuk sebagian besar database, snake_case paling mudah dipindai dan mencegah label serta filter yang dihasilkan terasa acak.
Secara default, gunakan kata penuh yang jelas karena akan menjadi header kolom dan label filter. Singkatan seperti acct atau addr1 biasanya membuat operator ragu, bahkan jika pengembang memahaminya.
Pilih satu pendekatan dan tetap konsisten: entah tunggal (ticket) atau jamak (tickets). Tujuan utama adalah navigasi dan judul halaman tidak berganti gaya antar modul.
Pertahankan aturan sederhana: primary key setiap tabel bernama id, dan foreign key bernama something_id. Ini membuat relasi dapat diprediksi dan membantu formulir serta field referensi yang dihasilkan terlihat konsisten.
Beri nama tabel join murni berdasarkan kedua entitas dengan urutan yang konsisten, seperti user_role atau product_tag. Jika relasi memiliki field tambahan dan makna sendiri, beri nama seperti noun nyata seperti membership atau assignment agar UI terbaca alami.
Gunakan sufiks yang dapat diprediksi sesuai tipe dan maksud, misalnya _at untuk timestamp dan _count untuk penghitung. Untuk boolean, pakai is_ dan has_ sehingga checkbox terbaca seperti kalimat biasa di layar yang dihasilkan.
Lebih baik satu field status yang jelas untuk lifecycle utama, misalnya ticket_status atau invoice_status, daripada beberapa boolean yang tumpang tindih. Pertahankan nilai yang disimpan stabil dan sederhana sehingga tampilan bisa diubah nanti tanpa migrasi data.
Jangan gunakan nama generik seperti owner_id atau type saat maknanya berbeda antar tabel. Gunakan nama yang spesifik per peran seperti created_by_user_id, approved_by_user_id, atau payment_method agar layar dan filter menjelaskan dirinya sendiri.
Ganti nama lebih baik dilakukan sejak awal, sebelum layar, filter, dan laporan bergantung pada penamaan lama. Di AppMaster, perbarui nama di Data Designer dan regenerasi agar UI dan API tetap selaras alih-alih menyimpang dari waktu ke waktu.


