我與MySQL有關內主要IDS以下問題所困擾:生成自己的主IDS(transactionsafe等)doctrine2
我有一個實體Client
和實體Purchase
,其中一個客戶端零到許多購買而購買只有一個客戶。
當我創建採購,我要分配它指的是客戶端和正在進行的數字,比如ABC1對於第一次購買的客戶ABC我自己的主鍵。購買表看起來是這樣的:
id | client
abc1 | abc
abc2 | abc
def1 | def
abc3 | abc
def2 | def
我的應用程序使用的Symfony2與doctrine2,所以我搜索,想了一會兒,然後在其內容的購買量爲特定客戶的PurchaseRepository實施的createPurchase方法,增加了一個並返回創建的採購與已經添加了ID:
public function createPurchase($client){
$amount = $this->getAmountForClient($client) + 1;
$id= $client->getId() . $amount ;
return new Purchase($id);
}
有一些問題,這個解決方案:
- 添加更多比沒有在dublicated主ID
- 在同一時間運行腳本沖洗結果一個實體可能會導致dublicated主要IDS
有另一種方式我現在可能解決我遇到的問題是不知道的?我完全錯了嗎?任何幫助表示讚賞!
爲什麼不能用[代理鍵]工作(http://en.wikipedia.org/wiki/Surrogate_key)? – danihp
要麼我不明白它或者它不會幫助我很多:我需要這個屬性給它的客戶端,所以它必須看起來像描述。這意味着我必須生成它,既可以作爲主鍵,也可以作爲唯一字段。問題依然存在。我想在數據庫中使用它的原因是,我們有時會在數據庫中工作,這時候沒有太大的映射必須做容易,並且鍵是客戶端,數據庫等 – Sgoettschkes