Begini cara saya melakukannya:
- Nama tabel adalah huruf kecil, menggunakan garis bawah untuk memisahkan kata, dan tunggal (mis
foo
.foo_bar
, Dll. - Saya umumnya (tidak selalu) memiliki PK kenaikan otomatis. Saya menggunakan konvensi berikut:
tablename_id
(misfoo_id
.foo_bar_id
, Dll). - Ketika tabel berisi kolom yang merupakan kunci asing, saya hanya menyalin nama kolom kunci itu dari tabel apa pun itu berasal. Sebagai contoh, katakanlah tabel
foo_bar
memiliki FKfoo_id
(di manafoo_id
adalah PKfoo
). - Ketika mendefinisikan FK untuk menegakkan integritas referensial, saya menggunakan yang berikut:
tablename_fk_columnname
(misalnya melanjutkan 3, itu akan menjadifoo_bar_foo_id
). Karena ini adalah kombinasi nama tabel / nama kolom, dijamin unik dalam database. - Saya memesan kolom-kolom seperti ini: PK, FK, lalu kolom lainnya secara alfabet
Apakah ada cara yang lebih baik dan lebih standar untuk melakukan ini?
mysql
naming-conventions
mysql-workbench
StackOverflowNewbie
sumber
sumber
id_tableB
=> oh tidak ada kolom dengan nama yang berbedaid
, konsistensi dariid_tableB
=>id_tableB
terlihat lebih rapi ... atau seperti yang dilakukan OP:foo_id
=>foo_id
daripadafoo_id
=>id
Jawaban:
Saya akan mengatakan itu pertama dan terutama: konsisten.
Saya rasa Anda hampir sampai di sana dengan konvensi yang telah Anda uraikan dalam pertanyaan Anda. Beberapa komentar:
Poin 1 dan 2 menurut saya bagus.
Butir 3 - sayangnya ini tidak selalu memungkinkan. Pikirkan tentang bagaimana Anda akan mengatasi satu tabel
foo_bar
yang memiliki kolomfoo_id
dananother_foo_id
keduanya merujuk pada kolomfoo
tabelfoo_id
. Anda mungkin ingin mempertimbangkan bagaimana menangani ini. Ini adalah sedikit kasus sudut sekalipun!Poin 4 - Mirip dengan Poin 3. Anda mungkin ingin memperkenalkan nomor di akhir nama kunci asing untuk memenuhi memiliki lebih dari satu kolom referensi.
Poin 5 - Saya akan menghindari ini. Ini memberi Anda sedikit dan akan menjadi sakit kepala ketika Anda ingin menambah atau menghapus kolom dari tabel di kemudian hari.
Beberapa poin lainnya adalah:
Konvensi Penamaan Indeks
Anda mungkin ingin memperkenalkan konvensi penamaan untuk indeks - ini akan sangat membantu untuk setiap pekerjaan metadata database yang mungkin ingin Anda lakukan. Misalnya Anda mungkin hanya ingin memanggil indeks
foo_bar_idx1
ataufoo_idx1
- sepenuhnya terserah Anda tetapi patut dipertimbangkan.Nama Kolom Singular vs Plural
Mungkin merupakan ide yang baik untuk mengatasi masalah pelipatan jamak vs tunggal dalam nama kolom Anda serta nama tabel Anda. Subjek ini sering menyebabkan perdebatan besar dalam komunitas DB. Saya akan tetap dengan bentuk tunggal untuk nama tabel dan kolom. Sana. Saya sudah mengatakannya.
Hal utama di sini tentu saja adalah konsistensi!
sumber
documenttype
ataudocument_type
. Saya lebih suka yang terakhir, tetapi sebagian besar waktu saya memiliki banyak hubungan banyak dan saya perlu tabel yang terlihat sepertidocument_document_type
. Ada saran bagaimana menangani ini?Konsistensi adalah kunci standar penamaan apa pun. Selama itu logis dan konsisten, Anda 99% di sana.
Standar itu sendiri adalah preferensi pribadi yang sangat banyak - jadi jika Anda menyukai standar Anda, maka jalankan dengan itu.
Untuk menjawab pertanyaan Anda secara langsung - tidak, MySQL tidak memiliki konvensi / standar penamaan yang disukai, jadi menggulirkan sendiri tidak masalah (dan pertanyaan Anda tampaknya logis).
sumber
MySQL memiliki deskripsi singkat tentang aturan mereka yang kurang lebih ketat:
https://dev.mysql.com/doc/internals/en/coding-style.html
Gaya penulisan kode paling umum untuk MySQL oleh Simon Holywell:
http://www.sqlstyle.guide/
Lihat juga pertanyaan ini: Apakah ada pedoman gaya pengkodean yang diterbitkan untuk SQL?
sumber
Untungnya, pengembang PHP bukan "fanatik unta" seperti komunitas pengembangan yang saya tahu.
Kebaktian Anda terdengar bagus.
Asal mereka a) sederhana, dan b) konsisten - Saya tidak melihat masalah :)
PS: Secara pribadi, saya kira 5) berlebihan ...
sumber
Jawaban Sederhana: TIDAK
Ya, setidaknya konvensi penamaan yang didorong oleh Oracle atau komunitas, tidak, pada dasarnya, Anda harus menyadari mengikuti aturan dan batasan untuk pengidentifikasi, seperti ditunjukkan dalam dokumentasi MySQL: https://dev.mysql.com /doc/refman/8.0/id/identifiers.html
Tentang konvensi penamaan yang Anda ikuti, saya pikir tidak apa-apa, hanya nomor 5 yang sedikit tidak perlu, saya pikir sebagian besar alat visual untuk mengelola basis data menawarkan opsi untuk menyortir nama kolom (saya menggunakan DBeaver, dan memilikinya), jadi jika purpouse memiliki presentasi visual yang bagus dari meja Anda, Anda dapat menggunakan opsi ini saya sebutkan.
Berdasarkan pengalaman pribadi, saya akan merekomendasikan ini:
lower_case_table_names
tidak dikonfigurasi dengan benar dan server Anda mulai melempar kesalahan hanya dengan tidak mengenali standar camelCase atau PascalCase Anda (masalah sensitivitas huruf).Dan bagaimana dengan penamaan "Plural vs Singular"? Ya, inilah sebagian besar situasi preferensi pribadi. Dalam kasus saya, saya mencoba menggunakan nama jamak untuk tabel karena saya pikir tabel sebagai kumpulan elemen atau paket berisi elemenig, jadi nama jamak masuk akal bagi saya; dan nama tunggal untuk kolom karena saya melihat kolom sebagai atribut yang menggambarkan secara tunggal untuk elemen tabel tersebut.
sumber