Как создавать таблицы с определенным поведением - PullRequest
0 голосов
/ 15 февраля 2019

В основном я хочу сделать следующее:

  1. Создать таблицу ADDITION с колонками (character, description).
  2. Создать таблицу THING сстолбцы (id, name, addition).
  3. Разрешить добавление только элементов в THING, если в таблице ADDITION имеется добавочное значение.
    3.1.Очень важно - должна быть возможность добавить одно, много или ни одно из этих значений.
  4. В Python я хотел бы проверить столбец addition из таблицы THING и сделать определенные вещи относительно столбца, чтобысодержание.
    4.1.Как реализовать дополнение?FOREIGN KEY разрешает содержимое только точно так же, как символьный столбец из таблицы ADDITION, но я хочу разрешить много символов.

Пример:

  1. create table ADDITION (character char unique not null primary key, description text not null)
  2. create table THING (id integer not null primary key, name text not null, addition text reference ADDITION (character))

В этом случае я могу иметь только:

ДОПОЛНИТЕЛЬНОЕ содержимое таблицы:

(a,"something"), (b, "something") ...

Содержимое таблицы THING:

(1, "apple", "a"), (2, "angle grinder", "b")

но мне хотелось бы иметь

(1, "apple", ""), (2, "angle grinder", "ab"), (3, "cola", "agu")

и это невозможно из-за внешнего ключа.

И еще одна вещь - это любой метод SQL для добавлениясимвол b в (3, "cola", "agu") или это единственный способ проверить, есть ли он в коде Python (или Java и т. д.), и добавить, если его там нет?

1 Ответ

0 голосов
/ 15 февраля 2019

Я бы порекомендовал более нормальную форму и использовал бы цифры вместо букв, затем использовал бы ключи:

create table addition
(
  add_id integer primary key,
  add_desc text
);

create table thing
(
  th_id integer primary key,
  th_desc text
);

create table thing_addition
(
  th_id integer,
  add_id integer,
  foreign key (th_id) references thing(th_id),
  foreign key (add_id) references addition(add_id)
);

Использование букв в вашем предполагаемом методе ограничивает вас до установленного количества записей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...