2012-02-11 5 views
-2

SQL(SQLite3)データベースの設計方法に関する2つの質問があります。私のデータベースを使用する方法はこうです:MySQLデータベース設計の改善

私は形容詞を持っていますか(実際にはどんな言葉でも)&私はその単語を名詞形に解決する必要があります。だから "幸せ"のために私はその言葉を "幸せ"(名詞&の一般的な形)に解決する必要があります。 "空腹"については、私はそれを "空腹"に解決する必要があります

Q1:私のSQLクエリの大部分は名詞テーブルで特定の単語(行)を検索します。 私のニーズに最適なSQLテーブルデザインはどれですか?&検索/検索のスピードの面でより効率的ですか?

CREATE TABLE NounTable (u_id int PRIMARY KEY, u_word varchar, u_noun varchar); 
// OR 
CREATE TABLE NounTable (u_word varchar PRIMARY KEY, u_noun varchar); 

// The majority of my queries will be searching according to the word column 
SELECT u_noun FROM NounTable WHERE u_word="hungrier"; 

Q2:私は各行の一意の整数IDをお持ちの場合は、私は新しい行を追加するとき、私はすでに別の行で撮影していないthatsの固有の整数IDを見つける必要があります。私の場合、各行のidは昇順になるので、row1の場合はid = 2、行の場合は2 = 2 .... row n = nです。

過去に行を追加するには、最初に最大の一意のIDを見つけて1を追加し、その新しい行を作成します。しかし、私はかつて、SQL変数があると聞きましたが、私はこれを自動的に行う自律番号と考えています、それは本当ですか?つまり、自動的に増加します。だから私は代わりにそれを使用するか、私は整数としてIDを持つことにこだわることをお勧めしますか?

CREATE TABLE NounTable (u_id int PRIMARY KEY, u_word varchar, u_noun varchar); 
// Or shd I do this... 
CREATE TABLE NounTable (u_id autonumber PRIMARY KEY, u_word varchar, u_noun varchar); 

PS:MYSQL & SQLiteの間に大きな差がある場合がありますか?たぶん異なる変数ですか?または、彼らが格納する方法の唯一の違いは&データベースの情報を調べることですか?

答えて

2

あなたの最初の選択肢でu_wordのインデックスを作成すると、パフォーマンスの面で大きな違いはありません。それは主にあなたが持っている他のテーブルと、単語のペアを表現したいのか、単語とその名詞を持つのかによって異なります。

IDを増やす特別な理由がない場合は、自動番号を使用する必要があります。手動でキーを1つ増やすと、オートナンバーによって処理されるIIRCが実行されている間は常に競合状態と衝突のリスクが発生します。

関連する問題