Tên bảng số nhiều và số ít


41

Tôi nên đặt tên Bảng như thế nào khi tạo cơ sở dữ liệu mới?

Số ít: Clienthoặc số nhiều: Clients?


Tôi đã từng có một đồng nghiệp khăng khăng rằng tên bảng là số ít và xem tên là số nhiều.
René Nyffalanger

1
Có những trường phái tư tưởng khác. 1) Sử dụng các động từ sẽ cho phép một người thể hiện các truy vấn bằng ngôn ngữ tự nhiên, ví dụ person NAMED 'fred' EARNS 20,000(trong đó tên viết hoa là các bảng). 2) sử dụng tên của doanh nghiệp cho các thiết lập ví dụ như PERSONNEL, PAYROLL, ORG_CHARTvv
onedaywhen

3
Trang web chéo có thể trùng lặp: stackoverflow.com/questions/338156/
Kiếm

Câu trả lời:


44

Tùy bạn Chỉ cần nhất quán mặc dù.

Cá nhân tôi thích số ít dựa trên những gì mỗi * hàng "lưu trữ: Đơn hàng, Sản phẩm, Người dùng, Vật phẩm, v.v.

Điều này phù hợp với mô hình hóa của tôi (thông qua Mô hình vai trò đối tượng) nơi tôi sử dụng các thực thể / loại đơn lẻ.

Biên tập:

Một lý do là số nhiều thất bại khi bạn có các bảng liên kết :
Orders, Productssẽ cung cấp OrderProductshoặc OrdersProducts. Cả hai âm thanh đều không đúng

Hoặc bảng lịch sử (tất nhiên bạn có thể sử dụng lược đồ cho việc này):
Orders-> OrdersHistoryhoặc (không!) OrdersHistories? Sẽ không Order-> OrderHistorysẽ tốt hơn?


2
Nó có nên luôn luôn sôi sục với một lựa chọn cá nhân ? Điều gì sẽ xảy ra nếu có 2 người làm việc trong một thiết kế cơ sở dữ liệu, sau đó một người có thể đặt tên các bảng là số nhiều và số còn lại là số ít. Không có lý do hợp lệ là tại sao sử dụng Singularhoặc Plural?
John Isaiah Carmona

2
@JohnIsaiahCarmona: đã thêm một lý do
gbn

3
Tôi đồng ý về việc sử dụng số ít là hợp lý nhất. Đây dường như không phải là ý kiến ​​phổ biến, nếu bạn nhìn xung quanh các câu hỏi tương tự ở đây và trên SO, v.v. Rất nhiều người dường như xem lập trình các bảng là các bộ sưu tập nên có tên số nhiều. Tôi nghĩ rằng có lẽ các ORM có thể bắt đầu phá vỡ thói quen (xấu) này. Nếu các bảng của bạn có tên số nhiều để bắt đầu, điều đó làm cho việc phân biệt các thuộc tính điều hướng cha và con và phân biệt các đối tượng bộ sưu tập và đối tượng cho một bảng.
Joel Brown

4
Một lý do khác có lợi cho Singular là nếu bạn có một quy tắc rằng PK được đặt tên theo tablename, ví dụ TablenameIDhoặc TablenameCodehoặc tablename_id. Với tên bảng số nhiều, bạn kết thúc bằng Orders.OrdersID(trông không đúng) hoặc với Orders.OrderIDnơi bạn sử dụng số nhiều cho tên bảng nhưng thay đổi thành số ít cho tiền tố cột.
ypercubeᵀᴹ

Một điểm khác dọc theo cùng một dòng.
Jack Douglas

8

Liên quan đến tên bảng số ít so với số nhiều, chủ đề này có vẻ gây tranh cãi, nhưng không nên.

Trong khi một bảng là một tập hợp của nhiều bản ghi, một bảng được đặt tên theo định nghĩa của một loại bản ghi mà nó chứa. Nếu một bảng được phép có một tên khác với loại bản ghi mà nó chứa, bạn có thể đặt cho bảng một tên số nhiều, ví dụ như bạn có thể có một bảng Nhân viên chứa nhiều bản ghi Nhân viên. Nhưng người thiết kế SQL không cung cấp tên riêng cho các bảng và loại bản ghi.

Mọi thứ diễn ra hợp lý hơn đối với các chương trình hướng đối tượng sử dụng dữ liệu, nếu tên của loại bản ghi (và bằng cách mở rộng tên bảng) được giữ ở dạng số ít, vì nó sẽ tương ứng với tên của lớp bạn sẽ sử dụng để mô tả một bản ghi .

Sau đó, nếu bạn muốn xác định một bộ sưu tập trong chương trình, bạn có thể sử dụng số nhiều hoặc tốt hơn, sử dụng một công cụ sửa đổi thích hợp, chẳng hạn như EmployeeList hoặc EmployeeArray.

Ngoài ra còn có một vấn đề với số nhiều bất thường cho việc tạo mã tự động và lập trình viên có nền tảng ngôn ngữ hoặc ý tưởng khác nhau về sự hình thành số nhiều trong một chương trình.

Ngôn ngữ tiếng Anh không phải là ngôn ngữ lập trình tốt và phù hợp, và cố gắng làm cho các câu lệnh cơ sở dữ liệu và chương trình phù hợp với tiếng Anh bởi vì đọc một trong những câu đó là một sai lầm.


5

Giống như câu trả lời của @ gbn, tôi nghĩ rằng đây hầu hết là vấn đề sở thích và giống như anh ấy, tôi khuyên bạn nên chọn bất kỳ lựa chọn nào, áp dụng nó ở mọi nơi (ít nhất là trong DB đó). Kiên định là giá trị nó.

Tuy nhiên, sở thích của tôi là số nhiều nghe tốt hơn trong các SELECTcâu:

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

Ý tôi là trong trường hợp này, ít nhất, có một vài người trong bảng và một vài người trong số họ được trả lại cho khách hàng.


2
+ 1 mặc dù về mặt kỹ thuật, số nhiều của Person là People và đây là một lý do tôi sử dụng số ít. Một số ORM sẽ tự động tạo các bảng cho bạn và bạn nhận được các tình huống kỳ lạ như thế này trong đó về mặt ngôn ngữ, việc đặt tên không hợp lý.
Mr.Brownstone

5

"Đặt hàng" là một từ dành riêng. "đơn đặt hàng" không phải là

"Người dùng" là một từ dành riêng. "người dùng" không phải là

"Phiên" là một từ dành riêng. "phiên" không phải là

"kết quả" là một từ dành riêng. "kết quả" không phải là

"Họ hàng" là một từ dành riêng. "người thân" không phải là

...

Những từ này có vẻ giống như những từ phổ biến có thể có trong cơ sở dữ liệu của doanh nghiệp. Các từ số nhiều dường như ít phổ biến hơn như các từ khóa so với các từ số ít. Do đó, có thể có ích khi sử dụng tên bảng số nhiều để tránh xung đột với các từ khóa SQL.


1
Điều này là quá gần với sự rõ ràng. Chỉ cần tránh xa những từ dành riêng, số ít hoặc số nhiều. Điều đó thực sự hữu ích khi gỡ lỗi các thông báo lỗi sử dụng số nhiều từ dành riêng thay thế cho nhau. Tốt nhất là chọn các từ trong miền của ứng dụng để làm cho nó phù hợp hơn với người dùng / người dùng.
Người dùng Emacs

"quá gần cho rõ ràng" có nghĩa là gì?
Neil McGuigan

1
Nó có nghĩa là một thông báo lỗi giải mã trên cao không cần thiết. Ví dụ, thứ tự theo và thứ tự trong các thông báo lỗi cú pháp. Hoặc cố gắng gỡ lỗi người dùng và người dùng trong thông báo lỗi xác thực.
Người dùng Emacs

IMO Purchasingder, PortalUser, UserSession tốt hơn là chỉ Đặt hàng, Người dùng, Phiên để số ít có thể làm tốt trong kịch bản này
John Jai

1

Tôi tin rằng bảng SQL nên có tên số nhiều. Nó chỉ đơn giản là đọc tốt hơn nhiều.

Một bảng các hồ sơ sách nên được gọi là sách. ORM nên sử dụng cùng một quy ước. Đối tượng Sách là một bộ sưu tập và chủ trì tất cả các bản ghi trong Bảng Sách. Một đối tượng Sách chủ trì một bản ghi.

Điều này làm cho mã hóa tự nhiên hơn.

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

Có ý nghĩa cho đến khi bạn phải viết cho cừu trong seep.get ... Quy tắc uốn cong , linh hoạt.
Người dùng Emacs

Đúng một số container là những từ có số nhiều như danh từ - Like 'access'. nhưng người ta có thể sửa đổi bằng cách sử dụng: 'cho access_record trong quyền truy cập'.
dlink

Ổ đĩa cho tôi một chút batty nhìn thấy các đối tượng liên kết mặc dù. Làm thế nào về một bảng liên kết giữa Sách và Tác giả? "BooksAuthors" có vẻ và âm thanh khủng khiếp, nhưng "BookAuthor" có vẻ và âm thanh tốt hơn. Sau đó, bạn nhận được vào các từ có kết thúc kỳ lạ cho số nhiều (trạng thái) hoặc là danh từ bất quy tắc (trẻ vs trẻ em). IMO một thế giới đau mắt!
blobble

Xin chào, @blobble số nhiều sẽ là BookAuthors, không phải BooksAuthors. Vì vậy, nó vẫn đọc tự nhiên. BookPublishers, BookFormats, v.v.
dlink

Khả năng đọc luôn tốt nhưng không phải là về câu mà là về những nơi chúng ta đang lấy dữ liệu. ví dụ table.field, như vậy author.authorNamelà hoàn toàn tốt Lấy tên tác giả từ bảng tác giả. Khi chỉ có một tác giả, số nhiều trông cũng tệ. authors.authorNamekhi chỉ có một tác giả? Đó là imo khó hiểu hơn. Điều này tất nhiên được làm tốt hơn nhiều bây giờ chúng tôi đã loại bỏ kiểu câu mys mys_ và có nhiều cách tốt hơn để truy cập dữ liệu :)
James

1

Sau khi làm việc với lập trình được vài năm, tôi đã kết luận rằng số nhiều là một biến chứng không cần thiết. Ý kiến ​​của tôi là theo triết lý của KISS, một lập trình viên nên cố gắng tìm ra giải pháp lười biếng và dễ dàng nhất cho mọi vấn đề vì lý do thời gian và hiệu quả. Do đó, số ít cung cấp cho bạn ít công việc cần thiết hơn trong tất cả các kịch bản.


Câu trả lời này không thực sự thêm bất cứ điều gì vào toàn bộ chủ đề! Bạn không thể trả lời vấn đề bằng cách gọi một bảng "đặt hàng" chẳng hạn! Cá nhân, tôi sử dụng các từ tiếng Pháp khi tiếng Anh sẽ không thực hiện mẹo - ordre, groupe ... Luôn sử dụng trường nhận xét của bảng để giải thích sự lựa chọn của bạn! Nhưng, điều thực sự quan trọng là phải có một quy ước và tuân thủ nó !
Vérace

Làm thế nào nó không thêm bất cứ điều gì? Tôi nói thêm rằng số ít là công việc ít hơn theo ý kiến ​​của tôi. Nếu bạn có ý kiến ​​khác với tôi, xin đừng đánh giá thấp ý kiến ​​của tôi. "Đơn đặt hàng" không phải là vấn đề, vấn đề phức tạp hơn là số nhiều không phải là "như" Danh mục "mà tôi đã thấy sai chính tả trong tất cả các cách kết hợp gây ra công việc không cần thiết.
ColacX

0

Đó là một điều rất riêng tư. Tôi đã sử dụng hình thức số ít trong 30 năm. Nhưng tôi có thể thấy tại sao mọi người thích số nhiều. Những cuốn sách - tác giả rất thú vị vì tôi nghĩ rằng những người viết sách không sai. Một cuốn sách có thể có một hoặc nhiều tác giả. Và các tác giả có thể đã viết một hoặc nhiều cuốn sách (ví dụ đồng viết). Nó cũng chỉ phụ thuộc vào cách bạn xử lý các cuốn sách được viết bởi nhiều hơn một tác giả. Tôi đồng ý với các câu trả lời khác; chọn một và nhất quán Liên quan đến các vấn đề từ dành riêng. Tôi nghĩ rằng không khó để đưa ra tên giải pháp. người dùng -> app_user, phiên -> app_session, đặt hàng -> customer_order


0

Chúng tôi xem mọi thứ từ những quan điểm khác nhau và tôi nghĩ hai trại được xác định bởi:

Số ít ("người dùng")
Người tạo ra mối tương quan giữa tên bảng và thực tế nó đại diện cho một thùng chứa, có thể chứa nhiều hàng.

Vì vậy, "container người dùng" có thể chứa nhiều hàng.

Số nhiều ("người dùng")
Người không tạo ra mối tương quan giữa tên bảng và thực tế nó đại diện cho một thùng chứa. Tất nhiên họ biết nó là một container, nhưng nó không có trong tên.

ví dụ:
"Thùng trứng" có thể có nhiều trứng trong đó nhưng điều đó là hiển nhiên vì tham chiếu trong thùng chứa có tên, cung cấp tiềm năng cho nhiều trứng. Tuy nhiên, với tên bảng số ít "người dùng", tham chiếu vùng chứa không có trong tên. ví dụ: "user_container" có thể được chấp nhận cho những người thích tên số nhiều.

Tôi nghĩ rằng điều này cũng là do nhiều năm số nhiều là thông lệ và trong hầu hết các tài liệu giảng dạy trực tuyến.


Tất cả điều này đã nói, tôi nghĩ rằng về mặt kỹ thuật, số ít nói chính xác hơn khi chúng ta đặt tên cho một container và các container có thể chứa nhiều hàng (hoặc một) hàng.
Mọi người có vẻ sai khi họ liên kết một cách tinh thần tên bảng với nội dung (nhiều hàng cần một tên số nhiều) thay vì liên kết về mặt tinh thần với container được đặt tên với nội dung (một container cho phép nhiều mục).

Như mọi khi thường không có đúng và sai, và đó là về những gì phù hợp với kịch bản, và quan trọng là phù hợp với bất cứ điều gì bạn chọn.

Nếu bạn đang thực hiện dự án duy nhất và không có lý do thực sự nào để làm bất cứ điều gì bạn cảm thấy tốt nhất, hoặc chỉ là sở thích. Áp dụng tương tự khi trong một nhóm phát triển và chỉ đi đến một quyết định nhất trí.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.