前提
Microsoft SQLServer2012を利用しています。
■「通常の登録方法」
「登録データ」本当はもっと複雑です。
ID | 名前 | 売上 |
---|---|---|
1 | 太郎 | 1000円 |
2 | 花子 | 2000円 |
「検証ログデータ」検証は複数で人数がいろいろです。
ID | 種別 | 登録日 | 登録者 | コメント |
---|---|---|---|---|
1 | 登録 | 2023.1.4 | パートA | 例外データです |
1 | 検証 | 2023.1.5 | 社員A | 問題なしです |
1 | 検証 | 2023.1.6 | 社員B | 特になし |
2 | 登録 | 2023.1.4 | パートG | |
2 | 検証 | 2023.1.4 | 社員H |
こういったデータが80パターンくらいあり、構造がそれぞれ異なります。
そのため、それぞれに合わせてテーブルを準備して対応しております。
■「XML利用の登録方法」
「データ」xml型 または varchar型
ID | XMLデータ |
---|---|
1 | 下の例参照 |
2 | 省略 |
xmlデータのイメージ
1<root> 2 <!--登録データ--> 3 <TOUROKU> 4 <名前>太郎</名前> 5 <売上>1000円</売上> 6 </TOUROKU> 7 <!--検証ログデータ--> 8 <KENSHOU> 9 <KENSHOU_ITEM> 10 <種別>登録</種別> 11 <登録日>2023.1.4</登録日> 12 <登録者>パートA</登録者> 13 <コメント>例外データです</コメント> 14 </KENSHOU_ITEM> 15 <KENSHOU_ITEM> 16 <種別>検証</種別> 17 <登録日>2023.1.5</登録日> 18 <登録者>社員A</登録者> 19 <コメント>問題なしです</コメント> 20 </KENSHOU_ITEM> 21 <KENSHOU_ITEM> 22 <種別>検証</種別> 23 <登録日>2023.1.6</登録日> 24 <登録者>社員B</登録者> 25 <コメント>特になし</コメント> 26 </KENSHOU_ITEM> 27 </KENSHOU> 28</root>
上記のような「XMLのイメージ」でデータを保持することで、80パターンごとに準備するのではなく、テーブル定義は同じで、データのIOはプログラム上でXmlSerializerクラスを使ってシリアライズ/デシリアライズすることで共有化したと考えています。
実現したいこと
80パターンごとにコーディングをするのではなく、共通化することで、少しコーディングを減らしたいです。
危惧利している点
- 検証をする場合、「通常の登録方法」の場合、「検証ログデータ」に1レコード追加すればいいが、「XML利用の登録方法」の場合、登録データも合わせて更新( varchar型だとフィールド単位の更新なので)してしまうので、バグ等の問題発生時に登録データも消えてしまう可能性がある。
- 検索がしにくい。
確認、ご意見を伺いたこと。
同じデータに対して複数人で更新する可能性があります。
上のようなxmlを利用したデータ保持のやり方に対するご意見があれば教えてほしいです。
例えば、トリッキーなやり方なので「通常の登録方法」でやった方がいい、過去の事例などの意見でもあると助かります。
または、他にも共通化のやり方、王道なやり方などの事例があれば、教えて頂けると助かります。
補足情報
質問が抽象的かもしれませんが、宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。