Я знаю, что, вероятно, будет распят или любой другой, но здесь идет ...
Я сделал это так для моего «конкретного собственного уникального и нестандартного» бизнес-потребности (= (Бог Я начинаю звучать как SQL DDL, даже когда я говорю)
Вот exaxmple:.
CREATE TABLE IF NOT EXISTS PERSON(
ID INT,
CONSTRAINT PRIMARY KEY (ID),
ADDRESS_ID INT NOT NULL DEFAULT 1,
DESCRIPTION VARCHAR(255),
CONSTRAINT PERSON_UQ UNIQUE KEY (ADDRESS_ID, ...));
INSERT INTO PERSON(ID, DESCRIPTION)
VALUES (1, 'GOVERNMENT');
CREATE TABLE IF NOT EXISTS ADDRESS(
ID INT,
CONSTRAINT PRIMARY KEY (ID),
PERSON_ID INT NOT NULL DEFAULT 1,
DESCRIPTION VARCHAR(255),
CONSTRAINT ADDRESS_UQ UNIQUE KEY (PERSON_ID, ...),
CONSTRAINT ADDRESS_PERSON_FK FOREIGN KEY (PERSON_ID) REFERENCES PERSON(ID));
INSERT INTO ADDRESS(ID, DESCRIPTION)
VALUES (1, 'ABANDONED HOUSE AT THIS ADDRESS');
ALTER TABLE PERSON ADD CONSTRAINT PERSON_ADDRESS_FK FOREIGN KEY (ADDRESS_ID) REFERENCES ADDRESS(ID);
< ... жизнь продолжается ... обеспечивают ли вы и адрес или не к лицу и наоборот>
Я определил одну таблицу, затем другую таблицу, ссылающуюся на первую, а затем изменил первый, чтобы отразить ссылку на вторую (которая не существовала во время создания первой таблицы). Он не предназначен для конкретной базы данных; если мне это нужно, я просто попробую, и если это сработает, я буду использовать его, если не тогда, я попытаюсь избежать необходимости в дизайне (я не всегда могу это контролировать, иногда дизайн передается мне как есть) , если у вас есть адрес без человека, то он принадлежит «правительству». Если у вас есть «бездомный человек», тогда он получает адрес «заброшенный дом». Я запускаю процесс, чтобы определить, в каких домах нет пользователей.
Да, каждый адрес относится только к одному человеку. Я не думаю, что это будет иметь большое значение, хотя, если бы я превратил его в отношения «многие ко многим». – jthg
Вы всегда будете делиться реестрами? Может ли г-н Лицо и г-жа Лич делить один адрес или иметь отдельные (но идентичные) адресные записи? – Ray
Нет, записи адресов никогда не будут доступны. – jthg