PHP SQL Проверка ссылочной целостности для всей БД

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

При поиске я нашел этот вопрос: как найти записи, которые нарушают ссылочную целостность

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

Спасибо за помощь, Ю

РЕДАКТИРОВАТЬ: я знаю, что большинство баз данных проверяют это автоматически, но я студент, и задача говорит: «Эти сценарии должны иллюстрировать обновление и ссылочную целостность вашей базы данных. Пожалуйста, укажите явно, где вы проверяете ссылочную целостность (добавление строк, изменение строк, удаление строк)".

Так что я думаю, что я должен проверить это вручную.


person Yíu    schedule 08.01.2015    source источник
comment
Эти проверки выполняются MySQL автоматически, когда вы пытаетесь вставить данные (+ когда вы не отключили проверки вручную, + когда вы ранее добавили ссылочную целостность в свою структуру).   -  person Daniel W.    schedule 08.01.2015


Ответы (1)


Большинство баз данных проверяют ссылки, например MySQL. Итак, взгляните на команды FOREIGN KEY и REFERENCES

http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

Пример со страницы MySQL

CREATE TABLE parent (
    id INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (
    id INT, 
    parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) 
        REFERENCES parent(id)
        ON DELETE CASCADE
) ENGINE=INNODB;

Ребенок автоматически проверяет и нуждается в родительской строке. Если вы удалите родителей, все дочерние строки будут удалены (ON DELETE CASCADE).

person Community    schedule 08.01.2015
comment
Спасибо за Ваш ответ. К сожалению, я думаю, что мне нужно сделать это вручную по практическим соображениям (см. отредактированный вопрос). Было бы неплохо, если бы вы могли взглянуть на него во второй раз. - person Yíu; 08.01.2015
comment
С помощью ALTER TABLE вы можете добавить ограничения таблицы. - person ; 08.01.2015
comment
@Yíu Никогда не делайте это вручную. Это не предполагается делать вручную. Это совсем не безопасно. Вам нужна часть: FOREIGN KEY (...) REFERENCES (...) ON DELETE ... или ON UPDATE... см. связанные документы. - person Daniel W.; 08.01.2015