Подтвердить что ты не робот

Создание внешнего ключа в браузере базы данных SQLite

Извините за вопрос новичков.

Я создал таблицы, используя браузер базы данных SQLite, но:

  • Я не знаю, как я могу указать внешние внешние ключи с помощью приложения?

  • Как создать диаграмму отношений между таблицами?

4b9b3361

Ответ 1

Я знаю, что этот вопрос давно задан, но я нашел его. Он встроен в графический интерфейс. Вам просто нужно перетащить и сделать вкладки "Имя", "Тип" немного маленькими, чтобы освободить место для вкладки "Внешний ключ". Поместите указатель мыши в конец и перетащите заголовок.

Моя версия SQLite Browser - это версия 3.7.0.

введите описание изображения здесь

Ответ 2

Я не мог найти способ определения ограничений внешнего ключа, используя вкладку "Структура базы данных". Я настоятельно рекомендую определять определения таблиц и ограничения с помощью script, а не создавать их с помощью графического редактора - это упрощает создание новых баз данных и отслеживание изменений в схеме.

В качестве примера предположим, что у нас есть две таблицы: одно определение имен файлов и определение метода, используемого для сжатия, мы можем добавить ограничение внешнего ключа в таблицу 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;

Подробнее в документации.

Если таблицы уже существуют, и вы не хотите создавать полный script, тогда вам не повезло, SQLite не поддерживает добавление внешних ключей после создания таблицы, см. здесь: SQL-функции, которые SQLite не реализует

Ответ 3

Из документации SQLite:

CREATE TABLE artist(
  artistid    INTEGER PRIMARY KEY, 
  artistname  TEXT
);
CREATE TABLE track(
  trackid     INTEGER,
  trackname   TEXT, 
  trackartist INTEGER     -- Must map to an artist.artistid!
);  

и в конце:

CREATE TABLE track(
  trackid     INTEGER, 
  trackname   TEXT, 
  trackartist INTEGER,
  FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);

В обозревателе БД для среды SQLite (v 3.8.0 - Sqlite v 3.9.2), когда вы добавляете поля БД для таблицы track вместе с PK, AI и другими столбцами, вы можете найти столбец внешнего ключа.

Там, и для этого примера, вы просто добавляете artist(artistid) в строку trackartist.
Затем создается ограничение внешнего ключа.

Ответ 4

В браузере БД в окне "Редактирование таблицы таблиц" вы можете дважды щелкнуть пустую область внешнего ключа и активировать текстовое поле. Вы можете добавить свой Иностранный ключ там.

Ответ 6

Перейти к редактированию окна определения таблицы

Нажмите на Добавить поле

Назовите его Тип: Целое число

Прокрутите вправо и найдите столбец внешнего ключа

Дважды щелкните по столбцу "Внешний ключ" в новой строке.

Выберите основную таблицу и ее поле идентификатора

Нажмите ОК

Нажмите Написать изменения

введите описание изображения здесь