1

私は次の構造を得ました - これは理想的ではないことは認めますが、その上に非常に多くのことが構築されているため、変更を最小限に抑えたいと考えています。Documents と Delivery Addresses の間の参照整合性
を適切に実装する方法がわかりません。トリガーを使用せずにここで実行できますか? 問題は、ドキュメントで addressNum が Null になる場合があることです。

CREATE TABLE [dbo].[Clients](
    [IdClient] [varchar](10) NOT NULL,
    [Nom] [varchar](40) NULL
    CONSTRAINT PK_Clients PRIMARY KEY (IdClient))
GO

CREATE TABLE [dbo].[ClientsDelivAdr](
    [IdClient] [varchar](10) NOT NULL,
    [AdrNum] [tinyint] NOT NULL,
    [Adresse] [varchar](200) NULL
 CONSTRAINT [PK_ClientsAdrLivr] PRIMARY KEY (IdClient, AdrNum))

CREATE TABLE [dbo].[Documents](
    [DocID] [int] IDENTITY(1,1) NOT NULL,
    [NoDoc] [char](9) NULL,
    [IdClient] [varchar](10) NULL,
    [AdrNum] [tinyint] NULL,
    [DateDoc] [smalldatetime] NOT NULL,
 CONSTRAINT [PK_DocID] PRIMARY KEY (DocId)) 

一部のクライアントには複数の配送先住所があり、一部にはまったくありません。
したがって、データは次のようになります。

Clients
Id   Name     Address 
---  ----     -------
AA   ClientA  addressA
BB   ClientB  qddressB
CC   ClientC  addressC


DeliveryAdresses
Client  Adr   Address
------  ---   -------
AA      1     shop1
AA      2     shop2
CC      1     shopx

Documents
DocId   Client  Addr  OrderDate
------- ------  ----  --------
1001    CC      1     5/5/2013
1002    AA      1     5/5/2013
1003    BB     (Null) 5/5/2013
4

1 に答える 1