我的SQL语句是将"Arnold Schwarzenegger"和"Hasta la vista baby"插入这两个空SQL表中?

sma*_*man 2 sql sql-server insert identity-column bidirectional-relation

我的声明是将"Arnold Schwarzenegger"和"Hasta la vista baby"插入以下空SQL表中?

这个问题的标题最初是"如何将第一条记录插入到具有双向关联和自动生成的整数PK的SQL表中?" 但我不知道,如果我是那个措辞正确...基本上,我有两个表ActorsCatchPhrases.

Actors 好像:

  ActorId                  int             NOT NULL  PK (autogenerated by db)
  FavoriteCatchPhraseId    int             NOT NULL  FK
  Name                     varchar(200)    NOT NULL
Run Code Online (Sandbox Code Playgroud)

CatchPhrases 好像:

  CatchPhraseId            int             NOT NULL  PK (autogenerated by db)
  ActorId                  int             NOT NULL  FK
  PhraseText               varchar(500)    NOT NULL
Run Code Online (Sandbox Code Playgroud)

因此,演员可以有多个短语,但必须至少有一个.一个口号与一个演员相关联.两个表中目前都没有数据.

tva*_*son 5

我会以不同的方式对其进行建模以避免双向关系(这很难做到).只需在CatchPhrases表中添加一列(IsFavorite)即可.在代码中使用约束或业务规则来将标记为每个actor的最爱的catch短语的数量限制为一个.

演员:

ActorId                  int             NOT NULL  PK (autogenerated by db)
Name                     varchar(200)    NOT NULL
Run Code Online (Sandbox Code Playgroud)

口头禅:

CatchPhraseId            int             NOT NULL  PK (autogenerated by db)
ActorId                  int             NOT NULL  FK
PhraseText               varchar(500)    NOT NULL
IsFavorite               bit             NOT NULL
Run Code Online (Sandbox Code Playgroud)

确保你在CatchPhrases表的ActorId上有一个索引,这样你就可以快速找到actor的catch短语.

或者,使用连接表 - 这将允许多个actor具有相同的口号.

演员:

ActorId                  int             NOT NULL PK (autogenerated by db)
Name                     varchar(200)    NOT NULL
Run Code Online (Sandbox Code Playgroud)

ActorCatchPhrases

ActorId                  int             NOT NULL PK (FK to Actors)
CatchPhraseId            int             NOT NULL PK (FK to CatchPhrases)
IsFavorite               bit             NOT NULL
Run Code Online (Sandbox Code Playgroud)

口头禅

PhraseId                 int             NOT NULL PK (autogenerated by db)  
PhraseText               varchar(500)    NOT NULL
Run Code Online (Sandbox Code Playgroud)