古いIDシステムを維持しながら、いくつかの重複するIDシステムを統一されたものに統合する最良の方法は何ですか.
私の Web サイトにはいくつかの異なる ID があります... (例: /publisher/1234 と /designer/1234) ID を新しいシステムに統合したいと考えていますが、古いシステムの機能を維持したいと考えています。
古いIDシステムを維持しながら、いくつかの重複するIDシステムを統一されたものに統合する最良の方法は何ですか.
私の Web サイトにはいくつかの異なる ID があります... (例: /publisher/1234 と /designer/1234) ID を新しいシステムに統合したいと考えていますが、古いシステムの機能を維持したいと考えています。
@Steven A. Loweの答えは確かに最も単純で、既存のアプリケーションへの影響が最も少ないものです。
ニヤリと笑うためだけに、スキーマに他の変更(新しいテーブル、列)を加えたいと仮定しましょう。
何かを組み合わせる前に、テーブルを注意深く調べます。テーブルによって表されるエンティティ/関係が明確で正規化されていることを確認してください。publisher
とdesigner
が実際に同じもの、同じエンティティである場合、2つを組み合わせた新しいテーブルが望ましい場合があります。
したがって、新しい一意のIDを使用して新しいテーブルを作成します。次に、このIDを元のテーブルに関連付ける方法はいくつかあります。「履歴」(元の場所と古いID)を構造化するには、理想的には別のテーブルにいくつかの列が必要になります(実際には新しいテーブルについてではないためです)が、可能です。新しいテーブル定義に含まれます。
何かのようなもの
new table
column newId
.
.
.
column oldTableName
column oldId
また
new table
column newId
.
.
.
join table
column newId
column oldTableName
column oldId
次に、古いテーブル構造を既存のアプリケーションに提示する1つ以上のビューを作成できます。
create view oldTable id, [...] as
select oldId, newTable.col1, newTable.col2
where oldTableName = 'oldTable
IDをマージする方法は他にもありますが、ここで説明する2つでおそらく十分です。
ブリッジテーブル
column newId
column oldId