2010-11-28 초안.
2013-07-15 MongoDB 관련 추가.
2019-01-29 Gist에 옮기며 윤문.
2019-02-05 워드프레스에 옮김.
2019-07-08 Velog에 옮김.
테이블 이름을 단수로 하면 여러 가지 문제를 피할 수 있습니다.
어떤 사람들은 테이블에 들어가는 레코드들 각각에 집중해 생각합니다.
테이블 이름을 복수로 쓰고 싶어집니다.
어떤 사람들은 테이블을 하나의 주머니로 생각합니다.
테이블 안에 많은 것이 들어가더라도 단수로 쓰고 싶어집니다.
더 구체적으로 보면,
OOP 에서는 집합 연산을 하는 경우가 많지 않습니다.
List users 를 가지고 집합 연산을 하지 않습니다.
주로 루프를 돌려서 리스트에 들어있는 오브젝트 각각을 처리합니다.
해서 OOP 로 어플리케이션을 개발하는 사람들은 테이블 이름도 복수로 쓰고 싶어합니다.
이분들은 테이블을 한 덩어리로 봅니다.
SQL 은 집합을 다루는 언어이지 개별 튜블을 다루는 언어가 아닙니다.
테이블 이름이 User 일 때 이분들 머리속에서는 User 가 자동으로 User Table 로 변환됩니다.
즉, User 에는 이미 복수 의미가 있는 것입니다.
때문에 User 를 Users 로 하면 의미 중복이 된다고 생각합니다.
사과 한 봉지라고 하지 사과들 한 봉지라고 하지 않습니다.
해서 데이터베이스 관리자들의 경우 테이블 이름을 단수로 하고 싶어합니다.
Users, Posts, Comments 수준의 경우라면 복수로 해도 큰 문제는 없습니다.
테이블 몇 백 개가 등장하는 큰 시스템의 경우는 문제가 달라집니다.
현업을 반영한 테이블 명이 이런 식이 될 수 있습니다.
KOS143, KOS144, KOS145, JHL01, JHL02, …
이런 이름에 s 를 붙이는 것은 적합하지 않아 보입니다.
DB 에서는 집합연산을 주로 하므로 테이블 이름을 단수로 하는 것이 무난합니다.
하지만 OOP 에서는 결과 리스트를 받아서 각 오브젝트를 따로 다루게 됩니다.
해서 OOP 에서 결과 리스트 이름은 복수로 하는 것이 무난합니다.
User 테이블의 데이터가 Java 로 오면 List users 가 되는 식입니다.
MongoDB 에서는 집합 언어, SQL 을 하용하지 않습니다.
디비 수준까지 OOP, JavaScript 를 사용합니다.
JavaScript 에서는 테이블 이름을 복수로 보려는 경향이 훨씬 강합니다.
해서 MongoDB 를 사용하는 경우에는 모든 티어간 통일성을 위해
MongoDB Collection 이름을 복수로 하는 것이 무난합니다.
간결하게 잘 설명해주셔서 보기 좋았습니다 감사해요!