2016-11-13 3 views
0

私の問題の解決策は実際には見つかりません。問題は次のとおりです。プライマリキーを実際に作成する必要はありますか?隔離されたテーブルのプライマリキー


詳細

私のウェブサイトは、私は別の翻訳で各単一の文/単語を入れているtranslationsと呼ばれるデータベースのテーブルを持っています。私はこのような構造を持っている:

id | lang | text 
------------------- 
01 | 01 | hello 
01 | 02 | ciao 
01 | 03 | salut 
02 | 01 | surname 
02 | 02 | cognome 
02 | 03 | nom 

フィールドidをワードに接続され、フィールドlangは、翻訳を示す番号(01 =英語、02 =イタリア語、03 =フランス語)で、textが翻訳したものですその言葉の

この場合、単語が必要な場合hello私はid = 1であることを知っていて、その言語を選択できます。

これは、この種のテーブルを作成するための良い方法ですか?私はよく分かりませんが、私は電話することができますので、これを簡単に見つけることができます:

SELECT text FROM tablename WHERE id = ? AND lang = ? 

あなたは?私はPDOとparamsを結合するからです。 'lang'はクッキー(01,02,03)から検索される定数です。

重要な注意:あなたのテーブル構造を維持したいとあなたが各単語の言語ごとにちょうど翻訳を持っている場合は、ここで私は主キーを持っていない、私は独自の

+0

としてid + langを使用することができます。私は_primary key_と_surrogate key_を混同していると思います。両方の用語を見てください。また、DBA.SEでこの質問に対する答えを読むことができます:http://dba.stackexchange.com/questions/6108/should-every-table-have-a-single-field-surrogate-artificial-primary-key/6110#6110 –

答えて

5

idlangのみを設定しています、その後、あなたはユニークなインデックスを持っている場合、あなたは主キーことを確認する必要があり、主キー

CREATE TABLE translations 
(
    id int, 
    lang int, 
    text varchar(150) NOT NULL, 
    PRIMARY KEY (id, lang) 
); 
関連する問題