質問

私はビットの新しい SQLite, いわずかにジレンマが自分のデータベースのデザイン。についてご説明させていただき.例えば、皆さんがご友人と使用する異なる愛称は、インターネット(より多くなる場合があります。こだわりのIDのリストの愛称が"この人が利用します。このシングルエントリの大きます。ことを目指店舗このデータをSQLiteで、SELECTステートを取得するために使用できるエディトリアルデザインが含まれる指定された愛称です。

考えないでもありませんでしたテーブルを作成する二つのカラムの最初のID(主キー)およびテキストを保持する愛称は、 CSV 形式です。しかしこの例でわからない書き方の選択算書の検索に合わせ愛称格納されます。

アイデア、浮かぶのでしょうか。

役に立ちましたか?

解決

手始めに、ここでの

あなたが持っているものです
SELECT Name, Nickname FROM MyTable WHERE Nickname = 'Copper';

しかし、私は強くニックネーム名への参照を有するように、名のテーブル、および使用されるニックネームのテーブルを持つことをお勧めします。

CREATE TABLE Users (
    UserId INTEGER PRIMARY KEY, 
    Name TEXT
    );
CREATE TABLE Nicknames (
    NickNameId INTEGER PRIMARY KEY, 
    UserId INTEGER REFERENCES Users(UserId), 
    NickName Text
    );

あなたはなど、それらを削除し、このスキームは、エントリを編集することができ、より多くの制御を与えるでしょう。

INNER JOINのいずれかでそれを照会

SELECT Users.Name, NickNames.NickName 
    FROM Users INNER JOIN NickNames ON User.UserId=NickNames.UserId
    WHERE NickNames.NickName = 'Copper';

またはネストされたクエリます:

SELECT Users.Name
    FROM Users
    WHERE User.UserId IN (
    SELECT NickNames.UserId 
        FROM NickNames 
        WHERE NickNames.NickName = 'Copper');

の二つはWHERE句と結合指定する(この場合は)同等です。それはの動作しますが、それが悪いフォーム(それはINNER JOIN限り明確ではありません)です。

SELECT Users.Name, NickNames.NickName 
    FROM Users, NickNames 
    WHERE User.UserId = NickNames.UserId
    AND NickNames.NickName = 'Copper';

他のヒント

なぜ、以下の表を持っています:

人(カラム:PERSON_ID、PERSON_NAME)

ニックネーム(カラム:nickname_id、ニックネーム)

Person_Nickname(カラム:PERSON_ID、nickname_id)

次に、あなたは人からPerson_NicknameへとニックネームからPerson_Nicknameへの外部キーを作成します。これは、あなたが好きなように与えられた人は、できるだけ多くのニックネームを持つことができます。

次に、与えられたニックネームに一致するすべての人を見つけるために、あなたが書くことができます:

SELECT p.person_name
  FROM person.p
     , nickname n
     , person_nickname pn
 WHERE n.nickname = 'nickname of interest'
   AND p.person_id = pn.person_id 
   AND n.nickname_id = pn.nickname_id

必要な2つのテーブル:

  • ユーザー
  • 愛称

表"利用者"といid、氏名、その他のオプションの情報をユーザーです。表に"愛称"すいuser_id,愛称です。

ので、多くの協会.次のリストを取得するすべてのユーザーの愛称でクエリではこのような(利用しているユーザid):

SELECT nicknames.nickname FROM nicknames WHERE nicknames.user_id=id

以下のデータベースのように実装できます:
利用テーブルと2つの分野のユーザーネーム、ニックネーム).その一覧を取得してジョーンズ愛称(だわりのidにも関連するユーザーとクエリのようになります:

SELECT table.nickname FROM table WHERE table.user="john"

CSVのアプローチは適切に働きがいを実装する必要があると自機能の追加/削除/パの愛称でほぼ確実に遅くなることの二つの実装いを説明します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top