Можете попробовать:
if (! array [i]) array [i] = true;
Но на самом деле единственный способ узнать наверняка - это профиль, я уверен, что любой компилятор видел бы сравнение с ложным как ненужное и оптимизировал его.
Для первого вопроса:
a
и b
, чем убедитесь, что a
меньше или равно b
Для второго вопроса:
SELECT * FROM many_to_many_table ГДЕ a = A или b = A
Ok WoLpH был быстрее, я в основном согласен (обратите внимание, что вам нужно создать ограничение single на обоих столбцах одновременно!). И просто объясните, почему вы сталкиваетесь с правилами, которые вы упомянули: Как правило, A и B - разные таблицы. Таким образом, типичный пример для отношений n: m позволит вводить записи (1,0) и (0,1), потому что они будут ссылаться на разные пары. Наличие таблицы A = таблица B - это другая ситуация (вы используете пользователей A и B как пользователей, но в примере они являются таблицами).
Похоже, что вы хотите создать составной первичный ключ.
CREATE TABLE отношение (A_id INTEGER UNSIGNED NOT NULL, B_id INTEGER UNSIGNED NOT NULL, PRIMARY KEY (A_id, B_id));
Так вы настраиваете таблицу так, что может быть только одна строка, которая определяет таблицы A
и B
как связанные. Он работает, потому что первичный ключ должен быть уникальным в таблице, поэтому база данных будет иметь только одну строку с любой определенной парой значений. Вы можете создавать составные ключи, которые не являются первичным ключом, и они не обязательно должны быть уникальными (но вы можете создать уникальный непервичный ключ, составной или нет), но ваша спецификация запросила первичный ключ, так что это то, что я
Вы можете, конечно, добавить другие столбцы для хранения информации об этих конкретных отношениях.
db_relations
. [D1] tbl_relations ( id_a
INT НЕ ПОДЛЕЖИТ НОМЕР, ] id_b
INT НЕОПРЕДЕЛЕН НЕ НЕТ, ПЕРВИЧНЫЙ КЛЮЧ ( id_a
, id_b
)) ENGINE = InnoDB;
– Poni
30 August 2010 в 00:38
id_a
, а ссылка на «таблица B» будет всегда i> находиться в id_b
, что и в противном случае, не имеет смысла. Или быть полезным.
– staticsan
30 August 2010 в 04:12
alter table many_to_many_table добавить уникальный индекс (a, b);
– Wolph 30 August 2010 в 01:35a
всегда является меньшим ID при вставке / обновлении, чем ограничение работает отлично. – Wolph 30 August 2010 в 04:32