Я согласен с предыдущими ответами от jtyost2 и Yishai.
Еще одно замечание, наше соглашение заключается в именовании таблиц сущностей в единственном числе, соответствующих имени класса. То есть мы называем одну строку (мы называем один экземпляр класса) вместо того, чтобы называть набор. Вопрос, который мы задаем, состоит в том, что одна строка в этой таблице представляет одну, что? И мы используем это единственное имя для класса и для таблицы. (Предвидя возражения, да, я признаю, что другие разработчики и другие фреймворки следуют соглашению о «множественном названии таблицы». Rails даже достаточно умен при мультипликации, чтобы генерировать таблицу «people» из класса Person.)
Но когда имена таблиц начинают быть множественными, я замечаю, что часто только некоторые имена таблиц становятся множественными, и в итоге получается сочетание единственного и множественного имен.
`partner_id`
`order_id`
Ваши столбцы внешнего ключа названы так, как мы их назовем. Мы придерживаемся соглашения для столбца внешнего ключа: используйте имя родительской таблицы, за которым следует _id. Для нескольких связей с одной и той же таблицей мы используем имя роли в дополнение или вместо имени таблицы.
Я бы также предложил добавить определения ограничений внешнего ключа в базу данных, даже если механизм MyISAM не применяет их.
Добавить ограничение первичного ключа для столбца ID в каждой таблице (кажется, что он отсутствует в таблице partner
.
Идентифицирует естественные ключи с помощью уникального индекса.
Мне кажется, есть две модели для платежей:
- один платеж полностью за каждый заказ
Это модель, которую Amazon, похоже, использует. К заказу могут применяться бонусные купоны и кредиты, но когда дело доходит до оплаты, я делаю ровно один платеж за заказ.
- платежей на баланс аккаунта
Другая модель заключается в использовании учетной записи и применении сборов, кредитов и платежей к учетной записи. Эта модель обычно используется такими коммунальными службами, как телефонная компания. Это позволяет использовать такие понятия, как текущий баланс и причитающаяся сумма.
Ваш дизайн кажется нетрадиционным в этом отношении. Там нет понятия учетной записи клиента. Тем не менее, похоже, что за один заказ произойдет несколько платежей.