Singulár nebo plurál u názvů tabulek?

Taky vám vrtá hlavou, jestli pojmenovat tabulky v databázi jednotným (user) nebo množným (users) číslem? Nejste sami. Tento problém se řeší na všemožných internetových fórech a každý ze zastánců toho či onoho způsobu má svá pro a proti.

Přiznám se, že jsem dlouhou dobu používál plurál a to z téže důvodů, z jakých jste ho patrně používaly/používáte i vy. Dnes jsem však přešel na singulár.

Následujích pět důvodů uvádí proč:

1) Tabulka je sice "kontejner" pro řádky (a proto dává smysl ji pojmenovat "users"), ale z formálního hlediska se jedná o relaci mezi daty (existuje relace mezi id, login a name jednoho uživatele), tedy o relaci typu uživatel. A typ relace je v jednotném čísle, proto název user. Viz relační algebra.

2) Množné číslo se netvoří vždy stejným způsobem (child/children, adress/adresses, person/people). Můžou proto nastat zmatky při tvorbě cizích klíčů, kdy id_person odkazuje do tabulky people.

3) Při projekci (výběru) dat vypadá dotaz SELECT person.login, person.name FROM person WHERE person.id=1 přirozeněji než SELECT people.login, people.name FROM people WHERE people.id=1

4) Pokud používáte ORM techniku (např. skvělý SQLAlchemy) zjistíte že je daleko přirozenější a jednodušší mapovat "class User" na relaci "user". ORM navíc jména často odvozují od názvu tříd, takže si ušetříte taky trochu práce.

5) Singuláry jsou kratší.

Je samozřejmě na vás, který způsob budete používat, důležité je ho dodržovat :)

Tags: