Plural vs Singular Table Name


41

Bagaimana saya harus memberi nama Tabel saya ketika membuat database baru?

Tunggal: Clientatau Plural: Clients?


Saya pernah memiliki rekan kerja yang bersikeras bahwa nama tabel harus tunggal dan nama tampilan jamak.
René Nyffenegger

1
Ada aliran pemikiran lain. 1) Gunakan kata kerja yang akan memungkinkan seseorang untuk mengekspresikan kueri dalam bahasa alami misalnya person NAMED 'fred' EARNS 20,000(di mana nama huruf besar adalah tabel). 2) menggunakan nama perusahaan itu untuk set misalnya PERSONNEL, PAYROLL, ORG_CHART, dll
onedaywhen

Jawaban:


44

Terserah kamu. Tetaplah konsisten.

Secara pribadi saya lebih suka singular berdasarkan pada apa yang disimpan oleh setiap * baris: Pesanan, Produk, Pengguna, Barang, dll.

Ini cocok dengan pemodelan saya (melalui Pemodelan Peran Objek) di mana saya menggunakan entitas / tipe tunggal.

Edit:

Salah satu alasannya adalah bahwa jamak gagal ketika Anda memiliki tabel link:
Orders, Productsakan memberikan OrderProductsatau OrdersProducts. Tidak terdengar benar

Atau tabel histori (tentu saja Anda dapat menggunakan skema untuk ini):
Orders-> OrdersHistoryatau (tidak!) OrdersHistories? Bukankah Order-> OrderHistorylebih baik?


2
Haruskah itu selalu bermuara pada pilihan Pribadi ? Bagaimana jika ada 2 orang yang bekerja dalam satu desain database, maka yang satu bisa menamai tabel sebagai jamak dan yang lainnya sebagai tunggal. Apakah tidak ada alasan yang valid mengapa menggunakan Singularatau Plural?
John Isaiah Carmona

2
@JohnIsaiahCarmona: menambahkan alasan
gbn

3
Saya setuju menggunakan singular sebagai yang paling masuk akal. Ini tampaknya bukan pendapat umum, jika Anda melihat-lihat pertanyaan serupa di sini dan di SO, dll. Banyak orang tampaknya mengambil pandangan programmer dari tabel sebagai koleksi yang karenanya harus memiliki nama jamak. Saya pikir mungkin ORM mungkin mulai menghancurkan orang dari kebiasaan (buruk) ini. Jika tabel Anda memiliki nama jamak untuk membuatnya sulit untuk membedakan properti navigasi induk dan anak dan untuk membedakan objek instance dan koleksi tabel.
Joel Brown

4
Alasan lain yang mendukung Singular adalah jika Anda memiliki aturan bahwa PK diberi nama setelah nama tab, misalnya TablenameIDatau TablenameCodeatau tablename_id. Dengan nama tabel jamak, Anda berakhir dengan Orders.OrdersID(yang tidak terlihat benar) atau dengan Orders.OrderIDtempat Anda menggunakan jamak untuk nama tabel tetapi berubah menjadi tunggal untuk awalan kolom.
ypercubeᵀᴹ

Titik lain di sepanjang garis yang sama.
Jack Douglas

8

Mengenai nama tabel tunggal dan jamak, subjek tampaknya kontroversial, tetapi seharusnya tidak.

Sementara tabel adalah kumpulan dari beberapa catatan, tabel dinamai menurut definisi dari satu jenis catatan yang dikandungnya. Jika sebuah tabel diizinkan untuk memiliki nama yang berbeda dari jenis catatan yang dikandungnya, Anda bisa memberikan tabel nama jamak, sehingga Anda bisa misalnya memiliki tabel Karyawan yang berisi beberapa catatan Karyawan. Tetapi perancang SQL tidak menyediakan nama terpisah untuk tabel dan tipe catatan.

Hal-hal bekerja lebih logis untuk program berorientasi objek yang menggunakan data, jika nama tipe catatan (dan dengan ekstensi nama tabel) disimpan tunggal, karena akan sesuai dengan nama kelas yang akan Anda gunakan untuk menggambarkan satu catatan .

Jika kemudian Anda ingin mengidentifikasi koleksi dalam program, Anda dapat menggunakan jamak, atau lebih baik, menggunakan pengubah yang sesuai, seperti EmployeeList atau EmployeeArray.

Ada juga masalah dengan bentuk jamak tidak teratur untuk pembuatan kode otomatis dan programmer yang memiliki latar belakang bahasa yang berbeda atau ide tentang pembentukan jamak dalam suatu program.

Bahasa Inggris bukan bahasa pemrograman yang baik dan benar, dan mencoba membuat pernyataan database dan program sesuai dengan bahasa Inggris karena kedengarannya lebih baik membaca salah satu dari pernyataan itu adalah sebuah kesalahan.


5

Sama seperti jawaban @ gbn saya pikir ini adalah masalah preferensi dan sama seperti dia saya merekomendasikan bahwa setiap pilihan yang Anda buat, terapkan di mana-mana (setidaknya dalam DB itu). Konsistensi tidak sia-sia.

Namun, preferensi saya adalah bahwa bentuk jamak terdengar lebih baik dalam SELECTpernyataan:

SELECT Id, Name, Status 
FROM   Persons
WHERE  Status <> 5  --5 meaning deleted

Maksud saya dalam hal ini, setidaknya, ada beberapa orang di meja dan beberapa dari mereka dikembalikan ke klien.


2
+1 meskipun secara teknis jamak dari Person adalah People dan ini adalah salah satu alasan saya menggunakan singular. Beberapa ORM akan secara otomatis membuat tabel untuk Anda dan Anda mendapatkan skenario aneh seperti ini di mana penamaan secara linguistik tidak logis.
Mr.Brownstone

5

"order" adalah kata yang dipesan. "pesanan" tidak

"pengguna" adalah kata yang dilindungi undang-undang. "pengguna" tidak

"sesi" adalah kata yang dipesan. "sesi" tidak

"hasil" adalah kata yang dipesan. "hasil" tidak

"relatif" adalah kata yang dilindungi undang-undang. "saudara" tidak

...

Itu tampak seperti kata-kata umum yang mungkin masuk dalam database lini bisnis. Kata-kata jamak tampaknya kurang umum sebagai kata kunci dari kata tunggal. Oleh karena itu, mungkin bermanfaat untuk menggunakan nama tabel jamak untuk menghindari konflik dengan kata kunci SQL.


1
Ini terlalu dekat untuk kejelasan. Tinggal jauh dari kata-kata yang dipesan, tunggal atau jamak. Itu sangat membantu ketika men-debug pesan kesalahan yang menggunakan bentuk jamak dari kata-kata yang dipesan secara bergantian. Idealnya pilih kata-kata dari domain aplikasi untuk membuatnya lebih relevan untuk digunakan / pengguna.
Pengguna Emacs

apa artinya "terlalu dekat untuk kejelasan"?
Neil McGuigan

1
Ini berarti pesan kesalahan penguraian overhead yang lebih tinggi tidak perlu. Misalnya, pesan berdasarkan dan pesan dalam pesan kesalahan sintaksis. Atau mencoba men-debug pengguna dan pengguna dalam pesan kesalahan otentikasi.
Pengguna Emacs

IMO PurchaseOrder, PortalUser, UserSession lebih baik dari sekedar Order, User, Session jadi singular mungkin baik-baik saja dalam skenario ini
John Jai

1

Saya percaya tabel SQL harus memiliki nama jamak. Itu hanya membaca jauh lebih baik.

Daftar catatan buku harus disebut buku. ORM harus menggunakan konvensi yang sama. Objek Buku adalah kumpulan, dan memimpin semua catatan di Tabel Buku. Objek Buku memimpin lebih dari satu catatan.

Ini membuat pengkodean lebih alami.

select name, publication_date from books where publication_date > '2000-01-01';

books = Books()
for book in books.get("publication_date >= '2000-01-01'"):
    print book.name

Masuk akal sampai Anda harus menulis untuk domba di seep.get ... Membengkokkan aturan, fleksibel.
Pengguna Emacs

Benar beberapa wadah adalah kata-kata dengan kata benda seperti jamak - Seperti 'akses'. tetapi orang dapat memodifikasi menggunakan: 'untuk access_record dalam akses'.
dlink

Membuat saya sedikit bingung melihat objek tautan. Bagaimana dengan tabel tautan antara Buku dan Penulis? "BooksAuthors" terlihat dan terdengar mengerikan, tetapi "BookAuthor" terlihat dan terdengar lebih baik. Kemudian Anda masuk ke kata-kata yang memiliki ujung aneh untuk bentuk jamak (status) atau merupakan kata benda tidak beraturan (anak vs anak-anak). IMO dunia sakit mata!
Gumpalan

Hai, @blobbles jamaknya adalah BookAuthors, bukan BooksAuthors. Jadi masih terbaca alami. BookPublishers, BookFormats, dll
dlink

Keterbacaan selalu baik tetapi ini bukan tentang kalimat itu tentang tempat kita memperoleh data. misalnya table.field, jadi author.authorNamebaik-baik saja. Dapatkan nama penulis dari tabel penulis. Ketika hanya ada satu penulis, bentuk jamak tampak buruk juga. authors.authorNameketika hanya ada satu penulis? Itu lebih membingungkan imo. Ini tentu saja menjadi jauh lebih baik sekarang kami telah menghilangkan style kalimat mysql_ dan memiliki cara yang lebih baik untuk mengakses data :)
James

1

Setelah bekerja dengan pemrograman selama beberapa tahun saya menyimpulkan bahwa pluralisasi adalah komplikasi yang tidak perlu. Pendapat saya adalah bahwa menurut filosofi KISS, seorang programmer harus berusaha untuk solusi yang paling malas dan termudah untuk semua masalah karena alasan waktu dan efisiensi. Jadi singular memberi Anda lebih sedikit pekerjaan yang dibutuhkan dalam semua skenario.


Jawaban ini tidak benar-benar menambahkan apa pun ke seluruh utas! Anda gagal menjawab masalah dengan memanggil tabel "pesanan" misalnya! Secara pribadi, saya menggunakan kata-kata Prancis ketika bahasa Inggris tidak akan melakukan trik - ordre, groupe ... Selalu gunakan bidang komentar tabel Anda untuk menjelaskan pilihan Anda! Tetapi, hal yang sangat penting adalah memiliki konvensi dan menaatinya !
Vérace

Bagaimana tidak menambahkan apa pun? Saya menambahkan bahwa singular kurang berfungsi menurut saya. Jika Anda memiliki pendapat yang berbeda dengan pendapat saya, jangan mendevaluasi pendapat saya. "Perintah" bukanlah masalah, masalahnya adalah proses pluralisasi yang lebih rumit yang bukan -s seperti "Kategori" yang saya lihat salah eja dalam segala bentuk kombinasi yang menyebabkan pekerjaan tidak perlu.
ColacX

0

Ini hal yang sangat pribadi. Saya telah menggunakan bentuk tunggal selama 30 tahun. Tapi saya bisa melihat mengapa orang menyukai bentuk jamak. Buku - buku penulis menarik karena saya pikir penulis buku tidak salah. Sebuah buku dapat memiliki satu atau lebih penulis. Dan penulis mungkin telah menulis satu atau lebih buku (misalnya ditulis bersama). Itu juga tergantung bagaimana Anda menangani buku yang ditulis oleh lebih dari satu penulis. Saya setuju dengan jawaban lain; pilih satu dan konsisten. Sehubungan dengan masalah kata yang dipesan. Saya pikir itu tidak sulit untuk datang dengan nama solusi. pengguna -> app_user, sesi -> app_session, order -> customer_order


0

Kami melihat berbagai hal dari sudut pandang yang berbeda, dan saya pikir kedua kubu tersebut diidentifikasi oleh:

Singular ("user")
Orang yang membuat korelasi antara nama tabel dan fakta itu mewakili wadah, yang dapat berisi beberapa baris.

Jadi "wadah pengguna" dapat berisi beberapa baris.

Jamak ("pengguna")
Orang yang tidak membuat korelasi antara nama tabel dan fakta itu mewakili wadah. Tentu saja mereka tahu itu adalah wadah, tetapi tidak ada dalam nama.

misalnya
"karton telur" dapat memiliki beberapa telur di dalamnya tapi itu jelas karena referensi wadah ada di namanya, memberikan potensi banyak telur. Namun dengan nama tabel tunggal "pengguna" referensi wadah tidak ada dalam nama. mis. "user_container" kemungkinan akan dapat diterima untuk orang yang lebih suka nama jamak.

Saya pikir ini juga karena bertahun-tahun jamak menjadi praktik umum dan dalam sebagian besar materi pengajaran online.


Semua ini mengatakan, saya pikir secara teknis bentuk singular lebih akurat mengingat bahwa kita menamakan satu wadah, dan wadah dapat berisi banyak (atau tunggal) baris.
Tampaknya salah bagi orang-orang karena mereka secara mental menautkan nama tabel ke konten (beberapa baris membutuhkan nama jamak) daripada secara mental menghubungkan wadah yang dinamai dengan isi (sebuah wadah memungkinkan untuk banyak).

Seperti biasa meskipun sering tidak ada yang benar dan salah, dan ini lebih tentang apa yang sesuai dengan skenario, dan yang penting konsisten dengan apa pun yang Anda pilih.

Jika Anda melakukan proyek semata-mata dan tidak ada alasan nyata untuk melakukan apa pun yang Anda rasa terbaik, atau hanya preferensi. Terapkan hal yang sama ketika di tim pengembang dan baru saja mengambil keputusan dengan suara bulat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.