Это мой первый проект схемы базы данных. Я пытаюсь разработать небольшое веб-приложение для своего отдела, которое будет использоваться для управления стоимостью продуктов питания. И я делаю это для своей цели обучения.Проектирование моей первой схемы базы данных: требуется предложение
Как работает стоимость еды управления в моем отделе:
- Всего пользователей: 15
- Один администратора, чтобы вести учет всех затрат. он будет ежедневно обновлять базу данных.
- Каждый член может сделать только один раз в день. Если у кого-то есть гость в любой конкретный день, он может заказать несколько блюд.
- Обычно участники оплачивают свой счет на неделю или две заранее.
- одно или два человека несут ответственность за привоз пищи извне, и им не нужно платить за обед. Транспортные расходы также предоставляются им. их стоимость еды + стоимость перевозки распределяется поровну с другими 15 членами расходов.
Баз данные запросы:
От администратора точки зрения:
- он будет управлять/добавить ежедневный заказ. (Таблица: заказы)
- он добавит платежи для всех членов, которые будут зачислены в счет «Баланс» соответствующего участника (Таблица: платежи)
- он сможет просмотреть обзор всех заказов участников/стоимость историю и их текущий баланс в диаграмме в течение одного месяца за раз.
- Если какой-либо участник имеет отрицательный баланс или меньше определенной суммы денег, он будет уведомлен о панели управления администратора.
С точки зрения члена:
- он сможет увидеть его текущий баланс и историю заказов/стоимость за последний месяц за один раз.
- он сможет увидеть последний x номер истории платежей, которые он сделал.
на основе запросов, которые я упоминал выше, я пытался разработать схему базы данных, которая выглядит, как на рисунке ниже:
Elaboration некоторых атрибутов:
EPlatenum : Добавлено количество дополнительной тарелки пищи, кроме количества заказанной тарелки.
Eplatecost: стоимость дополнительной тарелки продуктов питания. эта стоимость распределяется поровну между индивидуальной стоимостью 15 человек.
EPersonnum & EPersoncost: Количество дополнительного человека, вовлеченного в результате чего продукты питания и их общую стоимость. стоимость будет распределена поровну между индивидуальной стоимостью 15 человек.
TransCost: стоимость перевозки. стоимость будет распределена поровну между индивидуальной стоимостью 15 человек.
Вопросы:
какие ошибки я сделал и как я могу их преодолеть?
Для моей таблицы DailyList я использовал «дату» в качестве основного ключа. Можно ли использовать дату в качестве первичного ключа? ЕСЛИ не в порядке, что здесь может быть основным ключом?
Когда я собираюсь заполнить обзор диаграммы в течение 30-месячной стоимости/истории заказа, запрос базы данных будет огромным, я предполагаю. какой подход следует использовать для оптимизации запроса?
Я с нетерпением жду ваших предложений по улучшению схемы базы данных. Пожалуйста, помогите мне исправить мои дизайнерские ошибки и преодолеть их. Спасибо за терпеливость.
От быстрого поиска вашей схемы вы должны ** никогда не хранить деньги как плавающие, поскольку они имеют ограниченную точность и могут быть неточными (например, 0,99 вместо 1). Я бы предложил изменить тип данных любого столбца, который хранит деньги как DECIMAL или NUMERIC, поскольку они являются номерами фиксированных точек. –
Благодарю вас за предложение. – xihad