タグ付けされた質問 「relational-database」

リレーショナルデータベースは、関係変数(* relvars *、* R-tables *または* tables *とも呼ばれます)で構成されるデータベースです。リレーショナルデータベースの定義、操作、整合性のルールは、リレーショナル代数と微積分と同等または類似のリレーショナル演算に基づいています。リレーショナルデータベースの原則は、データ管理の理論と実践の重要な部分の基礎です。

7
リレーショナルデータベースに階層データを格納するためのオプションは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 10か月前に閉鎖。 良い概要 一般的に言って、あなたは速い読み込み時間(例えば、入れ子になったセット)または速い書き込み時間(隣接リスト)の間で決定を下しています。通常、ニーズに最も適合する以下のオプションの組み合わせになります。以下に、いくつかの詳細な資料を示します。 もう1つのネストされた間隔と隣接リストの比較:隣接リスト、マテリアライズドパス、ネストされたセット、ネストされた間隔の最も優れた比較。 階層データのモデル:トレードオフと使用例の適切な説明を含むスライド MySQLでの階層の表現:特にネストされたセットの概要 RDBMSの階層データ:私が見た中で最も包括的でよく整理されたリンクのセットですが、説明の仕方はあまりありません オプション 私が知っているものと一般的な機能: 隣接リスト: 列:ID、ParentID 実装が簡単です。 安価なノードが移動、挿入、削除されます。 レベル、祖先と子孫、パスを見つけるのに費用がかかる それらをサポートするデータベースの共通テーブル式によるN + 1を回避する ネストされたセット(別名Modified Preorder Tree Traversal) 列:左、右 安い祖先、子孫 O(n/2)揮発性エンコーディングのため、非常に高価な移動、挿入、削除 ブリッジテーブル(別名クロージャテーブル/ wトリガー) 先祖、子孫、深さ(オプション)で個別の結合テーブルを使用します 安い祖先と子孫 O(log n)挿入、更新、削除にかかるコスト(サブツリーのサイズ) 正規化されたエンコーディング:RDBMS統計と結合のクエリプランナーに適しています ノードごとに複数の行が必要 系統列(別名マテリアライズドパス、パス列挙) 列:系統(例:/ parent / child / grandchild / etc ...) 接頭辞クエリによる安い子孫(例LEFT(lineage, #) = '/enumerated/path') O(log n)挿入、更新、削除にかかるコスト(サブツリーのサイズ) …

7
いつ、なぜデータベースの結合は高価なのですか?
私はデータベースの調査を行っており、リレーショナルDBのいくつかの制限を見ています。 大きなテーブルの結合は非常にコストがかかると感じていますが、その理由は完全にはわかりません。結合操作を実行するためにDBMSは何をする必要がありますか?ボトルネックはどこですか? 非正規化はこの費用を克服するのにどのように役立ちますか?他の最適化手法(インデックス作成など)はどのように役立ちますか? 個人的な体験は大歓迎です!リソースへのリンクを投稿する場合は、ウィキペディアを避けてください。すでにどこにあるかは知っています。 これに関連して、BigTableやSimpleDBなどのクラウドサービスデータベースで使用される非正規化アプローチについて疑問に思っています。この質問を参照してください。



4
SQLでは結合順序は重要ですか?
パフォーマンスを無視すると、以下のクエリAとBから同じ結果が得られますか?CとDはどうですか? -- A select * from a left join b on <blahblah> left join c on <blahblan> -- B select * from a left join c on <blahblah> left join b on <blahblan> -- C select * from a join b on <blahblah> join c on <blahblan> -- D select …

10
時系列データを保存しますか、リレーショナルまたは非保存ですか?
SNMPを使用して(おそらく)5分間隔で、CPU使用率、ディスク使用率、温度などのさまざまなメトリックに関するデータをデバイスにポーリングするシステムを作成しています。最終的な目標は、システムのユーザーに時系列グラフの形で視覚化を提供することです。 私は過去にRRDToolの使用を検討しましたが、キャプチャされたデータを無期限に保存することは私のプロジェクトにとって重要であり、キャプチャされたデータへのより高いレベルでより柔軟なアクセスが必要であるため拒否しました。だから私の質問は本当に: グラフ化のためにデータをクエリするときのパフォーマンスに関しては、リレーショナルデータベース(MySQLやPostgreSQLなど)または非リレーショナルデータベースやNoSQLデータベース(MongoDBやRedisなど)のほうが優れています。 関連した リレーショナルデータベースが与えられた場合、data_instancesテーブルを使用します。このテーブルには、すべてのデバイスで測定されるすべてのメトリックについてキャプチャされたデータのすべてのインスタンスが格納され、次のフィールドが含まれます。 田畑: id fk_to_device fk_to_metric metric_value timestamp 特定のデバイスの特定のメトリックのグラフを描画する場合、他のデバイスを除外するこの特異なテーブルと、このデバイスに対して分析されている他のメトリックをクエリする必要があります。 SELECT metric_value, timestamp FROM data_instances WHERE fk_to_device=1 AND fk_to_metric=2 このテーブルの行数は次のようになります。 d * m_d * f * t ここdで、はデバイスの数、m_dはすべてのデバイスについて記録されているメトリックの累積数、fはデータがポーリングされる頻度、およびシステムがデータを収集していtた合計時間です。 年間5分ごとに3台のデバイスの10のメトリックを記録するユーザーの場合、500万レコード弱になります。 インデックス インデックスを付けずにこの継続的に拡張するテーブルfk_to_deviceをfk_to_metricスキャンしないと、時間がかかりすぎます。したがって、前述のフィールドにインデックスを付けることと、timestamp(ローカライズされた期間でグラフを作成するために)要件になります。 非リレーショナル(NoSQL) MongoDBにはコレクションという概念があります。テーブルとは異なり、これらは設定なしでプログラムで作成できます。これらを使用して、デバイスごとにデータのストレージを分割したり、デバイスごとに記録されたメトリックを分割したりすることもできました。 私はNoSQLの経験がなく、インデックス作成などのクエリパフォーマンス向上機能が提供されているかどうかはわかりませんが、前の段落では、データがNoSQLに格納される構造で従来のリレーショナルクエリ作業のほとんどを実行することを提案しています。 未定 正しいインデックス付けを使用するリレーショナルソリューションは、1年以内にクロールに減少しますか?または、コレクションに基づくNoSQLアプローチの構造(これは、格納されたデータの私のメンタルモデルに一致します)は顕著な利点を提供しますか?


6
3NFとBCNFの違いを簡単な言葉で(8歳まで説明できる必要がある)
見積もりを読みました。 データはキー[1NF]、キー全体[2NF]に依存し、キー[3NF]にのみ依存しています。 しかし、3.5NFまたはBCNFと呼ばれているとおりに理解できません。これが私が理解していることです: BCNFは3NFよりも厳しい テーブル内のFDの左側はスーパーキー(または少なくとも候補キー)である必要があります では、なぜ、いくつかの3NFテーブルがBCNFにないのでしょうか。つまり、3NFの引用は「キー以外には何もない」と明示的に述べており、すべての属性が主キーにのみ依存していることを意味します。主キーは、結局のところ、主キーとして選択されるまでの候補キーです。 これまでの私の理解に関して何か問題があれば、私を訂正してください。あなたが提供できるあらゆる助けに感謝します。

5
リレーショナルテーブルの命名規則
私は新しいプロジェクトを始めており、最初からテーブル名と列名を取得したいと考えています。たとえば、私は常にテーブル名に複数を使用してきましたが、最近学んだ単数は正しいです。 したがって、「user」というテーブルを取得して、そのユーザーだけが持つ製品を取得した場合、テーブルの名前を「user_product」または単に「product」にする必要がありますか?これは1対多の関係です。 さらに、(何らかの理由で)各製品について複数の製品の説明がある場合、それは「user_product_description」または「product_description」または単に「説明」でしょうか?もちろん、適切な外部キーが設定されている場合。ユーザーの説明やアカウントの説明などがあるため、説明に名前を付けるだけでも問題があります。 列が2つだけの純粋なリレーショナルテーブル(多対多)が必要な場合はどうなりますか?「user_stuff」または「rel_user_stuff」のようなものですか?そして、最初の場合、たとえば「user_product」とこれをどのように区別しますか? どんな助けも高く評価されます。皆さんがお勧めする命名規則の標準がある場合は、自由にリンクしてください。 ありがとう

12
SQL Serverデータベースで単一行構成テーブルを使用する。悪いアイデア?
ショッピングカートアプリケーションを開発する際に、管理者の好みと要件に基づいて設定と構成を保存する必要があることがわかりました。この情報には、会社情報、配送アカウントID、PayPal APIキー、通知設定などが含まれます。 リレーショナルデータベースシステムで単一の行を格納するテーブルを作成することは非常に不適切と思われます。 この情報を保存する適切な方法は何ですか? 注:私のDBMSはSQL Server 2008で、プログラミングレイヤーはASP.NET(C#)で実装されています。

9
NoSQLの使用例[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する 最近、NoSQLが業界で大きな注目を集めています。リレーショナルデータベースストレージでの使用について、人々の考えが最良のユースケースについて本当に興味を持っています。特定のデータセットがNoSQLソリューションにより適していると開発者が考えるきっかけとなるもの。PHPの開発に関して最もカバーしているように見えるMongoDBとCouchDBに特に興味があります。それが私の焦点です。

4
各製品に多くのパラメーターがある多くの種類の製品の製品テーブルを設計する方法
私はテーブルデザインの経験があまりありません。私の目標は、以下の要件を満たす1つ以上の製品テーブルを作成することです。 多くの種類の製品(TV、電話、PCなど)をサポートします。製品の種類ごとに、次のような異なるパラメータセットがあります。 電話には、色、サイズ、重量、OSがあります... PCにはCPU、HDD、RAMが搭載されています... パラメータのセットは動的である必要があります。任意のパラメーターを追加または編集できます。 製品の種類ごとに個別の表がなくても、これらの要件を満たすにはどうすればよいですか?

5
複数のテーブルへの外部キー
私のデータベースには3つの関連テーブルがあります。 CREATE TABLE dbo.Group ( ID int NOT NULL, Name varchar(50) NOT NULL ) CREATE TABLE dbo.User ( ID int NOT NULL, Name varchar(50) NOT NULL ) CREATE TABLE dbo.Ticket ( ID int NOT NULL, Owner int NOT NULL, Subject varchar(50) NULL ) ユーザーは複数のグループに属しています。これは多対多の関係を介して行われますが、この場合は関係ありません。チケットは、dbo.Ticket.Ownerフィールドを介して、グループまたはユーザーが所有できます。 何でしょうMOST正しい方法は、チケットと、必要に応じてユーザーまたはグループ間のこの関係を記述? チケットテーブルに、どのタイプがそれを所有しているかを示すフラグを追加する必要があると考えています。

1
postgresql外部キー構文
以下のposgresqlコードでわかるように、2つのテーブルがあります。最初のテーブルの学生には2つの列があります。1つはStudent_nameで、もう1つは主キーであるStudent_idです。テストと呼ばれる2番目のテーブルには、4つの列があります。1つはsubject_id、1つはsubject_name、次に1つは、被験者の中で最も高いスコアが最も高い、Student_idの生徒用です。私の生徒のテーブルで、highestStudent_idがStudent_idを参照するようにしています これは私が以下に持っているコードです、構文が正しいかどうかわかりません: CREATE TABLE students ( student_id SERIAL PRIMARY KEY, player_name TEXT); CREATE TABLE tests ( subject_id SERIAL, subject_name, highestStudent_id SERIAL REFERENCES students); 構文はhighestStudent_id SERIAL REFERENCES students正しいですか?私は別のようなものを見たのでhighestStudent_id REFERENCES students(student_id)) postgresqlで外部キーを作成する正しい方法は何ですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.