就像stackoverflow,問題和標籤之間有多對多的關係。爲什麼Doctrine僅在鏈接表中的一列創建索引?
./symfony doctrine:drop-db
./symfony doctrine:build-db
./symfony doctrine:build-model
./symfony doctrine:build-sql
./symfony doctrine:insert-sql
下面的模式:
運行這些命令的symfony後
的schema.yml
Tag:
columns:
name:
type: string(10)
notnull: true
relations:
Questions:
class: Question
foreignAlias: Tags
refClass: QuestionTag
Question:
columns:
html:
type: string(1000)
relations:
Tags:
class: Tag
foreignAlias: Questions
refClass: QuestionTag
QuestionTag:
columns:
question_id:
type: integer
primary: true
tag_id:
type: integer
primary: true
relations:
Question:
class: Question
foreignAlias: QuestionTags
type: many
foreignType: one
Tag:
class: Tag
foreignAlias: QuestionTags
type: many
foreignType: one
在QuestionTag
連結表,這有助於建立多對一Tag
與Question
表之間的一對多關係d,Doctrine只在tag_id
列中創建了一個「正常」索引。爲什麼在這個列上,但不在question_id
列?我不知道。
我覺得這很奇怪,因爲這種理論創建索引應該兩個question_id
和tag_id
列,因此它應該成爲一個「獨一無二」的索引,而不是一個「正常」的一個,因爲question_id
和tag_id
一起形成複合主鍵。
我的理解是否正確? 如果是的話,爲什麼沒有教條正確的方式呢?
爲什麼不只是手動定義PK和索引? – develop7 2010-03-12 13:05:24