我有一個有兩個子表的表。對於父表中的每條記錄,我希望在其中一個子表中有一個且只有一個記錄 - 每個記錄中都不是一個,也不是一個。我如何定義?保證孩子記錄在一張桌子或另一張桌子上,但不是兩個?
這是背景故事。隨意批評此實現,但請回答上面的問題,因爲這不是我遇到它的唯一時間:
我有一個數據庫,其中包含有關用戶調查的數據。它最初設計有一種用於開始調查的認證方法。從那時起,需求已經發生了變化,現在有兩種不同的方式可以簽署開始調查。
本來我在調查表中的一列中捕獲了認證令牌。由於需求發生變化,我想在驗證中捕獲另外三個數據位。因此,對於調查表中的每條記錄,我要麼有一個令牌,要麼有一組令牌。所有這四種類型都是不同的類型,所以我的想法是,而不是有四列,其中任何一個將是空的,或者三個將是空的(或者更糟糕的是,這些場景中的任何一個都不好混搭),我會有兩個子表,一個用於保存單個身份驗證令牌,另一個用於保存三個。問題是,我不知道如何在DDL中定義它。
我正在使用MySQL,所以也許有一個功能,MySQL並沒有實現,讓我這樣做。
啊!觸發器是我從未使用過的東西。這是一種沒有其他選擇,只有觸發器的情況嗎?你會怎麼做我想做的事? – user151841 2010-03-12 15:23:36
我會考慮違反第三範式並將4列放在一張表中。 – 2010-03-12 16:35:19
實用性勝出,Raj :) – user151841 2010-03-15 18:09:17