0

現在、次の形式のテーブル モデルがあります。

基準 (基準 ID、基準名​​)

基準データ(基準ID、値)

1 つの基準 (日付基準) には、criteria_data テーブルに単一の日付を含めることができ、他の基準データには別の行の日付の株価を含めることができるという意味で、日付関連の情報をテーブルに格納するつもりです。(もう 1 つの複雑な点は、株式の名前も基準であるということです)。

私の問題:

特定の日付と銘柄名 (他の 2 つの個別の基準と行) に対して、1 つの価格 (単一行の基準) のみをテーブルに入力できるようにするにはどうすればよいですか。

アプリ層でこれを強制したくないので、主に DB 層ソリューションを探しています (利用可能な場合)。

より適切なデータ モデルが提案された場合、テーブル モデル全体を廃棄するように言われることにもオープンです。

編集 私の愚かさを知らされた後(以下のdPortasの投稿を参照)、これが賢明な方法ではないことを受け入れます。新しいモデルを考えました:

criteria_data(株式名,価格,高値,安値,価格,変化)

これはどのように見えるかですが、実際の列名は criteria_id を含む識別子になると思います。たとえば、stockname フィールドを col_1 に、high を col_3 にすることもできますが、これにより、さまざまな列の整合性を確保できます。

これについて人々はどう思いますか?

4

1 に答える 1

1

あなたのテーブルのデザインは、 EAVのケースのように疑わしく見えます。このアンチパターンの欠点の 1 つは、正しいデータ型を正確に格納したり、それに制約を適用したりできないことです。デザインを見直すことをお勧めします。

推奨される再設計: 基準 (criteria_id, criteria_name, date, stock_name, price) キー: (stock_name, date)

于 2011-06-16T16:27:29.417 に答える