Моделирование базы данных для слабого объекта

В моей базе данных есть 2 таблицы ordersи orderHistory.

 -----------------                    -----------------------
 |  orders       |                    |  orderHistory       |
 -----------------                    -----------------------
 | orderID  (PK) |                    | historyLineID  (PK) |
 | orderDate     |                    | status              |
 | price         |                    | quantity            |
 -----------------                    -----------------------

Теперь ордерможет иметь несколько строк истории. Однако линия историине может существовать сама по себе. Я слышал, что это называется слабой сущностью, и поэтому ПКиз заказовдолжен быть частью ПКтаблицы истории заказов.

Вопросы

  1. Действительно ли это правильное отношение слабой сущности? Есть ли другие способы их идентификации?
  2. Должен ли я добавить PKтаблицы orderв таблицу orderHistoryи сделать ее составным первичным ключом?
  3. Если я решу добавить новую запись в orderHistory, как мне добавить новый составной ключ? ( orderIDдоступен из таблицы orders, но historyLineIDдолжен автоматически увеличиваться.)
  4. Что, если я решу смоделировать это как обычно Связь «один ко многим» , где идентификатор заказа добавляется как внешний ключ только вместо этого? каковы минусы этого?
  5. Приведет ли вообще игнорирование слабых сущностей к каким-либо проблемам на более позднем этапе проектирования, если все таблицы находятся в 3-й нормальной форме?

Примечание.

Оба orderIDи historyLineIDявляются суррогатными ключами. Заранее спасибо.

5
задан Songo 18 May 2012 в 19:49
поделиться