2012-05-04 7 views
0

私はテーブルの3つの列(タイトル、タフ、Id)唯一の8つの異なる値を入力することができます匿名を持っています。今私は知ってほしい、それぞれの値私は何をすべきmysqlのほうが優れています。レコードが1つ、テーブルが1つ大きい。レコードの

+1

私はあなたが何を求めているのかよく分かりません。これは型を保持するテーブルですか、これは型を持つ項目を持つテーブルですか? (どちらにしても、私の答えは一つのテーブルにこだわっています) – Corbin

+1

商品には種類があります –

答えて

0

を照会速いSQLのための私のデータベースでタフなの

(タイプがVARCHARであると仮定して)、次の2つの列(型ID、タイプ)を有する1つの新しいテーブルを作成します。その後、あなたの匿名のテーブルへの参照を置く。これによりデータストレージが削減され、8つの値を1回取り込むだけで済みます。次に、これらの8つの値を参照するためにnumberを使用します。

これがクエリのパフォーマンスを向上させるかどうかはわかりませんが、データベースには冗長データが少なくなります。

+0

ニース............. –

+0

@AnkitGautamはこれがあなたを助けたと答えているのを忘れないでくださいout :) –

0

あなたは列anonymous_idtitle、およびtype_idで別のテーブルを作成するよりも、列type_idtype_nameでテーブルTypesを作成する必要があります。

第2のテーブルでは、type_idは、テーブルTypesのプライマリキー(type_id)にリンクする外部キーになります。

テーブルが最適化され、データの重複が少ないようにして、データベースにすでに存在するタイプのみを許可することができます。

+0

私は質問を更新しましたのであなたの答えを変更してください –

+0

8つのテーブルを作成する必要はありませんが、type_nameとtype_idを含む1つの余分なテーブルを作成することをお勧めします。その後、最初の列でFK_typeを追加し、2番目の列にtype_idを参照できます。 –

0

私はあなたがそれのために単一のテーブルを使用し続け、どのように動作するかを見ることをお勧めします。アプリケーション構造を簡素化し、さまざまな問題の視野を妨げることはありません。

ただし、期限が到来している場合は、アプリケーションの構造とインデックスの成長の仕方を考慮する必要があります。アプリケーションを変更するのが大変な場合は、解決できない問題が発生するまですぐにやり直す必要があります。

0

一般に、データ構造を正規化し、測定が必要であることを示したら、パフォーマンスを心配する必要があります。

CREATE TABLE `Anonymous` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `tough_id` INT NOT NULL, 
    `title` VARCHAR(64), 
    PRIMARY KEY (`id`), 
    KEY `idxTough` (`tough_id`) 
); 

CREATE TABLE `Tough` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(64) NOT NULL, 
    PRIMARY KEY (`id`) 
); 

INSERT INTO `Tough` (`name`) VALUES ('ToughA'), ('ToughB'), ('ToughC'), ('ToughD'); 

INSERT INTO `Anonymous` (`title`, `tough_id`) VALUES 
    ('Anon with tough A', 1), 
    ('Anon with tough B', 2), 
    ('Anon with tough C', 3), 
    ('Anon with tough D', 4) 
; 
関連する問題