我认为在MySQL中命名表的标准做法是使用复数名称。
引用这些表的类也应该是复数?
例如,假设您有一个名为Users的表,用于身份验证。
使用教义ORM:
,这个表将在或多或少的实体类中描述namespace Company\BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="Users")
*/
class Users
{
/**
* @ORM\Id
* @ORM\Column(type="integer", name="user_id")
* @ORM\GeneratedValue(strategy="AUTO")
*
* @var integer $userId
*/
protected $userId;
/**
* @ORM\Column(type="string", length="255", name="first_name")
*
* @var string $userName
*/
protected $userName;
...
}
这是对的吗?
或者“用户”类应该以单数形式命名(“用户”)吗?
答案 0 :(得分:4)
如果你的类应该代表一个真实世界的项目的实例,那么在语义上我会说单数形式可能是一个可以使用的。数据库表用于存储多个项目,因此复数形式是合适的。无论哪种方式,只要你保持一致,这并不重要。
答案 1 :(得分:3)
在数据库中,它们是复数,因为它是很多的表格;许多用户的表。作为一个对象,它是一个单一的东西;一个用户。我通常会把我的课程保持单数。
答案 2 :(得分:3)
表示一个数据库行(实体)的类应具有单数名称。 Doctrine 2默认行为是以相同的方式命名数据库表。如果您愿意,可以在每个@Table注释中重新配置它,但我建议您坚持使用Doctrine命名约定 - 数据库表的单数名称也是可以接受的。
答案 3 :(得分:0)
我还订阅了使用带有单数名称的表名,因为一行代表一个表的一个项,就像一个对象代表一个类实例一样。唯一的例外是当表的每一行包含例如序列化(或等效)项时,即某个位置的“邻居”。