Liczba mnoga a liczba pojedyncza


41

Jak mam nazwać swoje tabele podczas tworzenia nowej bazy danych?

Singular: Clientlub mnoga: Clients?


Kiedyś miałem współpracownika, który nalegał, aby nazwy tabel były w liczbie pojedynczej, a nazwy widoków w liczbie mnogiej.
René Nyffenegger,

1
Istnieją inne szkoły myślenia. 1) Użyj czasowników, które pozwolą wyrazić zapytania w języku naturalnym, np. person NAMED 'fred' EARNS 20,000(Gdzie wielkie litery to tabele). 2) używania nazwy przedsiębiorstwa na zbiorze np PERSONNEL, PAYROLL, ORG_CHARTitp
onedaywhen

Odpowiedzi:


44

Zależy od Ciebie. Tylko bądź konsekwentny.

Osobiście wolę liczbę pojedynczą na podstawie tego, co przechowuje każdy * wiersz: zamówienie, produkt, użytkownik, przedmiot itp.

To pasuje do mojego modelowania (poprzez Object Role Modeling), w którym używam pojedynczych jednostek / typów.

Edytować:

Jednym z powodów jest to, że liczba mnoga nie kiedy masz tabele link:
Orders, Productsdałoby OrderProductslub OrdersProducts. Żaden z nich nie brzmi poprawnie

Lub tabele historii (oczywiście możesz do tego użyć schematów):
Orders-> OrdersHistoryczy (nie!) OrdersHistories? Czy Order-> nie OrderHistorybyłoby lepiej?


2
Czy zawsze sprowadza się to do osobistego wyboru? Co się stanie, jeśli w jednym projekcie bazy danych będą pracowały 2 osoby, wówczas jedna z nich może nazwać tabele liczbą mnogą, a drugą - liczbą pojedynczą. Czy nie ma uzasadnionego powodu, dla którego warto użyć Singularlub Plural?
John Isaiah Carmona

2
@JohnIsaiahCarmona: dodano przyczynę
gbn

3
Zgadzam się na używanie liczby pojedynczej jako najbardziej sensownej. Nie wydaje się to być popularną opinią, jeśli spojrzysz na podobne pytania tutaj i na SO, itp. Wiele osób wydaje się programistycznie postrzegać tabele jako kolekcje, które powinny mieć zatem nazwy w liczbie mnogiej. Myślę, że ORM może zacząć łamać ludzi o tym (złym) nawyku. Jeśli na początku tabele mają wiele nazw, trudno jest rozróżnić właściwości nawigacji nadrzędnej i podrzędnej oraz rozróżnić obiekty instancji i kolekcji dla tabeli.
Joel Brown

4
Innym powodem na korzyść Singular jest to, że masz regułę, że PK nazywa się po tablename, na przykład TablenameIDlub TablenameCodelub tablename_id. W przypadku nazw tabel w liczbie mnogiej powstaje Orders.OrdersID(co nie wygląda dobrze) lub miejsce, w Orders.OrderIDktórym używa się liczby mnogiej w przypadku nazw tabel, ale zmienia się na liczbę pojedynczą w przypadku prefiksów kolumn.
ypercubeᵀᴹ

Kolejny punkt wzdłuż tych samych linii.
Jack Douglas,

8

Jeśli chodzi o nazwy tabel w liczbie pojedynczej i mnogiej, temat wydaje się kontrowersyjny, ale nie powinien.

Chociaż tabela jest zbiorem wielu rekordów, nazwa tabeli pochodzi od definicji jednego rodzaju rekordu, który zawiera. Jeśli tabela może mieć inną nazwę niż typ rekordu, który zawiera, możesz nadać tej tabeli liczbę mnogą, aby na przykład mieć tabelę pracowników zawierającą wiele rekordów pracowników. Ale projektant SQL nie przewidział osobnych nazw dla tabel i typów rekordów.

W przypadku programów zorientowanych obiektowo, które wykorzystują dane, wszystko działa bardziej logicznie, jeśli nazwa typu rekordu (a przez to nazwa tabeli) jest zachowana w liczbie pojedynczej, ponieważ będzie odpowiadać nazwie klasy, której użyłbyś do opisania jednego rekordu .

Jeśli następnie chcesz zidentyfikować kolekcję w programie, możesz użyć liczby mnogiej lub lepiej, użyć odpowiedniego modyfikatora, takiego jak EmployeeList lub EmployeeArray.

Występuje również problem z nieregularnymi formami liczby mnogiej do automatycznego generowania kodu i programistami, którzy mają różne pochodzenie językowe lub pomysły na temat tworzenia form liczby mnogiej w programie.

Język angielski nie jest dobrym i właściwym językiem programowania, a próba dostosowania instrukcji bazy danych i programów do języka angielskiego, ponieważ brzmi lepiej, gdy czytamy jedną z tych instrukcji, jest błędem.


5

Podobnie jak na @ gbn odpowiedź Myślę, że to najbardziej kwestia preferencji i tak jak on Polecam, że każdy wybór dokonane, stosuje się go wszędzie (w DB, że co najmniej). Konsekwencja jest tego warta.

Jednak wolę, aby liczba mnoga brzmiała lepiej w SELECTstwierdzeniach:

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

Mam na myśli, że przynajmniej w tym przypadku w tabeli jest kilka osób, a kilka z nich jest zwracanych klientowi.


2
+ 1, choć technicznie liczba mnoga Osoby to Ludzie i jest to jeden z powodów, dla których używam liczby pojedynczej. Niektóre ORM automatycznie utworzą dla ciebie tabele i otrzymasz dziwne scenariusze, takie jak ten, w których językowo nazewnictwo nie jest logiczne.
Mr.Brownstone

5

„zamówienie” to słowo zastrzeżone. „zamówienia” nie są

„użytkownik” to słowo zastrzeżone. „użytkownicy” nie są

„sesja” to słowo zastrzeżone. „sesje” nie są

„wynik” jest słowem zastrzeżonym. „wyniki” nie są

„krewny” jest słowem zastrzeżonym. „krewni” nie są

...

Są to typowe słowa, które mogą znaleźć się w bazie danych biznesowych. Słowa w liczbie mnogiej wydają się być mniej powszechne jako słowa kluczowe niż słowa pojedyncze. Dlatego może być korzystne stosowanie nazw tabel w liczbie mnogiej, aby uniknąć konfliktu ze słowami kluczowymi SQL.


1
Jest to zbyt blisko dla jasności. Trzymaj się z dala od zastrzeżonych słów, pojedynczych lub mnogich. To naprawdę pomaga podczas debugowania komunikatów o błędach, w których zamiennie używa się liczby mnogiej zastrzeżonych słów. Idealnie wybierz słowa z domeny aplikacji, aby były bardziej odpowiednie do użycia / użytkownika.
Emacs Użytkownik

co oznacza „zbyt blisko dla jasności”?
Neil McGuigan

1
Oznacza to niepotrzebne wyższe komunikaty o błędach w odszyfrowywaniu. Na przykład sortuj według i zamawia w komunikatach o błędach składniowych. Lub próbę debugowania użytkownika i użytkowników w komunikatach o błędach uwierzytelnienia.
Emacs Użytkownik

IMO PurchaseOrder, PortalUser, UserSession są lepsze niż tylko zamówienie, użytkownik, sesja, więc liczba pojedyncza może być dobra w tym scenariuszu
John Jai

1

Uważam, że tabela SQL powinna mieć liczbę mnogą. Po prostu czyta się znacznie lepiej.

Tabela zapisów książek powinna być nazywana książkami. ORM powinien stosować tę samą konwencję. Obiekt Books jest zbiorem i przewodniczy wszystkim zapisom w tabeli Books. Obiekt Book przewodniczy pojedynczemu rekordowi.

To sprawia, że ​​kodowanie jest bardziej naturalne.

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

Ma sens, dopóki nie musisz pisać dla owiec w seep.get ... Reguły gięcia , bądź elastyczny.
Emacs Użytkownik

To prawda, że ​​niektóre pojemniki to słowa z rzeczownikami w liczbie mnogiej, takie jak „access”. ale można to zmienić za pomocą: „for access_record in access”.
dlink

Trochę mnie jednak podnieca, widząc obiekty odsyłaczy. Co powiesz na tabelę łączy między książkami a autorami? „BooksAuthors” wygląda i brzmi okropnie, ale „BookAuthor” wygląda i brzmi lepiej. Następnie wchodzisz w słowa, które mają nieparzyste zakończenia dla liczby mnogiej (statusy) lub rzeczowniki nieregularne (dziecko kontra dzieci). IMO świat bólu oczu!
blobbles,

Cześć, @blobbles w liczbie mnogiej to BookAuthors, a nie BooksAuthors. Więc nadal brzmi naturalnie. BookPublishers, BookFormats itp.
dlink

Czytelność jest zawsze dobra, ale nie chodzi o zdanie, ale o miejsca, z których pozyskujemy dane. np. table.fieldwięc author.authorNamejest całkowicie w porządku. Pobierz nazwę autora z tabeli autora. Gdy jest tylko jeden autor, liczba mnoga również wygląda źle. authors.authorNamekiedy jest tylko jeden autor? To bardziej mylące imo. To oczywiście jest znacznie lepsze teraz, kiedy porzuciliśmy mysql_ w zdaniu i mamy lepsze sposoby na dostęp do danych :)
James

1

Po kilku latach pracy z programowaniem doszedłem do wniosku, że pluralizacja jest niepotrzebną komplikacją. Uważam, że zgodnie z filozofią KISS programista powinien dążyć do jak najlżejszego i najłatwiejszego rozwiązania wszystkich problemów ze względu na czas i wydajność. W ten sposób liczba pojedyncza zapewnia mniej pracy wymaganej we wszystkich scenariuszach.


Ta odpowiedź tak naprawdę nie dodaje niczego do całego wątku! Na przykład nie można odpowiedzieć na problem z wywołaniem tabeli „zamówienie”! Osobiście używam francuskich słów, kiedy angielski nie załatwi sprawy - ordre, groupe ... Zawsze używaj pola komentarzy na stole, aby wyjaśnić swój wybór! Ale naprawdę ważne jest, aby mieć konwencję i trzymać się jej !
Vérace

Jak to nic nie dodaje? Dodałem, że moim zdaniem liczba pojedyncza to mniej pracy. Jeśli masz inne zdanie niż moje, nie dewaluuj mojej opinii. „Zamówienia” nie są problemem, problemem są bardziej skomplikowane pluralizacje, które nie są takie jak „kategorie”, które widziałem z błędami w różnych kombinacjach powodujących niepotrzebną pracę.
ColacX

0

To bardzo osobista sprawa. Używam formy pojedynczej od 30 lat. Ale rozumiem, dlaczego ludzie lubią liczbę mnogą. Książki - autorzy są interesujące, ponieważ uważam, że autorzy książek nie są w błędzie. Książka może mieć jednego lub więcej autorów. A autorzy mogli napisać jedną lub więcej książek (np. Współautor). Zależy to również od tego, jak obchodzisz się z książkami napisanymi przez więcej niż jednego autora. Zgadzam się z innymi odpowiedziami; wybierz jeden i bądź konsekwentny. W odniesieniu do kwestii zastrzeżonych słów. Myślę, że nie jest trudno wymyślić nazwy obejść. użytkownik -> użytkownik aplikacji, sesja -> aplikacja, zamówienie -> zamówienie klienta


0

Patrzymy na to z różnych perspektyw i myślę, że oba obozy są identyfikowane przez:

Liczba pojedyncza („użytkownik”)
Osoba, która dokonuje korelacji między nazwą tabeli a faktem, że reprezentuje ona kontener, który może zawierać wiele wierszy.

Zatem „kontener użytkownika” może zawierać wiele wierszy.

Liczba mnoga („użytkownicy”)
Osoba, która nie dokonuje korelacji między nazwą tabeli a faktem, że reprezentuje ona kontener. Oczywiście wiedzą, że to pojemnik, ale nie ma go w nazwie.

np
. „karton z jajami” może zawierać wiele jaj, ale jest to oczywiste, ponieważ nazwa kontenera znajduje się w nazwie, zapewniając potencjał dla wielu jaj. Jednak w przypadku pojedynczej nazwy tabeli „użytkownik” odwołanie do kontenera nie występuje w nazwie. np. „user_container” prawdopodobnie byłby do przyjęcia dla osób, które preferują nazwy w liczbie mnogiej.

Myślę, że dzieje się tak również dlatego, że wiele lat w liczbie mnogiej było powszechną praktyką i większość materiałów do nauczania online.


Wszystko to mówi, myślę, że technicznie rzecz biorąc liczba pojedyncza jest dokładniejsza, biorąc pod uwagę, że nazywamy jeden pojemnik, a kontenery mogą zawierać wiele (lub pojedyncze) wiersze.
Ludziom wydaje się to niewłaściwe, ponieważ mentalnie łączą nazwę tabeli z zawartością (wiele wierszy wymaga nazwy w liczbie mnogiej), a nie mentalnie łączą nazwany kontener z treścią (kontener pozwala na wiele).

Jak zawsze, choć często nie ma dobra i zła, a chodzi bardziej o to, co pasuje do scenariusza, i co ważne, jest zgodne z tym, co wybierzesz.

Jeśli wykonujesz projekt wyłącznie i nie ma żadnego prawdziwego powodu, aby iść w jedną stronę, zrobić to, co uważasz za najlepsze lub po prostu preferencje. Zastosuj to samo w zespole deweloperów i po prostu podejmij jednomyślną decyzję.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.