私は次の構造を得ました - これは理想的ではないことは認めますが、その上に非常に多くのことが構築されているため、変更を最小限に抑えたいと考えています。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