2011-06-05 62 views
3

我认为在MySQL中命名表的标准做法是使用复数名称。命名约定:用于描述PHP实体的类的单数与复数

引用这些表的类也应该是复数形式?

例如,假设您有一个名为Users的表,用于验证目的。

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; 
    ... 
} 

这是正确的:

该表将实体类中使用ORM的学说来说明或多或少也是这样吗?

或者应该将类“用户”命名为单数(“用户”)?

+0

任何一个工作,真的。 – BoltClock 2011-06-05 17:40:25

+0

我(我想大多数人)会使用单数,因为它代表一个用户。我也使用单数名称来表格,因为我以单行代表的名字命名它们,但我可能只占少数。 – Matthew 2011-06-05 17:52:30

回答

3

代表一个数据库行(实体)的类应该有单数名称。 Doctrine 2的默认行为是以同样的方式命名数据库表。如果您愿意,可以在每个@Table注释中重新配置它,但我建议您坚持遵守Doctrine命名约定 - 数据库表的单数名称也是可以接受的。

4

如果你的班级应该代表一个真实世界的项目的实例,然后在语义上,我会说单数形式可能是一个去。数据库表用于存储多个项目,因此复数形式在那里是适当的。无论哪种方式,只要你保持一致,它并不重要。

2

在数据库中,它们是复数形式,因为它是很多表格;一个很多用户的表格。作为一个对象,这是一个单一的事物;一个用户。我通常保持我的班级单数。

0

我也订阅使用带有单数名称的表名,因为一行代表一个表中的一个项目,就像对象代表一个类别的一个实例一样。唯一的例外可以是当表的每一行包含例如序列化(或等效)项目时,即位置的“邻居”。