SQLite: Table1.id ‹› Table2.id для каждого идентификатора в Table1, Table2

Мне нужно, чтобы первичные ключи двух таблиц sqlite (скажем, id1 и id2) были связаны так, чтобы ни один id1 не мог быть равен любому id2 и наоборот. Это потому, что мне нужно получить из этих двух таблиц один и тот же тип элемента xml с уникальным идентификатором атрибута. Есть ли способ в sql, как его понимает sqlite, или в «классическом» sql, чтобы выразить такие ограничения для моих полей идентификатора? В качестве альтернативы, я думаю, я мог бы создать еще одну таблицу со ссылкой на другие 2 и уникальный идентификатор, из которого я бы взял свои данные... но я хотел бы сначала знать, возможно ли это по-другому, и какой лучшая практика в этом случае, по вашему мнению.

Спасибо!


person Andrea    schedule 22.01.2010    source источник


Ответы (1)


Значения идентификатора XML в любом случае технически не могут быть числами, поэтому перед сохранением в XML добавьте к идентификатору текст. Тогда вам не нужно беспокоиться о числовых дубликатах.

http://www.w3.org/TR/2004/REC-xml-20040204/#NT-Name

[4] NameChar ::= Буква | цифра | '.' | '-' | '_' | ':' | Объединение символов | Удлинитель

[5] Имя ::= (Буква | '_' | ':') (NameChar)*

Ограничение допустимости: идентификатор

Значения типа ID ДОЛЖНЫ соответствовать продукции Name. Имя НЕ ДОЛЖНО появляться более одного раза в XML-документе в качестве значения этого типа; т. е. значения ID ДОЛЖНЫ однозначно идентифицировать элементы, которые их несут.

person Samuel Neff    schedule 22.01.2010