Дизайн нормальной формы в SQL Server - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть 2 таблицы (FirstTable & SecondTable). Моя FirstTable - это таблица заголовков, а SecondTable - подробная таблица, но FirstTable имеет сложный первичный ключ. Как я могу иметь ссылку на мою таблицу SecondTable на первую таблицу, которая будет НОРМАЛЬНОЙ и лучшим выбором.

Tables

1 Ответ

4 голосов
/ 19 апреля 2011

В вашем случае есть как минимум три способа сделать это. Ваш выбор зависит от информации, которую вы нам еще не сообщили.

Подумай, прежде чем выбрать. Тот факт, что вы задаете такой очень простой вопрос, говорит о том, что вы, вероятно, допустите ошибки в реализации. (Это наблюдение, а не критика.) Сначала поработайте над копией своей базы данных. Ожидайте уничтожить его.

  1. Сохраните весь первичный ключ FirstTable в SecondTable. Тот означает добавление столбца для Key_F2 в SecondTable, заполняя его правильные данные, отбрасывая старые ограничение, и добавление нового, который будет включать в себя такой пункт, как foreign key (Key_F1, Key_F2) references FirstTable (Key_F1, Key_F2).
  2. Объявить УНИКАЛЬНОЕ ограничение на FirstTable.Key_F1. Тогда вы можете добавить новое ограничение для SecondTable который будет включать в себя такой пункт, как foreign key (Key_F1) references FirstTable (Key_F1). Конечно это будет работать только если значения в FirstTable.Key_F1 являются уникальными.
  3. Добавление столбца в SecondTable для хранения значение в FirstTable.ID, и заполнить этот столбец с правом данные. Затем вы можете удалить столбец SecondTable.Key_F2 и установить внешний ключ. ссылка из SecondTable.ID на FirstTable.ID.
...