Лучшая структура базы данных для заказов - PullRequest
3 голосов
/ 05 июня 2011

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

Вот вариант № 1.

orders
-------
id
timestamp
userID
cartID
reviewed
approved
reviewBy
reviewTimestamp
reviewDetails
processed
processedBy
processedTimestamp
processedDetails

Вариант № 2:

orders
-------
id
timestamp
userID
cartID
reviewID
processID


reviews
-------
id
timestamp
status
reviewerID
details


processing
----------
id
timestamp
processorID
details

Спасибо, ребята!

Ответы [ 3 ]

3 голосов
/ 05 июня 2011

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

Кроме того, не забывайте, что обратное тоже может быть правдой. Например, один человек может обрабатывать три заказа одновременно. Или они могут одобрить три заказа одновременно. Может быть, этого не происходит сейчас, но вам нужно оценить будущее. Убедитесь, что модель базы данных работает для вас и ваших вариантов использования.

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

Что касается скорости, чем больше у вас присоединений, тем медленнее она будет идти. Тем не менее, мы не говорим о больших проблемах со скоростью, если ваша база данных невероятно велика. Делайте свои индексы правильно, и вы, скорее всего, никогда не заметите разницу.

1 голос
/ 05 июня 2011

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

1 голос
/ 05 июня 2011

Я бы получил с несколькими таблицами, разница в производительности будет незначительной, если вы создадите правильные индексы.

...