这是一张文章表,后面关联了node表,和category表。分别关联对应表的id字段。
节点表:
分类表:
接下来就有一个问题:
如果文章表按上面的设计,当我查询某篇文章的所属节点名称和所属分类名称。需要关联查询节点表和分类表。
我想把文章表的node_id 和 category_id 分别设置为 node_name 和 category_name,分别与另外两张表相关字段对应。查询的时候就可以直接取出,而不用关联其他表。这样是否更加合理?
闭关修行中......
そうではありません。 記事テーブルが article テーブルと呼ばれ、node_id と category_id が node テーブルと category テーブル。
article
node_id
category_id
node テーブルと category テーブル。
category
おっしゃるとおり、node_id を node_name に、category_id を category_name に置き換えてください。いくつかの質問:
node_name
category_name
今後、node_name または category_name を更新する必要がある場合、article テーブルのこのフィールドは更新されますか?
今後、特定のクエリ条件を満たす記事に対応するノードのクリック数をクエリする必要がある場合、node_id と のどちらを使用してクエリを実行する方が効率的ですか? >node_name は高効率ですか?
のどちらを使用してクエリを実行する方が効率的ですか? >node_name
将来、node テーブルと category テーブルのフィールドを拡張する必要がある場合、既存のテーブル構造と変更されたテーブル構造のどちらが良いですか。 ?
node
実際、心配なのは、article テーブルをクエリするときに、node テーブルと category テーブルのクエリを結合する必要があることです。現時点では、articleテーブルは冗長である必要がありますかを検討できます。 >node テーブルの node_name と category テーブルの category_name フィールドですが、冗長なフィールドがあると第 3 正規形が破壊されます。冗長フィールドはクエリ効率を向上させることができるため、ビジネス バランスが必要になります。 また、冗長フィールドは、データの一貫性を維持する方法という問題にも直面します。たとえば、node テーブルの node_name フィールドが更新された場合、articleテーブルの node_name も更新する必要があります。
を検討できます。 >node
articleテーブルの node_name も更新する必要があります。
または、ビューを使用してこの問題を解決することもできます。この方法はより柔軟です。
CREATE OR REPLACE ALGORITHM=MERGE VIEW `v_article` AS ( 記事 AS a から SELECT a.id、a.title、...、b.node_name、c.category_name、 JOIN ノード AS b ON a.node_id = b.node_id JOIN カテゴリ AS c ON a.category_id = c.category_id WHERE... #必要に応じて、ここにフィルター条件を追加できます );
ただし、ビューでは結合テーブルが使用されるため、クエリ効率が高くない場合があります。これには、ビジネス側でより注意を払い、EXPLAIN を使用して SQL を分析する必要があります。
EXPLAIN
カスタム タグをデザインすると、ページが ID を値に直接変換します。もちろん、実際にはバックグラウンドでチェックします。
そうではありません。
記事テーブルが
article
テーブルと呼ばれ、node_id
とcategory_id
がnode テーブルと
category
テーブル。おっしゃるとおり、
node_id
をnode_name
に、category_id
をcategory_name
に置き換えてください。いくつかの質問:今後、
node_name
またはcategory_name
を更新する必要がある場合、article
テーブルのこのフィールドは更新されますか?今後、特定のクエリ条件を満たす記事に対応するノードのクリック数をクエリする必要がある場合、
node_id
とのどちらを使用してクエリを実行する方が効率的ですか? >node_name
は高効率ですか?将来、
node
テーブルとcategory
テーブルのフィールドを拡張する必要がある場合、既存のテーブル構造と変更されたテーブル構造のどちらが良いですか。 ?実際、心配なのは、
article
テーブルをクエリするときに、node
テーブルとcategory
テーブルのクエリを結合する必要があることです。現時点では、article
テーブルは冗長である必要がありますかを検討できます。 >node
テーブルのnode_name
とcategory
テーブルのcategory_name
フィールドですが、冗長なフィールドがあると第 3 正規形が破壊されます。冗長フィールドはクエリ効率を向上させることができるため、ビジネス バランスが必要になります。また、冗長フィールドは、データの一貫性を維持する方法という問題にも直面します。たとえば、
node
テーブルのnode_name
フィールドが更新された場合、articleテーブルの
node_name
も更新する必要があります。または、ビューを使用してこの問題を解決することもできます。この方法はより柔軟です。
ただし、ビューでは結合テーブルが使用されるため、クエリ効率が高くない場合があります。これには、ビジネス側でより注意を払い、
EXPLAIN
を使用して SQL を分析する必要があります。カスタム タグをデザインすると、ページが ID を値に直接変換します。もちろん、実際にはバックグラウンドでチェックします。