0

私はデータベースを持っており、そこにウェブサイトのアドレスのリストがあり、それぞれにカテゴリがあります。私が持っているテーブルフィールドの中でsite_id, site_url and site_category。私はsite_category、映画、チュートリアルなどのように、平易な英語のカテゴリを持っています...

スピードにとって何が良いのか知りたい。そのようにするか、2つのテーブルを作成するには:

ウェブサイト:site_id, site_url and site_category

カテゴリ:category_id, category_name

そしてsite_category、「ウェブサイト」の表には、を入れるだけcategory_idです。

私はPHPでディレクトリを作成していて、クエリを実行したいときに、何が優れているかを知りたいと思っています。ありがとう!

4

3 に答える 3

0

優れた正規化されたDB 設計を犠牲にして、サイトを事前に最適化しようとしているようです。私のアドバイス: 2 つの異なるテーブルをセットアップします。1 つはカテゴリ用です。もう 1 つは Web サイト用です。次に、カテゴリ ID を介して 2 つをリンクします。そうすれば、カテゴリの名前を更新する必要がある場合でも、web サイト テーブル内の複数の行を更新する必要はありません。

于 2012-08-28T16:10:19.280 に答える
0

2番目の方法はより堅牢です。カテゴリの名前を変更したい場合は、一度だけ変更する必要があります。

また、Web サイトに複数のカテゴリを配置したい場合に、より柔軟に対応できます。

于 2012-08-28T16:10:53.360 に答える
0

ほとんどすべての SQL と同様に、実際にはさまざまな要因に依存します。

一般に、1 つのテーブルに対するクエリは、2 つのテーブルに対するクエリよりもパフォーマンスが向上する可能性があります。


「category_name」に比較的短い値 (8 文字以下など) を使用し、先頭の列として適切なインデックス category_name を使用すると、次のようなクエリのパフォーマンスが向上します。

SELECT * FROM websites WHERE category_name = 'movies' ORDER BY category

最適なパフォーマンスを得るには、ENUMcategory_name の列を検討してください。ただし、これは、の値がcategory_name列定義の一部として「固定」されることを意味します。

個別の category_name 値のリストを取得する必要がある場合 (ドロップダウン リスト ボックスなど)、別のテーブル (この例では Categories テーブルなど) が優先されます。

大きな問題は、「カテゴリ」がシステム内のエンティティであるかどうかです。つまり、ビジネスにとって重要であり、一意に識別でき、情報を保存する必要がある人、場所、物、概念、またはイベントの「カテゴリ」です。

もしそうなら、それは「エンティティ」であり、別のテーブルを作成したいと考えています。


考慮すべきより大きな問題は、Web サイトとカテゴリの関係です。Web サイトに複数のカテゴリを設定できますか?

その場合は、Web サイトとカテゴリを関連付ける関係テーブルの観点から考える必要があります。例えば:

 website_category (website_id, category_id) 

"エンティティ" とエンティティ間の "関係" がデータベース設計で適切に表現されていることが重要です。パフォーマンスを最適化するために微調整する前に、まずそれが正しいことを確認してください。

于 2012-08-28T16:13:40.620 に答える