0

サービスエントリと呼ばれるテーブルがあります。サービス エントリには、複数の部分が存在する場合があります。そのため、テーブル サービス エントリ パーツには各パーツの行があります。部品は部品テーブルに格納されます。サービス エントリ テーブルには、ページでの表示に使用される部品情報を含むカンマ区切りの列があります。

Dbo.Part

ID   PartDescription
270  Syringe assembly
282  LPH pcb 
287  Valve block assembly 

Dbo.ServiceEntry

ServiceEntryID, Description
     1200         270 ~ Syringe assembly  ~ 7,3 ~ Increase drive current from 3 --> 1.|282 ~ LPH pcb ~ 8 ~  | 287 ~ Valve block
   assembly ~ null ~

上記の列の構造は次のとおりです。

PartID ~ PartDescription ~ ServiceType ~ Comment

複数のパーツの場合は、この文字|が追加され、構造が繰り返されます。

ServiceEntryPart:

ID  ServiceEntryID   PartID  ServiceTypev Comment
1    1200            270      7,3         Increase drive current from 3
2    1200            282      8          
3    1200            287      null    

質問

Dbo.Part

ID   PartDescription       OldID
331  Syringe assembly      270
335  LPH pcb               282
336  Valve block assembly  287

上記のパーツ テーブルを見ると、何が起こっているかというと、パーツ テーブルが更新されているということです。新しいパーツが追加され、既存のパーツの ID が新しい ID に更新され、新しいパーツの説明が存在する可能性もあります。ご覧のとおり、列部分の説明を含むサービス エントリ テーブルは、以前に作成されたサービス エントリに対して同期されません。私がやろうとしているのは、既存のサービス エントリ パーツ テーブルを新しいパーツ ID とその説明で更新し、最後にサービス エントリ テーブルのパーツの説明と呼ばれる列を更新することです。サービス エントリ パーツ テーブルの更新は簡単ですが、サービス エントリ テーブルの区切られた列をどのように更新するかが問題です。

4

1 に答える 1

0

私があなたを正しく理解していれば、複数の区切り値を含む列 (PICK データベースなど) を使用しています。

`For multiple parts, this character | is added and the structure is repeated.`

通常、正規化されたデータベースでは、次のようになります。

UNIT  (something that might need service or repair)
UnitId  PK
UnitDescription

PARTS  (repair / replacement parts)
PartId PK
PartDescription

UNIT_SERVICES  (instances of repair visits/ service)
ServiceID   int primary key
UnitId      foreign key references UNIT
ServiceDate
TechnicianID
etc


SERVICE_PART   (part used in the service)
ID          primary key
ServiceID   foreign key references SERVICE
PartID      foreign key references PART
Quantity

UNIT に関連付けられた UNIT_SERVICES は、ゼロ、1 つ、または複数存在する可能性があります。SERVICE に関連付けられた SERVICE_PARTS は、0 個、1 個、または複数存在する可能性があります。

正規化されたデータベースでは、ユニットのサービスに使用される各パーツは、SERVICE_PART テーブルの独自の行に存在します。現代の OODBMS の前身である、いわゆる多値データベースで一般的に行われていたように、同じ SERVICE_PART タプルに 2 つ以上の部分があり、区切り文字で区切られていることはありません。

于 2013-02-12T21:45:27.757 に答える