問題タブ [relational-database]
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.
properties - データベースにプロパティテーブルを作成するのは悪い考えですか?
多くの場合、管理者情報やバージョンなどのシステムプロパティを保存する必要がある場合は、フラットファイル(database.properties、init.propertiesなど)を使用します。これは、私が日常的に見たり使用したりしている他のプログラムでは一般的なようです。
フラットファイルは、いくつかの理由で理想的でない場合があります。多くの場合、Webアプリを多数のクライアントにデプロイするには制限があります。このような場合、データベーステーブルを使用して情報を保持します。たとえば、保存したい管理データがいくつかあり、環境に関する詳細がいくつかあるとします。私はこのようなことをするかもしれません:
property_entry_table
これによりSQLの型指定が壊れ、あらゆる種類の型を文字列として保存できるようになります。これは良い習慣ですか、それとも私はこれを間違った方法で行っていましたか?
そうでない場合、このタイプの情報をどのように保存する必要がありますか?
couchdb - ドキュメントデータベーススキーマを設計する
私は無駄にオブジェクトデータベースの使い方を学ぼうとしています。データベースの教科書では、学生、コース、クラスを追跡する例を使用するのが伝統のようです。これは、非常に馴染みがあり、適用できるからです。この例は、オブジェクトデータベースとしてどのように見えますか?リレーショナルデータベースは次のようになります
StudentClassesをClasses内、つまりCourse内に保持し、Studentをトップレベルのエンティティとして保持しますか?
nosql - キーと値のペアの noSQL db が従来のリレーショナル DB よりも高速なのはなぜですか
私が使用しているリレーショナル データベースを置き換えるために、キーと値のペア データ システムを調査するように勧められました。
私がよく理解していないのは、これがクエリの効率をどのように改善するかです。私が理解していることから、構造データベースをキーと値の 1 つの大きな長いリストに変えるだけで、クエリをより効率的にするのに役立つ多くの情報を捨てることになりますか?
ポイントを完全に逃しましたか?
python - GoogleAppEngineに簡単に移行できるように設計
間もなくWebアプリの設計を開始します。SQLの世界で多くの経験を積んでいますが、すぐ近くでGAEに移行するために、何を考慮に入れる必要があるのかわかりません。将来。
または、最初からGAE用のアプリを設計することもできますが、その場合、どのような違いを考慮する必要がありますか?言い換えれば、過去のリレーショナルデータベースから得られた、GAE用のアプリを作成する際の推奨事項と禁止事項は何ですか。
relational-database - これはどのような正規化規則に違反していますか?
データベースに T 10と T 11という 2 つのテーブルがあり、それぞれ 10 列と 11 列があり、そのうちの 10 列は両方でまったく同じであるとします。
違反している正規化ルール (ある場合) は?
mysql - データベース内のバージョン管理のための一般的なオプションはありますか?
私は自分の開発プロジェクトで SVN を使用した経験が少なく、リレーショナル データベースの経験もほとんどありません。テーブルや SQL ステートメントなどの基本的な概念は知っていますが、専門家にはほど遠いです。
私が知りたいのは、SVN のような一般的なバージョン管理タイプのシステムがあるかどうかですが、それはファイルではなくデータベースで動作します。ブランチの作成、タグの作成、ブランチのマージなど、SVN で得られるのと同じ種類の機能が欲しいです。リビジョン番号がファイル リポジトリのバージョンに関連付けられるのではなく、データベースのバージョンに関連付けられます。
実際のデータベース スキーマとは関係なく、この種の機能を追加できる一般的なソリューションはありますか? MySQL または MS SQL Server で動作するソリューションに興味があります。
また、スキーマではなくデータをバージョン管理しようとしていることも明確にする必要があります。スキーマが一定のままであることを期待します。したがって、データの各バージョン間でデータベースに送信されたすべての INSERT、UPDATE、および DELETE 要求のログを作成する方法が必要なようです。そうすれば、目的のバージョンまで保存されたすべての SQL ステートメントを再送信することで、任意のバージョンを再作成できます。
database - リレーショナル データベースの更新をリッスンすることはできますか?
関係データベースの更新を聞くことはできますか? たとえば、私の Web アプリは、Comet テクノロジを介してクライアントにデータ更新を送信したいと考えています。データベースを定期的にポーリングするプログラムを作成することはできますが、パフォーマンスとスケーラビリティに欠けます。
アプリがデータベースの「イベント ハンドラー」にフードできる場合、アプリは特定のデータベース テーブル データが更新されるたびに通知を受け取ることができます。これはより有望に思えますが、具体的な例は見つかりませんでした。これがリスナーパターンです。
一般的なリレーショナル データベースはそのような機能をサポートしていますか?
database-design - データベース理論 - 2 つのテーブル間の関係
2 つのテーブルを持つデータベースがあります。それらを Foo と Bar と呼びましょう。各 foo は任意の数のバーに関連付けることができ、各バーは任意の数の foo に関連付けることができます。1 つのクエリで、特定のバーに関連付けられている foo と、特定の foo に関連付けられているバーを取得できるようにしたいと考えています。
私の質問は、これらの関係を記録する最良の方法は何ですか? 各関係のレコードを含む個別のテーブルが必要ですか (例: foo と bar の 2 つの列)。foo テーブルにはバーのリスト用の列が必要ですか? その逆も同様ですか? 私が見落としている別のオプションはありますか?
php - リレーショナル MySQL - フェッチされたプロパティ?
現在、次のPHPコードを使用しています。
基本的に、特定の Supervisor_id の部下であるユーザーのリストを取得し (すべてのユーザー エントリには Supervisor_id フィールドがあります)、それらのユーザーのいずれかに属するエントリを取得します。
これを行うためのよりエレガントな方法があると思わずにはいられません。SELECT FROM tablename where user->supervisor_id=2222
PHP/MySQL でこのようなものはありますか?
いつかリレーショナルデータベースをちゃんと学べばいいのに。:(
編集:ここに関連するスキーマがあります
onesubmission
には manysubmittedentries
があり、現在、タイムスタンプを使用してこれを参照しています。誰かがより効率的な方法を提案できるなら、私はこれを喜んで変更します。(そして、はい、省略しているフィールドが他にもあります)
database-design - データベース モデリング - ほぼ同一のフィールドを持つ概念的に異なるエンティティ
概念エンティティの 2 つのセットがあるとします。
- 複数のForwardPriceEntriesを持つMarketPriceDataSet
- 複数のPoolPriceForecastEntryを持つPoolPriceForecastDataSet
両方の異なる子オブジェクトには、ほぼ同じフィールドがあります。
ForwardPriceEntry は
- 開始日
- 終了日
- SimulationItemId
- 前売り価格
- MarketPriceDataSetId (親テーブルへの外部キー)
PoolPriceForecastEntry には
- 開始日
- 終了日
- SimulationItemId
- 予測プール価格
- PoolPriceForecastDataSetId (親テーブルへの外部キー)
それらを個別のテーブルとしてモデル化した場合、唯一の違いは外部キーと価格フィールドの名前です。
ほぼ同一の 2 つのテーブルを 1 つにマージする必要があるかどうかについては、議論がありました。
これをモデル化するために私が考えたオプションは次のとおりです。
- それらを2つの独立した別々のテーブルとして保持するだけです
- 追加の「タイプ」フィールドと、いずれかの親テーブルへの外部キーに等しいparent_idを使用して、1つのテーブルに両方のセットを配置します。これにより、参照整合性チェックが犠牲になります。
- 追加の「タイプ」フィールドを使用して 1 つのテーブルに両方のセットを配置し、テーブルを結合する複雑なシーケンスを作成して、参照整合性を維持します。
私は何をすべきだと思いますか、なぜですか?
関連する場合と関連しない場合があるその他の情報:
2 つのデータ セットは大まかに関連しています。それぞれの 1 つのセットがバッチ処理のためにメモリに読み込まれ、場合によっては ForwardPriceEntries からコピーすることによって PoolPriceForecastEntries のセットが生成されます。
MarketPriceDataSetとPoolPriceForecastDataSetには異なるフィールドがあります。それらを 1 つのテーブルにマージすることは可能ですが、エントリの半分に意味のないフィールドが含まれることになります。