![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Хотелось бы услышать советов по поводу проектирования БД компьютерного магазина. Ниже приведена схема данных. Посоветуйте пожалуйста что добавить, либо изменить. |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Я бы из таблицы "Заказы" убрал бы "Код товара"; создал ещё одну таблицу "Стороки заказов"
Добавлено через 8 минут и 4 секунды Потому как, если, конечно, я не ошибаюсь, на данный момент получается, что в определённом заказе будет только один определённый товар. Также не определено количество товара для конкретного заказа. -------------------- (С) kapbepucm |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: нет Всего: 21 |
Я бы из Товаров выделил бы Наименование и Характеристики в справочник. Одинаковых товаров может пройти уйма.
И вместо русских символов использовал бы латиницу. Вместо Код писал бы как и вторичные ключи - Код товара. Никаких пробелов в именах. Вдруг будет два пробела - большая проблемма с поиском ошибки. По поводу латиницы: b_[имя_таблицы] (b - база, часто изменяемые данные. Для справочников будет s) K_[имя_таблицы] - счетчик T_[постфикс] - текст N_[постфикс] - число F_[постфикс] - логический И так далее. Очень удобно. Если не известен постфик, то берется имя таблицы. В результате в запросах никогда не перепутаете, что это за поле. Абстрактных полей типа, дата тоже нужно избегать. D_ZAKAZ - будет гораздо понятней при сравнении с D_POSTAVKA. В целях экономии места и некоторого облегчения заполнения, можно Адрес разбить на состовляющие. Справочник улиц позволит не писать наименование полностью. В общем рюшечек можно много еще привести. Задавайте более конкретные вопросы. Нам ведь не извесны требования к БД. kapbepucm, зачем это?
Это сообщение отредактировал(а) bopoha - 30.4.2008, 19:44 |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Ещё предложение. Вместо трёх таблиц "Клиенты", "Менеджеры", "Поставщик" сделать одну.
Всё вышеупомянутое носит рекомендательный характер и не принуждает ни к каким действиям -------------------- (С) kapbepucm |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: нет Всего: 21 |
Аргументировали бы хоть. Поля одинаковые? Так роли очень разные. В целях оптимизации выборки, меньшего хаоса и улучшения сопровождаемости, лучше три таблицы. Т.к. с течением времени БД меняется. Это сообщение отредактировал(а) bopoha - 30.4.2008, 19:47 |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
В принципе я описал...
Добавлено через 1 минуту и 7 секунд Разве ж очень? Добавлено через 6 минут и 31 секунду Ну, по крайней мере, сам разрабатывал и до сих пор поддерживаю складскую БД, где партнёры и работники склада в одной таблице. Клиенты не жалуются Добавлено через 12 минут и 8 секунд bopoha,если вас не затруднит, приведите хотя-бы маленький примерчик, где моя структура не совершенна. -------------------- (С) kapbepucm |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: нет Всего: 21 |
kapbepucm, не беспокойтесь совершенных структур БД не бывает.
В моей практике было решение (именно мое) объединить разные роли в одну таблицу. Не удобство возникло в следующем: - Таблица раздулась. - Не понятно было какая запись к чему относится. А это понадобится в этом конкретном случае. - Упала скорость запросов связанных с этой таблицей, при увеличении числа записей. В объединенной таблице записей на много больше. - Возникли сложности с внесением изменений в структуру БД. Вот, наверное, это все. |
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Есть небольшой вопрос. Товар будет поставляться с одной стоимостью, а сбываться с надбавкой. Мне придется в таблицу товар включить поля стоимость закупки, стоимость продажи? Или можно сделать по другому?
|
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Моя схема данных приняла такой вид:
![]() Но появилась небольшая проблема. В свойствах поля стоимость продажи в данных прописываю формулу: =([Стоимость закупки])*1,3. В форме все работает нормально. Идет надбавка 30%, но в поле стоимость продажи данные не вносятся. Почему? Это сообщение отредактировал(а) Treod - 1.5.2008, 15:01 |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Treod, а у вас всем товарам при продаже будет одинаковая наценка 30%?
Добавлено через 5 минут и 34 секунды Если да, то поле "стоимость продажи" не совсем нужно... -------------------- (С) kapbepucm |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Если нет, то можно сделать какую нибудь структуру, которая бы по умолчанию добавляла 30%, но по желанию менеджера могла-бы и меняться. Для менеджера это могло бы выглядеть как прайс-лист. Ну а вообще, если к каждому клиенту имеется индивидуальный подход, неплохо бы добавить в таблицу "Строки заказа" поле "цена", которая по умолчанию бралась бы из прайс-листа, но по желанию менеджера могла-бы меняться.
-------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Да, всем товарам будет наценка 30%.
А как я могу обойтись без этого поля? |
||||
|
|||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Имею ввиду то, что хранить в таблице туже самую цену, только умноженную на 1,3 необязательно. Например, нехитрый запрос бы и сам посчитал нужную цену продажи.
-------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Можно конкретный пример запроса? Это сообщение отредактировал(а) Treod - 1.5.2008, 18:16 |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Ну, например:
Это сообщение отредактировал(а) kapbepucm - 1.5.2008, 20:25 -------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Как сделать с помощью этого запроса, чтобы в поле "Стоимость продажи" автоматически добавлялась сумма? SQl запрос в моем случае примет вид:
Или же придется вручную обращаться к запросу и копировать стоимость продажи? Это сообщение отредактировал(а) Treod - 2.5.2008, 15:43 |
||||
|
|||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Для чего в таблице "Товары" поле "Количество"?
Это сообщение отредактировал(а) kapbepucm - 2.5.2008, 20:01 -------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Количество товара.
Да) Это сообщение отредактировал(а) Treod - 2.5.2008, 20:12 |
||||
|
|||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Количество товара в определённом заказе или остаток товара на складе магазина?
Зачем? Добавлено через 1 минуту и 50 секунд
-------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Ниже приведена форма поставки. Мне необходимо, чтобы при занесении в поле "Стоимость закупки" данных, автоматически данные переносились в поле "Стоимость продажи" с наценкой.
![]() Добавлено через 1 минуту и 40 секунд
Количество поставляемого товара. Добавлено через 3 минуты и 25 секунд Может у меня не хватает таблицы? Таблица Товары у меня одна. Она используется и при поставке и при заказе товара. Может посоветуете какую еще добавить таблицу? |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Наконец до меня дошло...
Я бы объединил таблицы: 1)"Клиенты" и "Поставщик" в "Партнёры" 2)"Заказы" и "Поставка" в "Документы" 3)"Строки заказа" стали бы "Строки документа". Ну и количество если это заказ умножать на (-1) Ну а если оставлять так, то: 1)Нужна ещё таблица наподобие "Строки заказа" между "Товары" и "Поставка"
-------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
А может же быть, что в таблице "Товары" не будет конкретно поставляемого товара. Или сначала его необходимо внести в таблицу "Товары"?
Большое спасибо за помощь, но все же имеются еще пару вопросов: 1) В таблице "Товары" будут содержаться товары, имеющиеся в мвгазине? . 2) Как я могу убрать из таблицы "Товары" поле "Стоимость продажи"? Попробую объяснить на примере. Допустим в магазин поставляется товар от фирмы ООО "ХХХ". Поставляется процессор стоимостью 5600 руб. Клиенту мы его продаем уже за 6000 руб. Где будет храниться стоимость товара, когда мы осуществляем продажу? Добавлено через 1 минуту и 24 секунды Может необходима таблица "Склад магазина"? |
|||
|
||||
| kapbepucm |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Добавлено через 4 минуты и 42 секунды Мне непонятно следуещее:
5600*1.3=7280 -------------------- (С) kapbepucm |
||||
|
|||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Значит все же следует создать таблицу "Склад товаров"? Или можно обойтись и без нее? |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Думаю, что нет. Остаток может посчитать запрос.
-------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Если не сложно, можно привести листинг запроса? Буду благодарен Думаю можно добавить поле "Наличие товара". Добавлено через 2 минуты и 6 секунд И еще вопрос: Что же делать со стоимостью продажи? Или просто оставить поле "Цена товара"? |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Думаю не стоит. Запрос всё наидет что есть, а чего нет на складе.
-------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Я просто привел пример, не стал уж вычислять 30%. По сути всем товарам будет одинаковая надценка. Добавлено через 1 минуту и 49 секунд А как будет выглядеть запрос, который подсчитывает остаток? |
|||
|
||||
| kapbepucm |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Гм... С тои схемой, которая у вас сейчас на данный момент- не знаю. Может всё же произведёте одну из двух манипуляций? 1) 2) Добавлено через 3 минуты и 8 секунд В этих двух вариантах- знаю -------------------- (С) kapbepucm |
||||
|
|||||
| Treod |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Провел 2-ую манипуляцию.
![]() Добавлено @ 18:26
С запросом то мне все понятно. Вводим стоимость товара, выводится стоимость продажи. Вот листинг моего запроса:
Но как сделать, чтобы стоимоть продажи сразу вносилась в таблицу "Товары" поле "стоимость продвжи"? Это сообщение отредактировал(а) Treod - 3.5.2008, 18:34 |
||||
|
|||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Нет. Вводим код товара (конечно необязательно код, для конечного пользователя можно сделать раскрывающийся список, и код, который нужен, сам введётся) вводим количество, а всё остальное самостоятельно где надо посчитается.
-------------------- (С) kapbepucm |
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Да я оговорился. Вводим код товара. Но, повторю еще раз: мне нужно, чтобы стоимоть продажи сразу вносилась в таблицу "Товары" поле "стоимость продажи"
Добавлено через 3 минуты и 2 секунды ![]() Добавлено через 3 минуты и 56 секунд Так приблизительно должна выглядеть таблица "Товары" |
|||
|
||||
| kapbepucm |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
И всёже, не понимаю чем вам не нравиться регистрировать новый товар в этом запросе:
Это сообщение отредактировал(а) kapbepucm - 3.5.2008, 19:11 -------------------- (С) kapbepucm |
||||||
|
|||||||
| kapbepucm |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: 6 Всего: 12 |
Остаток товара сделал в 5 этапов (для наглядности):
1)Запрос Ostatok1
2)Запрос Ostatok2
3)Запрос Ostatok3
4)Запрос Ostatok4
5)Запрос Ostatok5
Это сообщение отредактировал(а) kapbepucm - 3.5.2008, 19:29 -------------------- (С) kapbepucm |
||||||||||
|
|||||||||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Спасибо большое за помощь. Для цены продыжи оставлю просто запрос. С остатком пока разбираюсь. Еще раз огромное спасибо. |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: нет Всего: 21 |
Treod, чем больше цифр будет захарткодано в коде, тем труднее будет сопровождать программу. После разработки попробуй найти разбросанную 1.3 в коде. Надбавка поменяется. Как пить дать. Если не хочется выносить в настройки, то можно сделать фукнцию для вычисления. И использовать ее везде. При измнении понадобится поменять только в одном месте.
|
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Пытаюсь создать запрос, выдает ошибку.
Произвел некоторые изменения: 1) "Цену продажи" занес в "Строки заказа" 2)"Цену закупки" в "Строки поставки" |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: нет Всего: 21 |
||||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Всё, надоело.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Treod |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 21.11.2007 Репутация: 1 Всего: 2 |
Спасибо |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |