2011-06-05 54 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

我也訂閱使用帶有單數名稱的表名,因爲一行代表一個表中的一個項目,就像對象代表一個類別的一個實例一樣。唯一的例外可以是當表的每一行包含例如序列化(或等效)項目時,即位置的「鄰居」。