Является ли ограничение CHECK проверкой, разрешено ли значение столбца "IN" одной из нескольких других таблиц?

Я беру курс в базах данных, и мы используем только sqlite3. Нам предлагается написать ограничение в инструкции CREATE TABLE, которая, похоже, не поддерживает sqlite3. Вот что у меня есть до сих пор:

CREATE TABLE Product 
(
 maker varchar(1),
 model varchar(4),
 type varchar(10),
 CHECK (model IN (SELECT model FROM PC) OR 
 model IN (SELECT model FROM Laptop) OR
 model IN (SELECT model FROM Printer)) 
);

Мне интересно, является ли это утверждение законным в чем-то вроде MySQL и действительно ли оно делает то, что я хочу. У меня три таблицы; ПК, ноутбука и принтера, и я хочу, чтобы для атрибута модели таблицы Product был указан соответствующий номер модели в любой из этих трех таблиц.

ОК, дайте мне шанс на честный вопрос... Спасибо за людей, которые указали мне в сторону скрипта sql онлайн.

1 ответ

Вы должны создать таблицы Models с files model_id, type (принтер, ноутбук и т.д.), Создатель и так далее. Не делайте 3 разных стола для ПК, ноутбуков и принтеров.

Sqlite также поддерживает внешние ключи. Вы должны больше узнать о них.

licensed under cc by-sa 3.0 with attribution.