私のソフトウェアは数日前に製品化されましたが、データベース構造について少し議論したいと思います。
このソフトウェアは、船舶に関するデータを収集します。現在、船舶ごとに 174 の詳細があります。各詳細は、テキスト値、長いテキスト値、数値 (指定された長さ、指定された小数点以下の桁数の有無にかかわらず)、日付、日付のいずれかです。時間、ブール値フィールド、多くの値を持つメニュー、データのリストなど。
次の表で問題を解決しました
輸送する: - ID - smallint、オートインクリメント ID - IMO - int、船の寿命の間変わらない数 船の詳細タイプ: - ID - smallint、オートインクリメント ID - 説明 - nvarchar(200)、フィールドに含まれる値の説明 - 位置 - smallint, データ入力フォーム内のフィールドの位置 - ShipDetailGroup_ID - smallint、データ入力フォームでフィールドが属するグループへのキー - タイプ - varchar(4)、上記のフィールドのタイプ ShipDetailGroup - ID - smallint、オートインクリメント ID (をちょきちょきと切る...) ShipMenuPresetValue - ID - smallint、オートインクリメント ID - ShipDetailType_ID - smallint、値が属する詳細へのキー - 値 - nvarchar(100)、メニュー タイプの詳細に事前設定された値 ShipTextDetail - ID - smallint、オートインクリメント ID - Ship_ID - smallint、詳細が属する船のキー - ShipDetailType_ID - smallint、値の詳細タイプへのキー - テキスト - nvarchar(500)、詳細の値を含むフィールド - ModifiedDate - smalldatetime - User_ID - smallint、ユーザー テーブルへのキー ShipTextDetailHistory (をちょきちょきと切る...) このテーブルは ShipTextDetail と同じで、詳細へのすべての変更が含まれています。 リスト詳細タイプのその他のテーブルには、リストに必要な指定されたフィールドがそれぞれあります...
この記事を読みました: http://thedailywtf.com/Articles/The_Inner-Platform_Effect.aspxおよびhttp://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID :10678084117056
記事には、これは問題を処理する正しい方法ではないと書かれています。
私の顧客は、詳細の説明を変更し、詳細を追加するため、詳細とグループの管理 GUI を持っています。
データ入力フォームは、DetailGroups および DetailTypes から構造を読み取ることによって動的に構築され、各詳細タイプは指定された入力コントロールを生成します。
コメントは、この問題を解決する別の方法は、テーブルから列を動的に作成および削除することであることを示唆しています。
どう思いますか?
図のスクリーンショット: http://img24.imageshack.us/my.php?image=66604496uk3.png