Извините за вопрос новичков.
Я создал таблицы, используя браузер базы данных SQLite, но:
-
Я не знаю, как я могу указать внешние внешние ключи с помощью приложения?
-
Как создать диаграмму отношений между таблицами?
Извините за вопрос новичков.
Я создал таблицы, используя браузер базы данных SQLite, но:
Я не знаю, как я могу указать внешние внешние ключи с помощью приложения?
Как создать диаграмму отношений между таблицами?
Я знаю, что этот вопрос давно задан, но я нашел его. Он встроен в графический интерфейс. Вам просто нужно перетащить и сделать вкладки "Имя", "Тип" немного маленькими, чтобы освободить место для вкладки "Внешний ключ". Поместите указатель мыши в конец и перетащите заголовок.
Моя версия SQLite Browser - это версия 3.7.0.
Я не мог найти способ определения ограничений внешнего ключа, используя вкладку "Структура базы данных". Я настоятельно рекомендую определять определения таблиц и ограничения с помощью 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 не реализует
Из документации 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
.
Затем создается ограничение внешнего ключа.
В браузере БД в окне "Редактирование таблицы таблиц" вы можете дважды щелкнуть пустую область внешнего ключа и активировать текстовое поле. Вы можете добавить свой Иностранный ключ там.
Триггеры в SQLite3 применяют ограничения внешнего ключа. Ссылка https://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers поможет вам решить свой первый вопрос.
Перейти к редактированию окна определения таблицы
Нажмите на Добавить поле
Назовите его Тип: Целое число
Прокрутите вправо и найдите столбец внешнего ключа
Дважды щелкните по столбцу "Внешний ключ" в новой строке.
Выберите основную таблицу и ее поле идентификатора
Нажмите ОК
Нажмите Написать изменения