2017-03-10 12 views
1

私は、一例として、倍数テーブルを得た:同じテーブル列に複数の外部キーがありますか?

  • 3表:アラーム1、アラーム2、アラーム3。
  • 1表:AlarmLog
  • 1表:ユーザー
  • 1表:TypeAlarm

アラームテーブル(PK IDとしてID、異なる各テーブルである他のカラム)

AlarmLogテーブル( (ID、AlarmID、UserID、TypeAlarmID)

テーブルalarm1、alarm2、およびalarm3のidは、alarmLog(id、AlarmID、UserID、TypeAlarmID)のIDでログインします。

AlarmLogテーブルに複数のアラームテーブルの各alarmIDで参照する外部キーを追加することは可能ですか?

問題は、一例として、このTSQL作業罰金とは、警報1台のこのような場合には、かなりのサンプルを返すされています

Select * From AlarmLog 
Inner join alarm1 on AlarmLog.AlarmID = alarm1.id 
Inner join Users on Users.id = AlarmLog.UserID 
Inner Join TypeAlarm on TypeAlarm.id = AlarmLog.TypeAlarmID 

しかし、私は上記のTSQLのようなストアドプロシージャを削除してからそれを取得したいですエンティティフレームワーク

あなたは外来キーを手に入れた方が簡単です!

+0

を参照してください?それがあなたの問題の根本的な原因です。 –

+0

テーブルにはデータがいっぱいあり、私はそれをリメイクできません... – Tidoy007

+1

リメイクするには作業が必要です。 1)2つのテーブルへの書き込みを停止し、2)それらのテーブルから保持することにしたテーブルにデータを移動します。私は@ GordonLinoffの評価に同意します。 –

答えて

1

いいえ、1つの列が他の3つのテーブルを指すようにすることはできません。外部キーは強いコヒーレンシチェックを作成し、データは3つのテーブルに存在する必要があります。

唯一の解決策は、外部キーなしで自動的に必要なコヒーレンシチェックとカスケードを実行するために、InsertおよびDelete文でトリガーを使用することです。あなたの代わりに一つだけの、アラームの3つのテーブルを持っていないのはなぜ
https://msdn.microsoft.com/en-us/library/ms189799.aspx

+0

私はトリガを見て、それが役に立つかもしれません。 – Tidoy007

関連する問題