Вы можете сделать свой дизайн БД, с YAML. Если вы хотите установить отношение N-M, вам нужно сделать что-то вроде этого (он показывает пример дурака о собаках с более чем одним владельцем и владельцев с более чем собакой)
---
options:
type: INNODB
collate: utf8_unicode_ci
charset: utf8
Human:
columns:
id:
type: integer(4)
primary: true
autoincrement: true
name:
type: varchar(64)
notnull: true
...
...
relations:
Dogs:
foreignAlias: Humans
class: Dog
ref_class: Human_Dogs
Dog:
columns:
id:
type: integer(4)
autoincrement: true
primary: true
owner:
type: varchar(64)
notnull: true
...
...
relations:
Humans:
foreignAlias: Dogs
class: Human
ref_class: Human_Dogs
Human_Dogs:
columns:
human_id:
type: int(4)
primary: true
dog_id:
type: int(4)
primary: true
relations:
Human:
foreignAlias: Human_Dogs
Dog:
foreignAlias: Human_Dogs
Это будет файл file.yml, так что теперь вы можете сгенерировать БД из этого файла. То, как вы можете это сделать, во многом зависит от структуры или программы, с которой вы работаете. В любом случае, здесь есть простой способ сделать это в PHP + Doctrine:
<?php
$options = array(
'packagesPrefix' => 'Plugin',
'baseClassName' => 'MyDoctrineRecord',
'suffix' => '.php'
);
Doctrine_Core::generateModelsFromYaml('/path/to/file.yml', '/path/to/model', $options);
?>
При правильной конфигурации вы можете автоматически генерировать поле id.
В этой ссылке есть учебник -> Документация
Надеюсь, это поможет вам!