問題タブ [rdbms]
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.
database-design - オブジェクト指向データベースとオブジェクトリレーショナルデータベース
オブジェクト指向データモデリングは、オブジェクトリレーショナルデータモデリングとどのように違うのでしょうか。
オブジェクト指向とリレーショナルデータモデリングの両方の利点が、オブジェクトリレーショナルデータモデリングを実現するためにクラブ化されたようなものですか?
乾杯
rdbms - RDBMS のクラスターとは何ですか?
RDBMS におけるクラスタとは何か説明してください。
sql - カテゴリ、サブカテゴリ、つまり階層データを処理するための最良の方法は何ですか?
複製:
クライアントがカテゴリ、サブカテゴリ、サブサブカテゴリなどを必要とするデータベースがある場合、それを行うための最良の方法は何ですか?必要なのが3つだけで、3つ必要だと常にわかっていれば、cat、subcat、subsubcatなどの3つのテーブルを作成できます。しかし、彼らがさらに深みを求めている場合はどうでしょうか?私は3つのテーブルが好きではありませんが、それが私がそれを行う方法を知っている唯一の方法です。
「 SQL隣接リスト」を見たことがありますが、それが唯一の方法かどうかはわかりませんでした。クライアントが任意のレベルのカテゴリとサブカテゴリを持つことができるように、私は入力を望んでいました。これは階層データを意味すると思います。
編集:可能であればSQLがリストを取り戻すことを望んでいました
ありがとうございました。
sql - 循環データベース関係。良い、悪い、例外?
アプリのこの部分の開発をしばらく延期しているのは、これを循環的な方法で実行したいからですが、学校で講師が教えてくれたのを覚えているので、それは悪い考えだと感じています。
私が残したこの例に関係のないものはすべて無視して、注文システムの設計があります。
- クレジットカード
- お客様
- 注文
そうして欲しい、
- 顧客はクレジットカードを持つことができます (0-n)
- 顧客からの注文 (1-n)
- 注文には 1 人の顧客がいます (1-1)
- 注文には 1 枚のクレジット カードがあります (1-1)
- クレジット カードは 1 人の顧客を持つことができます (1-1) (一意の ID であるため、cc 番号の一意性を無視できます。夫/妻は cc インスタンスなどを共有できます)
基本的に、最後の部分は問題が発生する場所です。クレジット カードが拒否され、別のカードを使用したい場合があります。これは、「現在の」カードを更新する必要がありますが、これはその注文に使用されている現在のカードを変更するだけであり、変更することはできません。顧客がディスク上に持っている可能性のある他の注文。
これにより、3 つのテーブル間に円形のデザインが効果的に作成されます。
考えられる解決策: どちらか
円形のデザインを作成し、参照を与えます:
- cc ref 注文、
- お客様の cc への参照
- 顧客参照注文
また
- お客様の cc への参照
- 顧客参照注文
- 3 つすべてのテーブル ID を参照する新しいテーブルを作成し、注文に固有のものを配置して、常に 1 つの cc のみがその注文に対して最新であるようにします。
基本的に、どちらも同じデザインをモデル化していますが、解釈が異なります。現時点では後者のオプションが最も気に入っています。(それが理にかなっていれば)
私の質問は、
- それぞれの長所と短所がある場合はどうなりますか?
- 循環関係/依存関係の落とし穴は何ですか?
- これはルールの有効な例外ですか?
- 後者よりも前者を選ぶべき理由はありますか?
ありがとうございます。明確化/説明が必要なことがあればお知らせください。
--更新・編集--
記載した要件に誤りがあることに気付きました。SOの物事を単純化しようとすると、基本的にボールを落としました。別のレイヤーを追加する Payments 用の別のテーブルがあります。難点は、注文には複数の支払いがあり、異なるクレジット カードを使用できる可能性があることです。(他の支払い方法についても知りたい場合)。
根本的な問題は依然として同じであり、これは実際には別の複雑さのレイヤーを追加するだけだと思うので、ここでこれを述べます.
search - リレーショナル データベースのように Lucene を使用する
lucene でいくつかの RDBMS 機能を実現できるかどうかは疑問です。
例: 1) 10,000 個のプロジェクト ドキュメント (pdf ファイル) があり、それらのコンテンツを検索できるようにインデックスを作成する必要があります。2) すべてのドキュメントは SINGLE PROJECT に関連付けられています。プロジェクトには、プロジェクト名、番号、開始日、終了日、場所、タイプなどの詳細を含めることができます。
特定のキーワードでpdfファイルの内容を検索する必要がありますが、結果を表示しながら、ポイント(2)で述べたようにプロジェクトのメタデータを表示したいと考えています。
私の考えは、索引付け中に projectId というフィールドを各 pdf ファイルに関連付けることです。それを取得したら、プロジェクトのメタデータを取得するために検索を再度実行します。
このようにして、データの重複を避けることができました。また、プロジェクトのメタデータを更新したい場合は、単一の場所でのみ更新することになります。それ以外の場合、このメタデータをすべての pdf ドキュメント インデックスと共に保存すると、すべてのドキュメントが更新されてしまいます。これは、私が探している方法ではありません。
お知らせ下さい。
primary-key - RDBMS で多対多のコレクション エンティティをどのように解決しますか?
私はアーティストと曲をモデル化しようとしていますが、多くのアーティスト (デュエットなど) が Song_Performance を実行できるという問題があるため、曲の実行者を表す Artist_Group があります。
これで、Artist と Artist_Group の間に多対多の関係ができました。ここで、Artist_Group は、そのグループ内のアーティストのコレクションによって一意に識別されます。Artist_Group へのアーティストの参加を表す交差エンティティを作成できます (Artist_Group_Participation?)
同じアーティストのセットが同じグループを表すという事実を保持する Artist_Group エンティティの主キーを作成する方法がわかりません。Artist_Group エンティティの主キーがないということは、 Artist_Group_Participation エンティティの外部キー。
John Carlis と Joseph Maguire による本「Mastering Data Modeling」では、この形状について言及し、「Many-Many Collection Entity」と呼んでおり、非常にまれであると述べていますが、解決方法については述べていません。 -to-many の関係は、RDBMS に直接格納することはできません。これを表現するにはどうすればよいですか?
編集:
誰もが交差テーブルを提案しているように見えますが、それは私の問題ではありません。私は持っています。私の問題は、Artist_Group エントリに含まれるアーティストのグループが既存のグループと同じである場合、順序を無視して、Artist_Group エントリを追加できないという制約を適用することです。Artist_Group の ID を、それを構成するさまざまなアーティストの連結である varchar にすることを考えました。これにより、順序が重要な場合は問題が解決しますが、「エルトン ジョンとビリー ジョエル」の Artist_Group を使用しても追加は妨げられません。 「ビリー・ジョエルとエルトン・ジョン」のグループ。
testing - 複数の DBMS ベンダーにわたるテスト
次のクエリを実行します。
この場合、SqlServer は修飾子を無視しているようです。を追加するJOIN
と、それが考慮されます。
クエリを DBMS ベンダー間で実行可能にするまでは、これは実際には問題ではありません。たとえば、オラクルは、当然のことながら、修飾子が無効であると文句を言います。
はい、私たちは ORM を使用してこの多くを排除しますが、一部のアクションにはまだ JDBC が必要です (これは製品の性質であり、動的クエリのサポートです)。実際、この問題が発生したのはこのためです。誰かが JPA という名前のクエリを JDBC 提供のクエリにコピーしましたが、テーブル名ではなくオブジェクト名を残しました。
だから私は質問だと思います:他の誰かがこれに出くわしましたか?もしそうなら、コードをテストして「主要な 3 つの」DBMS (SqlServer、Oracle、DB2) で動作することを確認する最善の方法は何ですか? 私たちには QA チームがありますが、これらの特異性を単体テストするためのより良い方法があるはずです。
問題を回避するために常に ANSI SQL の記述を強制しようとしますが、前述の問題のようないくつかの事柄はすり抜けてしまう可能性があることに注意してください。
これが理にかなっていることを願っています。必要に応じて、より多くのコンテキストを提供できます。
ティア
sql-server - 読み取り専用アクセスでデッドロックを作成することは可能ですか?
ADO を介して MSSQL2000 サーバー上の単一のテーブルにアクセスする VB6 アプリケーションがあります。読み取り専用アクセス (adOpenStatic、adLockReadOnly) を使用しています ネットワークには、テーブルに変更を加える他のアプリケーションがあります。
なんらかの理由で、自分のアプリケーションがデッドロックの対象として選択されているというエラーが発生します。
私は本当に混乱しています: 1 つのテーブルから読み込んでいるときにデッドロックが発生するのはなぜですか? 他のアプリケーションの書き込みのためにタイムアウトが発生すると予想されますが、デッドロックではありません...
誰かがこれに光を当てることができますか?
UPDATE: 2009-06-15私はまだこの問題の解決策に興味があります。だから私はいくつかのより多くの情報を提供しています:
- adOpenForwardOnly または adOpenStatic を選択しても違いはありません
- カーソル位置がクライアントかサーバーかは関係ありません。
delphi - フリーフォーム レポート ツール
フリーフォームのレポートツールを探しています。
フリー/オープンソースが望ましいです。
データ ソースがなくても機能し、ページの任意の場所に印刷できる必要があります。
これが必要なのは、古いが非常に高速なセミ RDBMS を使用しているためです。これは、これまでに見たすべてのレポート エンジンで必要とされるデータ セット、データ ソースなどの概念をサポートしていません。
さまざまな言語用のいくつかの宣言モジュールを備えた 2 つの DLL として提供されます。
実際、私は過去 6 年間 ComponentOne の VS View を使用しており、これに非常に満足しています。Delphi でも印刷が必要な場合は、通常、このコンポーネントを使用します。
しかし、この特定のプロジェクトでは、上司が ActiveX の使用を許可しないため、VCL で優れた安定したフリーウェア ソリューションを探しています。