Как я могу улучшить эту модель базы данных? - PullRequest
0 голосов
/ 30 июля 2011

Я пытаюсь смоделировать отношения продаж DVD и аренды DVD с клиентом. Хотя я не думаю, что моя таблица переносов верна. Если кто-нибудь может дать мне знать, пойду ли я в правильном направлении с дизайном, который был бы великолепен.

Relationship Model

Ответы [ 3 ]

5 голосов
/ 30 июля 2011

Вот один из способов, которым вы можете создать это.

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

  1. На вашей диаграмме я заметил несколько вещей, например, ваше предположение о продаже только DVD.Что произойдет, если владелец магазина начнет продавать диски Blu-ray или портативные игровые приставки.Мое предложение было бы сохранить общий дизайн.Поэтому я перефразировал таблицу DVD в Item, чтобы таблица могла вместить что угодно.

  2. Я также добавил таблицу типов элементов, чтобы вы могли определить, к какому типу элементов это относятся.

  3. Ваши транзакции следует рассматривать как однупорядок.Клиент может разместить один заказ, который может содержать набор предметов, которые он хотел бы приобрести, а также несколько предметов, которые он хотел бы арендовать.Вы бы не попросили их дважды стереть карту, не так ли?Вместо этого создайте заказ для клиента в заголовке заказа и разместите его позиции в таблице сведений о заказе.В таблице деталей заказа также указывается количество, например, сколько товаров клиент хотел бы купить / арендовать.Когда они арендуют, поле даты возврата будет нулевым для начала.Когда они возвращают товар, вы можете вернуться назад и заполнить дату, выполнив поиск идентификатора товара и комбинации идентификаторов клиентов.

Вы можете создать это в n количество способов, но с ограниченной информацией, это то, что я мог придумать.

Я не утверждаю, что это лучший дизайн.Я надеюсь, что это даст вам некоторую идею взять его отсюда и настроить в соответствии с вашими потребностями ..

Database_design

2 голосов
/ 30 июля 2011

Многие розничные базы данных моделируют каждый тип транзакции («Продажа Гарри Поттера», «Аренда Гарри Поттера») как разные строки в одной таблице. Таким образом, у вас будет «TransactionType», а затем вы можете иметь Customer-> Transaction-> LineItem (экземпляр транзакции) -> TransactionType.

1 голос
/ 30 июля 2011

Я бы поместил всю информацию о транзакции в одну таблицу. Некоторые поля могут не использоваться в зависимости от типа транзакции (P Покупка, R Аренда), но что с того? Дисковое пространство дешево. Код будет проще и быстрее, если будет меньше таблиц.

...