sma*_*man 2 sql sql-server insert identity-column bidirectional-relation
我的声明是将"Arnold Schwarzenegger"和"Hasta la vista baby"插入以下空SQL表中?
这个问题的标题最初是"如何将第一条记录插入到具有双向关联和自动生成的整数PK的SQL表中?" 但我不知道,如果我是那个措辞正确...基本上,我有两个表Actors和CatchPhrases.
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)
因此,演员可以有多个短语,但必须至少有一个.一个口号与一个演员相关联.两个表中目前都没有数据.
我会以不同的方式对其进行建模以避免双向关系(这很难做到).只需在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)
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |