2013-05-14 24 views
23

初心者の質問に申し訳ありません。SQLiteデータベースブラウザで外部キーを作成

私はSQLiteデータベースブラウザを使用して、私のテーブルを作成しますが、している:

  1. 私はアプリケーションを使用して、私の外部キーを指定することができるのか分からないのですか?

  2. テーブル間にリレーションシップダイアグラムを作成するにはどうすればよいですか?

答えて

12

「データベース構造」タブを使用して外部キー制約を定義する方法が見つかりませんでした。グラフィカルエディタを使用してスクリプトを作成するのではなく、スクリプトを使用してテーブル定義と制約を定義することを強くお勧めします。新しいデータベースを作成してスキーマの変更を追跡する方がずっと簡単です。

例として、ファイル名を定義するテーブルと圧縮に使用するメソッドを指定するテーブルの2つのテーブルがあると仮定して、定義時に外部キー制約をfile_definitionテーブルに追加できます。

CREATE TABLE [compression_state] (
    [compression_state_id] INTEGER PRIMARY KEY NOT NULL, 
    [value] TEXT NOT NULL 
); 

CREATE TABLE [file_definition] (
    [file_id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
    [compression_state_id] INTEGER NOT NULL, 
    [name] TEXT NOT NULL, 
    FOREIGN KEY(compression_state_id) REFERENCES compression_state(compression_state_id) 
); 

ただし、デフォルトでは、SQLiteはしたがって、データベースに接続するたびに、あなたがチェック制約を有効にするには、次のコマンドを発行する必要があり、制約を強制しません。

PRAGMA foreign_keys = ON; 

詳細はdocumentationを参照してください。

、あなたは運の出ている表がすでに存在し、完全なスクリプトを作成したくない場合は、テーブルが作成された後、SQLiteはここを参照してください、外部キーを追加することはできません:SQL Features That SQLite Does Not Implement

6
とき - SQLiteの環境のためのDBブラウザ(SqliteをV 3.9.2 V 3.8.0)では CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER, FOREIGN KEY(trackartist) REFERENCES artist(artistid) );

CREATE TABLE artist( artistid INTEGER PRIMARY KEY, artistname TEXT ); CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER -- Must map to an artist.artistid! );
と最後に:多分参考になったSQLiteドキュメントから

他の誰かに

後期の回答Dを追加するBフィールドのトラックテーブルと PK、AI、その他の列には、外部キー列があります。
この例では、アーティスト(artistid)trackartist行に追加するだけです。
次に、外部キー制約が作成されます。

25

私はこの質問が長い間前に尋ねられたことを知っていますが、私はそれを見つけました。 GUIに組み込まれています。外部キータブのスペースを確保するには、名前、タイプタブをドラッグして少し小さくするだけです。マウスポインタを最後に置き、ヘッダーをドラッグします。

SQLiteブラウザのバージョンはバージョン3.7.0です。DBブラウザで

enter image description here

0

、[テーブル定義の編集ウィンドウでは、あなたは外部キーの空白領域をクリックして、テキストボックスがアクティブになります倍増させることができます。そこにあなたの外来キーを追加することができます。

関連する問題