以下に、アルバム テーブル、製品テーブル、写真テーブルの 3 つのテーブルがあります。
要件: アルバムには商品と写真を同時に保存できます。
この3人の関係をどう表現したらいいでしょうか?
分析したところ、アルバムと商品の間には多対多の関係があり、アルバムと写真の間にも多対多の関係があることがわかりました。
2 つの中間テーブルを設計する必要がありますか?
ディスカッションへの返信 (解決策)
アルバム テーブルと製品テーブルの間に、製品 ID とアルバム ID (カンマ区切り) を保存する別のテーブルを作成できます
写真とアルバムについても同様です
上で述べたように、プロダクト ID アルバム ID は、相互に関連付けられるように、すべてのテーブルに存在することが最善です。
アルバム テーブルと製品テーブルの間に、製品 ID とアルバム ID (カンマ区切り) を保存する別のテーブルを作成できます
写真とアルバムにも同じことが当てはまります
必要に応じて、この方法も考えました同じアルバムをクエリするには 商品と写真を別々にクエリする必要がありますか?
プロダクトIDとピクチャーIDをカンマでつないで保存しておけば、別途テーブルを作成する必要はありません
遷移テーブルを作成する目的は高速アクセスのためです 対象のIDを文字列でつなぐと、インデックスは使用できません
プロダクトIDとピクチャIDをカンマでつないで保存すれば、別途テーブルを作成する必要はありません
遷移テーブルを作成する目的は、高速アクセスのためです。ターゲット ID を文字列にすると、インデックスを使用できなくなります
私の当初の目的は、3 番目の遷移テーブルを作成することでした。この 3 つの関係だけで、この遷移表をどのように設計するかです。
トピック ID 製品 ID 画像 ID
通常の状況では、製品と写真は 1 対 1 に対応します
したがって、テーブルの疎さはそれほど大きくなりません
トピック ID 製品 ID 画像 ID
通常の状況では、製品と写真は 1 対 1 に対応します
したがって、テーブルのまばらさはそれほど大きくなりません
私のシステムでは、製品と写真は 2 つのエンティティから取得されます。 2 つのテーブルを分離します。この写真は商品写真ではありません。
次に、それらを分離します
トピック ID 製品 ID
トピック ID 画像 ID
これらは 2 つのエンティティであるのに、なぜそれらを強制的に結合したいのですか? 2 つの中間テーブルを設計する必要がありますか?
次に、それらを分離します
トピック ID 製品 ID
トピック ID 画像 ID
これらは 2 つのエンティティであるのに、なぜそれらを強制的に結合したいのですか? 2 つの中間テーブルを設計する必要がありますか?
これら 2 つのエンティティはアルバムに保存できるためです。両方のエンティティが同じアルバムに表示される場合。クエリ方法
select * from A left join A_B on A.id=A_B.aid left join A_C on A.id=A_C.aid
select * from A left join A_B on A.id=A_B.aid left join A.id=A_C.aid 上の A_C
ここで、アルバム テーブルと 2 つの中間テーブル A_B および A_C の間の結合クエリについて話しています。ただし、グラフィックステーブルと製品テーブルの情報など、特定の情報を確認したい場合は、中間テーブルには 2 つのテーブルの主キーのみが格納されます。引き続きグラフ表の左結合と積表の左結合を続けますか?
もちろんです!
ただし、必要なのは INNER JOIN だけです
もちろんです!
ただし、必要なのは INNER JOIN だけです
OK、モデレーター、ご協力ありがとうございました!

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
