是否可以使用一个表来存储针对多个表的图像 - SQL Server 2008 R2

时间:2014-11-04 17:09:03

标签: sql sql-server sql-server-2008

是否可以使用一个表来存储针对多个表的图像?或者最好有一个三个单独的表?只有Office可以有两个图像。

模式

  • Inspectors - InspectorID(PK),InspectorName

  • Offices - OfficeID(PK),OfficeName

  • Staff - StaffID(PK),StaffName

Photo表(以不同表格的二进制形式存储图像)

Photos - PhotoID (PK), PhotoData, InspectorID(FK), OfficeID(FK), StaffID (FK)

新架构

  • Inspectors - InspectorID(PK),InspectorName, PhotoID(FK)

              or 
    
  • Inspectors - InspectorID(PK),InspectorName, PhotoID_1(FK) PhotoID_2(FK)

  • Offices - OfficeID(PK),OfficeName, PhotoID(FK)
  • Staff - StaffID(PK),StaffName, PhotoID(FK)

1 个答案:

答案 0 :(得分:1)

没关系,但你不需要在Photo表和其他表中使用FK。只需将PhotoID FK放入其他三个表中即可。

如果您只需担心办公室的第二张照片,那么在办公室桌面上添加第二张PhotoID FK就可以了。

如果您想要一个更具伸缩性的解决方案,并且/或者如果一张照片可以用于多个其他实体,那么bridge table可能会有序。

或者如果一张照片只能属于一个实体,那么你在相反方向上有一对多,你可以将FK列放在Photo表中,并将它们排除在其他实体表之外。您还可以添加"订单"列表到照片表,以指定照片为实体显示的顺序,或前端可能使用该信息的其他任何内容。