小编use*_*679的帖子

当两个 FK 列需要在同一个表中匹配自己时的参照完整性?

可能我的设计是错误的,或者只是有更好的方法。我将使用一个非常简单的例子:

    --------- dbo.Book----------
   |                            |
   |  BookID int identity (1,1) |
   |  ShelfID int FK            |--
    ----------------------------   |
                                   |
    --------- dbo.Row-----------   |    
   |                            |  |    
 --|  RowID int identity (1,1)  |  |    
|   ----------------------------   |    
|                                  |        
|   -------- dbo.Shelf----------   | 
|  |                            |  |
|  |  ShelfID int identity (1,1)|--
 --|  RowID int FK              |
    ----------------------------
Run Code Online (Sandbox Code Playgroud)

足够简单。

但是如果我想分配一个没有架子的行怎么办?也许我们还知道行而不是货架:

    --------- dbo.Book----------
   |                            |
   |  BookID int identity (1,1) |
   |  RowID int FK              | <-- New
   |  ShelfID int FK …
Run Code Online (Sandbox Code Playgroud)

foreign-key database-design sql-server referential-integrity

2
推荐指数
1
解决办法
422
查看次数