Это не гонка, чтобы получить ответ как можно быстрее. Я думаю, что обсуждение и сотрудничество также должны стать частью процесса.

аюсь создать отношение, в которое может быть включена любая из четырех разных частей, но любая коллекция из тех же частей должна рассматриваться как уникальная.

Пример: назначение должно иметь назначенную компанию, при желании может иметь назначенное местоположение, рабочую группу и программу. У назначения не может быть рабочей группы без местоположения.

Предположим, у нас есть компании A, B, C; местоположения X, Y, Z; рабочие группы I, J, K и программы 1, 2, 3.

Таким образом, действительные отношения могут включать A - X - I - 1 A - Z - 2 B - Y C C - 3 B - Z - K

Но недействительные отношения будут включать A - K (рабочая группа без местоположения) Y - K - 1 (без компании)

Итак, чтобы создать мою таблицу, я создал

companyID INT NOT NULL,
FOREIGN KEY companyKEY (companyID) REFERENCES company (companyID),
locationID INT,
FOREIGN KEY locationKEY (locationID) REFERENCES location (locationID),
workgroupID INT,
FOREIGN KEY workgroupKEY (workgroupID) REFERENCES workgroup (workgroupID),
programID INT,
FOREIGN KEY programKEY (programID) REFERENCES program (programID),
UNIQUE KEY companyLocationWorkgroupProgramKEY (companyID, locationID, workgroupID, programID)

Я полагаю, что это будет обрабатывать все мои отношения, кроме необходимости назначения иметь местоположение, если есть рабочая группа (что я могу с радостью сделать программно или с помощью триггеров, я думаю)

Однако, когда я тестирую эту схему, она позволяет мне ввести следующее ...

INSERT INTO test VALUES (1, null, null, null), (1, null, null, null);

... без жалоб. Я предполагаю, что (1, ноль, ноль, ноль) не равно себе, потому что нули включены. Если это так, могу ли я справиться с этим отношением?

Любая помощь будет оценена!

Ответы на вопрос(4)

Ваш ответ на вопрос