Как добавить отношения между таблицами в существующей базе данных MySQL? - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть база данных MySQL с большим количеством таблиц.

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

Ответы [ 3 ]

1 голос
/ 06 сентября 2011

как то так

ALTER TABLE `table1` ADD CONSTRAINT table1_id_refs FOREIGN KEY (`table2_id`) REFERENCES `table2` (`id`);
1 голос
/ 06 сентября 2011

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

Сначала вы определяете, какие записи не будут соответствовать ограничению.Затем вы решаете, что с ними делать, и исправляете их, удаляете или что-то другое.Затем вы создаете ограничение после очистки данных.

Если у вас уже есть плохие данные, иногда лучшее, что вы можете сделать, это добавить родительскую запись для «unknown» и присоединить к ней все дочерние записи, у которых нет существующего родителя. Например, если это были фактические заказык ним прикреплены финансовые значения, которые вы не хотите удалять (что портит финансовую отчетность), а затем вы используете Неизвестного клиента.

В некоторых случаях вы можете безопасно удалить информацию изполе или вся запись. Предположим, вы хотите добавить ссылку на таблицу состояний с таблицей адресов в качестве дочерней таблицы. Предположим, что сейчас у нее есть состояние 107, а у вас нет идентификатора состояния 107. Лучше ли иметьадрес, который нельзя использовать вообще (например, вы не можете отправить по электронной почте, чтобы указать состояние Неизвестно) и, таким образом, удалить запись или оставить поле состояния пустым (потому что ваши пользователи могут связаться с клиентом и заполнить его, и у вас естьадрес улицы, который вы не хотите потерять.

Только вы можете выбрать для своего конкретногоприложение и что он используется для того, как обрабатывать в настоящее время плохие записи.А поскольку у вас сейчас нет ограничений, вероятность того, что у вас плохие записи, очень высока.

0 голосов
/ 06 сентября 2011

С документы Синтаксис для добавления ограничений внешних ключей к существующим таблицам:

ALTER TABLE tbl_name
    ADD [CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option
...