問題タブ [database-theory]

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.

0 投票する
0 に答える
224 参照

mysql - 大規模な MySQL データセットで Laravel を使用して本番環境の不良データを再シードするコストのかかるプロセス

大規模なシードされたデータベースでエラーを修正するより健全な方法を探しています。解決策は大歓迎です。正気であれば問題ありません (ジョブのツール、つまりリレーショナル データベースについて質問してください)。データを切り捨ててすべての値を再シードする余裕はありません。特にデータの整合性が重要になる場合。これは、エラーを説明するために再シード全体を実行する必要なく、開発者のエラーに対して十分に堅牢である必要があります。移行/MySQL/リレーショナル DB は、シードされたデータセットに対して十分な柔軟性を持っていないようです。私の知識が欠けているところです。

シナリオ:

  • 移行クラスでシード (JSON) を使用する Laravel プロジェクトについては、[Laravel : Migrations & Seeding for production data][1] を参照してください。

    [1]: Laravel : 本番データの移行とシード

    • 名前、体重、身長、チーム、生年月日などの 10 個の値を含む、フットボール選手を表す MySQL データベース 10k JSON オブジェクト。オブジェクトは繰り返し処理され、AI ID を使用して DB に挿入されます。

問題: MySQL の「高さ」列は、開発者のエラーにより、元々 int 型で float 型ではなかったため、すべての高さが 2m に丸められました。

移行により、タイプをフロートに変更しましたが、すべての高さの値は、まだすべて 2m (たとえば、1.76 ではない) であるため、再シードによって変更する必要があります。JSON からのオブジェクトには MySQL 挿入で一意の ID が割り当てられるため、データの整合性を維持しながら列の値を変更するには、何千もの JSON オブジェクトを MySQL に再シードする必要があり、時間とコストについて考える必要があります。

明確にするために、シード元の ID のない JSON オブジェクトがあります。それぞれのサッカー リーグ用にいくつかの JSON ファイルがあるので、これらをモジュラー方式でシードします。つまり、新しいプレーヤーを挿入するときです。変更を加える必要がある場合、JSON 内のオブジェクトとデータベース内のオブジェクトの間に整合性がありません。複合キーを作成するために必要な値を操作することを考えましたが (?)、それでもデータが非常に壊れやすく、開発者のエラーが発生しやすいように感じます、これを適切に管理する方法が必要です。特に、タイムスタンプ値に基づいて移行を実行することによってのみ制限されているため、Laravel の移行/シードが提供するとは思わない (実行した特定の移行ファイルをロールバックするように指定することはできません)ついさっき)。データベースの「ソース管理」が存在する場合は、おそらく良い考えです。投稿にはdatabase-theoryおよびdata-integrityというタグが付けられていることに注意してください。再シードできることはわかっていますが、これには数時間かかる場合があります。

乾杯。

0 投票する
1 に答える
24 参照

database-theory - テーブル内で LIKE を使用して検索する

LIKEを使用して「2」が存在する場合、次の表から「Match」列と「Average」列のデータを取得したい。 ここに画像の説明を入力

次のクエリを書いてみましたが、失敗しました。

SELECT * FROM batsman_profile WHERE (Match LIKE '%2%') AND (平均 LIKE '%2%');

必要に応じてデータを取得する方法を教えてください。

0 投票する
1 に答える
1461 参照

functional-dependencies - アームストロングの公理を使用して属性がスーパー キーであることを証明する

だから私はとの関係 R (A, B, C, D, E, F) を 与えられ、FD = {AB -> C, AD->B, C->B, F-> AD, F-> E} 証明するためにアームストロングの公理を使用する必要がありますFがスーパーキーです。

私は Armstrong の公理を (基本的な程度まで) 理解していますが、このアプリケーションでそれらを使用する方法がわかりません。任意のガイダンスをいただければ幸いです。

ありがとう

0 投票する
1 に答える
492 参照

database-design - データベース - 機能依存性と候補キー

機能依存関係と候補キーについて頭をつかむのに大きな問題があります。私は現在、「2 つの」候補キーを特定する必要があり、4 つの機能依存関係しか持てないプロジェクトを行っています。私の全体の関係は次のとおりです。

そして、私の機能的な依存関係は次のとおりです。

したがって、候補キーを次のように計算しました。

ただし、可能性のある解決策をすべて試しましたが、すべての属性に一致するものがないため、できない場合は、2 番目の候補キーが必要です。オンラインでたくさんのビデオを見てきましたが、まだ混乱しています。2 番目の候補キーを取得できない理由は、私のやり方が間違っていたからですか?

ありがとう、

キーラン

0 投票する
2 に答える
94 参照

php - SQL インジェクション理論

私は常にデータベースで ORM レイヤーを使用しているので、SQL インジェクションについては気にしませんが、友人からこのタスクを与えられましたが、まだ解決方法がわかりません。

PHPスクリプトは、クエリの戻り値が != null (入力されたユーザー名とパスワードに一致するユーザー名が見つかった) であるかどうかをチェックするだけであることを知っています。

PHP でのクエリ自体は次のようになります。

このクエリの戻り値をアーカイブする最良の方法は何ですか!= null または有効なログイン データ (ユーザー名とパスワード) を取得します。パスワードはデータベースに平文で保存されます。プレーンに保存するのが悪いことは知っていますが、PDO を使用するのが良いことは知っていますが、彼がくれたこの面白いタスクを解決する方法がわかりません。おそらく、私は常に PDO を使用しているためです。

0 投票する
1 に答える
560 参照

database - スーパーキーの最小性は、それが候補キーであることを保証しますか?

FD との関係 R(ABCDEF) の候補キーとスーパーキーを決定します: AEF → C、BF → C、EF → D、および ACDE → F

これは私の本の問題です。この本では、候補キーは ABCDE と ABEF であると主張しています。私が理解していることから、候補キーは最小限のスーパーキーであり、ABEF のクロージャ テストは関係 R を完全にキャプチャします。ABEF は ABCDE よりも「最小限」であるため、唯一の候補キーは実際には ABEF のみであると主張します。ABCDE がスーパーキーであることは認めますが、候補キーではありません。ここで私が間違っている理由を誰かが説明できますか? それとも、本が間違っている可能性はありますか?

0 投票する
1 に答える
779 参照

relational-algebra - Functional Dependencies の F+ (F の閉鎖) と F* (F のカバー) の違いは何ですか?

F+ と F* は次のように定義されます。

  • F+: F の閉鎖

    • F+ = {fd | F |= fd}
    • 推論規則から推定されるすべての FD のセット (通常: アームストロングの公理)
  • F*: Fのカバー

    • F* = {fd | F |- fd}
    • F によって含意されるすべての FD のセット (true であるすべての FD)

私の質問は、F+ と F* の違いは何ですか? また、違いを示す例を挙げていただけますか。

0 投票する
1 に答える
55 参照

functional-dependencies - 最小限のカバーで反射機能の依存関係を維持しますか

一連の機能依存関係の最小限のカバーを作成する必要があると仮定します。私はこの機能依存性を持っています{A,B,C} -> {C}。これは冗長であることがわかっている{A,B}ため、これら 2 つの属性を削除して最小限のカバーを取得する必要があります。これ{C} -> {C}により が残りますが、これは再帰性があるため些細なことです。それも保持{C} -> {C}または削除しますか?

前もって感謝します!