問題タブ [database-agnostic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - データベースに対して SQL スクリプトを実行するのに適したツールは何ですか?
現在、データベース スキーマと新しいデータベースの初期データをセットアップし、バージョン パッチなどを実行するデータモデルから、vanilla-SQL (標準 SQL のみを使用) を生成するカスタム ツールがあります。この部分はすべて問題ありません。そしてダンディな今。
ただし、これらの SQL スクリプトをすべての異なるデータベース (異なるベンダー) に対して実行するのは面倒なので、少し前に簡単な PHP スクリプトを作成しました。
ありがとう
database - データベースに依存しないアプリケーションをどのように作成しますか?
上司から、ANSI SQL だけを記述してデータベースに依存しないようにするように言われました。しかし、ANSI SQL と完全に互換性のあるデータベースはないため、それほど簡単ではないことを知りました。SQL コードを変更せずにデータベース システム間で移植できることはめったにありません。
プログラムデータベースを独立させるために、人々がさまざまな方法を行っているのを見ました。例えば:
- SQL ステートメントをリソース ファイルに外部化します。
- さまざまなデータベースをサポートするために、多くのプロバイダー クラスを記述します。
- 単純な SQL のみを記述し、高度な関数や結合は避けてください。
あなたは常に「任意のデータベース対応」のコードを書いていますか? それとも必要な場合のみ行いますか?はいの場合、どのようにそれを達成しますか?
sql - なぜこの種の外部キーが可能なのですか?
SQL標準がこれを受け入れるのはなぜですか?メリットはどれですか?
それらのテーブルがある場合:
これはエラーなしで挿入できます。
注1:これはこの回答から来ています。
注2:これは回避できます。両方の列にnullを設定しないでください。
備考:回避については質問していません。どちらがメリットになるのか興味があります。
参照:
Oracleのドキュメント: リレーショナルモデルでは、外部キーの値を、参照されているプライマリキーまたは一意キーの値と一致させるか、nullにすることができます。複合外部キーのいずれかの列がnullの場合、キーのnull以外の部分は、親キーの対応する部分と一致する必要はありません。
SQL Serverのドキュメント:FOREIGNKEY制約にはnull値を含めることができます。ただし、複合FOREIGN KEY制約のいずれかの列にNULL値が含まれている場合、FOREIGNKEY制約を構成するすべての値の検証はスキップされます。
views - データベースビューを使用する場合と使用しない場合
この質問は、マテリアライズド・ビューではなく、データベース・ビューに関するものです。
長所:
- クエリの簡略化。
- 複数のクエリで同じ結合を繰り返すことは避けてください。
- マジックナンバーは避けてください。
短所:
- 実際のクエリを非表示にします(結合を繰り返している可能性があります)。
ほかに何か?
sql - NCAA バスケットボール ブラケットを表す最適なスキーマ
NCAA 男子バスケットボール ブラケットを表すのに最適なデータベース スキーマは何ですか? 慣れていない場合は、次のリンクをご覧ください: http://www.cbssports.com/collegebasketball/mayhem/brackets/viewable_men
単一のテーブル、多数のテーブル、ハードコーディングされた列、やや動的な方法など、このデータをモデル化するいくつかの異なる方法を見ることができます。各チームのシードと場所の両方をモデル化する方法が必要です。ゲームとそれぞれの結果 (場合によってはスコア)。また、トーナメントのどの段階で誰が誰と対戦するかを表す方法も必要です。
マーチ・マッドネスの精神から、これは良い質問だと思いました。ここには明らかな答えがいくつかあります。この質問の主な目的は、あなたがそれに答えることができるさまざまな方法をすべて見ることです. どちらの方法が最適かは、使用している言語やそれをどのように正確に扱っているかによって主観的なものになる可能性がありますが、データベースにとらわれず、言語にとらわれず、かなり高いレベルの回答を維持するようにしてください。この質問をより適切に表現する方法、またはより適切に定義する方法について提案がある場合は、コメントでお知らせください。
constraints - データベース内でテーブル間の制約を適用する最良の方法
テーブル間の制約をチェックするための最良の方法を探しています。たとえば、日付の子レコードの値が 2 つの親行列の日付範囲内にあるかどうかを確認するには、次のようにします。例えば:
私は2つのアプローチを見ています:
- この記事(または他の RDBMS で同等のもの) に示されているように、コミット時にマテリアライズド ビューを作成します。
- ストアド プロシージャとトリガーを使用します。
他のアプローチはありますか?最良の選択肢はどれですか?
UPDATE : この質問の動機は、「データベースまたはアプリケーションに制約を課す」ことではありません。これは疲れた質問だと思います。誰もが彼女の好きなようにしています。そして、中傷者には申し訳ありませんが、データベースに制約を付けて開発しています。ここからは、「データベースのテーブル間の制約を管理するための最良のオプションはどれですか?」という質問です。質問のタイトルに「データベース内」を追加しました。
更新 2 : 誰かが「 oracle」タグを追加しました。もちろん、具体化されたビューはオラクルツールですが、オラクルまたは他のRDBMSに関係なく、どのオプションにも興味があります。
python - 既存のDjangoプロジェクトのタイムゾーンを変更する
ばかみたいに、日時データを収集するアプリケーションを最初に作成したとき、タイムゾーンの設定を見落としていました。
私がやっていたのは「時から」のスタイルの比較と順序付けだけだったので、それは問題ではありませんでした。次に、実際の日時を示す完全なレポートを作成する必要があります。もちろん、それらはすべてAmerica / Chicago(ばかげたDjangoのデフォルト)に保存されています。
あ、はい。私はこれらの日付が正しくない中規模のデータベースを持っています。settings.TIME_ZONE
に変更したいのです'UTC'
が、既存のデータには役立ちません。
すべてのモデルデータをまとめて変換するための最良の(読む:最も簡単で最も速い)方法は何ですか?
(すべてのデータは過去2か月以内のものであるため、ありがたいことに変換するDSTはありません)
このプロジェクトは現在SQLite上にありますが、DSTが開始する前に同じことをしたいと思うかもしれない同様の問題を抱えたPostgreSQL上の別のプロジェクトがあります...したがって、理想的にはDBにとらわれない答えです。
sql - このクエリが空でない子テーブルの結果のみを返すのはなぜですか?
これは、子行が一致するメインの親テーブル内のすべての行を検索する必要がある、実行中のクエリの簡略化されたバージョンです。次のクエリは、子テーブルの 1 つが空の場合、結果を返しません。
メイン テーブルには 2 つの子テーブルがあります。
child2 には行がなく、空の場合、次のクエリは行を返しません。
行が child2 に追加された場合、それが WHERE 句と一致しなくても、SELECT はメイン テーブルの行を返します。
Derby と SQLite でこれをテストしたので、これはデータベースでは一般的なものに見えます。
なぜこれがこのように振る舞うのですか?
修正するにはどうすればよいですか?
UNION の個別の SELECT に変更することもできますが、それははるかに冗長であり、さらに、SQL を動的に生成しているため、コードを変更する必要はありません。
もう 1 つの修正方法は、データベースにダム行を追加することですが、これは面倒です。
PS メイン テーブルは、クライアントが検索するアセットを記録するアセット管理システムのセッション テーブルです。ルックアップにはさまざまな種類があり、種類ごとに個別の子テーブルが取得されます。さらに、検索可能なセッションのキーと値のペアの属性子テーブルがあります。