我正在使用Symfony2构建一个用于管理电影数据库的应用程序。
我有电影表和艺术家表。

现在在电影中,可能会有许多扮演不同角色的艺术家,而我的问题开始了,因为我不太擅长关系映射,所以我面临问题。

对于电影X,艺术家A是演员,对于电影Y,艺术家B是演员和导演。

现在我的问题是如何建立Joining表,以便保存检索到的艺术家相关作品,例如:电影名称,角色(一部电影可能是多个角色)

到目前为止,我的ORM是:电影

table: content
id:
    id:
        type: integer
        generator: { strategy: AUTO }
fields:
    title:
        type: string
        length: 120
        unique: true
manyToMany:
    actor:
          targetEntity: Artist
          joinTable:
              name: content_actor
              joinColumns:
                   content_id:
                        referencedColumnName: id
              inverseJoinColumns:
                   artist_id:
                        referencedColumnName: id


艺术家的ORM:

 id:
        id:
        type: integer
        generator: { strategy: AUTO }
fields:
    name:
        type: string
        length: 255
        unique: true


但这为导演创造了一个问题,我为歌手,摄影师,女演员等创建了另一个联接表,因此,如何只有一个表可以存储所有信息并使数据规范化?

感谢帮助

最佳答案

好吧,我写另一种方式:

使用可以使用此映射:

电影:

Movie:
    type: entity
    table: movie
    id:
        id:
            type: integer
            generator: { strategy: AUTO }
    fields:
        title: ~
        createdAt:
            type: datetime
    oneToMany:
        roles:
            targetEntity: Role
            mappedBy: movie


艺术家:

Artist:
    type: entity
    table: artist
    id:
        id:
            type: integer
            generator: { strategy: AUTO }
    fields:
        fname: ~
        lname: ~
        birthDate:
            type: datetime
        #other fields for this entity


角色:

Role:
    type: entity
    table: role
    id:
        id:
            type: integer
            generator: { strategy: AUTO }
    fields:
        name: ~

    manyToMany:
        artist:
            targetEntity: Artist

    manyToOne:
        movie:
            targetEntity: Movie
            inversedBy: roles

关于mysql - Symfony2多对多关系数据库结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29692163/

10-15 13:53
查看更多