与SQL Management Studio的多对多关系

与SQL Management Studio的多对多关系,sql,entity-relationship,ssms,Sql,Entity Relationship,Ssms,我有以下数据类型-House、Owner,主键分别为houseID和ownerID 一个房主可以有很多房子。一栋房子可以有很多主人。因此,我创建了一个中间表HouseOwner,它包含两列:houseID和ownerID 我应该使houseID和ownerID列成为HouseOwner表的联合主键吗 在HouseOnwer表与House和Owner表之间创建关系怎么样?我转到数据库图并添加所有三个表-现在我应该将houseID从House表拖到HouseOwner表的houseID上吗?还是应该

我有以下数据类型-House、Owner,主键分别为houseID和ownerID

一个房主可以有很多房子。一栋房子可以有很多主人。因此,我创建了一个中间表HouseOwner,它包含两列:houseID和ownerID

  • 我应该使houseID和ownerID列成为HouseOwner表的联合主键吗

  • 在HouseOnwer表与House和Owner表之间创建关系怎么样?我转到数据库图并添加所有三个表-现在我应该将houseID从House表拖到HouseOwner表的houseID上吗?还是应该换一个回合,把houseID从HouseOwner表拖到houseID表上?我不确定该怎么做,因为弹出的对话框正在查找主键表和外键表


  • 问题1:我想添加一个额外的代理主键(只是一个标识列),但对此有很多讨论


    问题2:外键在您的HouseOwner表中,它们与house的PK和owner表的另一个外键相关。

    问题1:我想添加一个额外的代理主键(只是一个标识列),但对此有很多讨论

    问题2:外键在house owner表中,它们与house的PK和owner表的另一个外键相关。

    1)是-具体地说,我会这样做,因为如果您使用一些ORM工具(特别是EF),当您的表设计成这样时,多对多关系会自动计算出来

    2) 我建议只采用老式的方式,这样您就不必担心UI:

    alter table HouseOwner
    add constraint FK_HouseOwner_House
    foreign key (HouseId)
    references House (HouseId)
    go
    alter table HouseOwner
    add constraint FK_HouseOwner_Owner
    foreign key (OwnerId)
    references Owner (OwnerId)
    go
    
    1) 是的,特别是,我会这样做,因为如果您使用一些ORM工具(特别是EF),当您的表设计成这样时,多对多关系将自动计算出来

    2) 我建议只采用老式的方式,这样您就不必担心UI:

    alter table HouseOwner
    add constraint FK_HouseOwner_House
    foreign key (HouseId)
    references House (HouseId)
    go
    alter table HouseOwner
    add constraint FK_HouseOwner_Owner
    foreign key (OwnerId)
    references Owner (OwnerId)
    go