У меня есть следующие 2 таблицы в MySQL: Клиент (идентификатор, Firstname, Lastname...) Премия (идентификатор, CustomerId, Значение...)
Отношение является Непосредственным, у каждого клиента есть только одна премия. (CustomerId уникален в Бонусной Таблице),
Q: Я должен отбросить столбец Id таблицы Bonus? (Я хочу знать почему или почему не),
Я бы удалил поле Bonus.Id и сделал PK Bonus.CustomerId. Это устранит необходимость иметь уникальное ограничение для столбца Bonus.CustomerId, поскольку теперь это будет PK. Любой, кто посмотрит на стол, увидит более четкое соотношение один к одному без Bonus.Id coulmn. Вам не понадобится индекс для Bonus.CustomerId, индекс PK будет всем, что вам нужно, поэтому меньше места на диске и кеша памяти будет потрачено впустую. Кроме того, если вам когда-либо понадобится FK для таблицы бонусов, вы должны использовать значение CustomerId (новый PK), которое можно использовать для возврата к таблицам клиентов или бонусов, а не только для бонусов.
Я предполагаю, что на самом деле это не истинный один-к-одному, потому что вы можете предположительно иметь Customer без бонусной строки. Ограничения внешнего ключа в стиле SQL всегда являются необязательными для ссылающейся стороны любого отношения.
Я согласен, что столбец Bonus.Id кажется совершенно излишним.
если это "один к одному", зачем нужна дополнительная таблица? вместо этого вы можете поместить "bonusvalue" в таблицу customer.
(else: да, вы можете отбросить id таблицы bonus-table, customer-id является первичным ключом и "id" совершенно излишен)