Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MS Access] БД компьютерного магазина, Задача проектирования 
:(
    Опции темы
Treod
Дата 30.4.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.11.2007

Репутация: 1
Всего: 2




Хотелось бы услышать советов по поводу проектирования БД компьютерного магазина. Ниже приведена схема данных. Посоветуйте пожалуйста что добавить, либо изменить.

user posted image
PM MAIL ICQ   Вверх
kapbepucm
Дата 30.4.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Цитата(Treod @  30.4.2008,  18:19 Найти цитируемый пост)
Посоветуйте пожалуйста что добавить, либо изменить.
Я бы из таблицы "Заказы" убрал бы "Код товара"; создал ещё одну таблицу "Стороки заказов"
Код
=========================
   Стороки заказов
-------------------------
  LineID
  Код заказа
  Код товара
  Количество
=========================


Добавлено через 8 минут и 4 секунды
Потому как, если, конечно, я не ошибаюсь, на данный момент получается, что в определённом заказе будет только один определённый товар. Также не определено количество товара для конкретного заказа. smile 


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
bopoha
Дата 30.4.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 21



Я бы из Товаров выделил бы Наименование и Характеристики в справочник. Одинаковых товаров может пройти уйма.
И вместо русских символов использовал бы латиницу. Вместо Код писал бы как и вторичные ключи - Код товара.
Никаких пробелов в именах. Вдруг будет два пробела - большая проблемма с поиском ошибки.

По поводу латиницы:
b_[имя_таблицы] (b - база, часто изменяемые данные. Для справочников будет s)
K_[имя_таблицы] - счетчик
T_[постфикс] - текст
N_[постфикс] - число
F_[постфикс] - логический

И так далее. Очень удобно. Если не известен постфик, то берется имя таблицы. В результате в запросах никогда не перепутаете, что это за поле. Абстрактных полей типа, дата тоже нужно избегать. D_ZAKAZ - будет гораздо понятней при сравнении с D_POSTAVKA.

В целях экономии места и некоторого облегчения заполнения, можно Адрес разбить на состовляющие. Справочник улиц позволит не писать наименование полностью. 

В общем рюшечек можно много еще привести. Задавайте более конкретные вопросы. Нам ведь не извесны требования к БД.

kapbepucm, зачем это?
Цитата(kapbepucm @  30.4.2008,  19:28 Найти цитируемый пост)
Я бы из таблицы "Заказы" убрал бы "Код товара"; создал ещё одну таблицу "Стороки заказов"



Это сообщение отредактировал(а) bopoha - 30.4.2008, 19:44
PM MAIL WWW ICQ Skype GTalk   Вверх
kapbepucm
Дата 30.4.2008, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Ещё предложение. Вместо трёх таблиц "Клиенты", "Менеджеры", "Поставщик" сделать одну.
Всё вышеупомянутое носит рекомендательный характер и не принуждает ни к каким действиям smile 


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
bopoha
Дата 30.4.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 21



Цитата(kapbepucm @  30.4.2008,  19:44 Найти цитируемый пост)
Ещё предложение. Вместо трёх таблиц "Клиенты", "Менеджеры", "Поставщик" сделать одну.


Аргументировали бы хоть. Поля одинаковые? Так роли очень разные. В целях оптимизации выборки, меньшего хаоса и улучшения сопровождаемости, лучше три таблицы. Т.к. с течением времени БД меняется.

Это сообщение отредактировал(а) bopoha - 30.4.2008, 19:47
PM MAIL WWW ICQ Skype GTalk   Вверх
kapbepucm
Дата 30.4.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Цитата(bopoha @  30.4.2008,  19:43 Найти цитируемый пост)
зачем это?
В принципе я описал...
Цитата(kapbepucm @  30.4.2008,  19:28 Найти цитируемый пост)
Потому как, если, конечно, я не ошибаюсь, на данный момент получается, что в определённом заказе будет только один определённый товар. Также не определено количество товара для конкретного заказа.


Добавлено через 1 минуту и 7 секунд
Цитата(bopoha @  30.4.2008,  19:46 Найти цитируемый пост)
Так роли очень разные
Разве ж очень?

Добавлено через 6 минут и 31 секунду
Ну, по крайней мере, сам разрабатывал и до сих пор поддерживаю складскую БД, где партнёры и работники склада в одной таблице. Клиенты не жалуются smile

Добавлено через 12 минут и 8 секунд
bopoha,если вас не затруднит, приведите хотя-бы маленький примерчик, где моя структура не совершенна.


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
bopoha
Дата 30.4.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 21



kapbepucm, не беспокойтесь совершенных структур БД не бывает. 

В моей практике было решение (именно мое) объединить разные роли в одну таблицу. 
Не удобство возникло в следующем:
- Таблица раздулась.
- Не понятно было какая запись к чему относится. А это понадобится в этом конкретном случае.
- Упала скорость запросов связанных с этой таблицей, при увеличении числа записей. В объединенной таблице записей на много больше.
- Возникли сложности с внесением изменений в структуру БД.

Вот, наверное, это все.
PM MAIL WWW ICQ Skype GTalk   Вверх
Treod
Дата 30.4.2008, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.11.2007

Репутация: 1
Всего: 2



Есть небольшой вопрос. Товар будет поставляться с одной стоимостью, а сбываться с надбавкой. Мне придется в таблицу товар включить поля стоимость закупки, стоимость продажи? Или можно сделать по другому?
PM MAIL ICQ   Вверх
Treod
Дата 1.5.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.11.2007

Репутация: 1
Всего: 2



Моя схема данных приняла такой вид:

user posted image


Но появилась небольшая проблема.
В свойствах поля стоимость продажи в данных прописываю формулу: =([Стоимость закупки])*1,3. В форме все работает нормально. Идет надбавка 30%, но в  поле стоимость продажи данные не вносятся. Почему?




Это сообщение отредактировал(а) Treod - 1.5.2008, 15:01
PM MAIL ICQ   Вверх
kapbepucm
Дата 1.5.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Treod, а у вас всем товарам при продаже будет одинаковая наценка 30%?

Добавлено через 5 минут и 34 секунды
Если да, то поле "стоимость продажи" не совсем нужно...


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
kapbepucm
Дата 1.5.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Если нет, то можно сделать какую нибудь структуру, которая бы по умолчанию добавляла 30%, но по желанию менеджера могла-бы и меняться. Для менеджера это могло бы выглядеть как прайс-лист. Ну а вообще, если к каждому клиенту имеется индивидуальный подход, неплохо бы добавить в таблицу "Строки заказа" поле "цена", которая по умолчанию бралась бы из прайс-листа, но по желанию менеджера могла-бы меняться.


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Treod
Дата 1.5.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.11.2007

Репутация: 1
Всего: 2




Цитата

Treod, а у вас всем товарам при продаже будет одинаковая наценка 30%?


Да, всем товарам будет наценка 30%. 

Цитата

Если да, то поле "стоимость продажи" не совсем нужно...


А как я могу обойтись без этого поля?
PM MAIL ICQ   Вверх
kapbepucm
Дата 1.5.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Цитата(Treod @  1.5.2008,  17:04 Найти цитируемый пост)
А как я могу обойтись без этого поля? 
Имею ввиду то, что хранить в таблице туже самую цену, только умноженную на 1,3 необязательно. Например, нехитрый запрос бы и сам посчитал нужную цену продажи.


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Treod
Дата 1.5.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.11.2007

Репутация: 1
Всего: 2



Цитата

Имею ввиду то, что хранить в таблице туже самую цену, только умноженную на 1,3 необязательно. Например, нехитрый запрос бы и сам посчитал нужную цену продажи.


Можно конкретный пример запроса?

Это сообщение отредактировал(а) Treod - 1.5.2008, 18:16
PM MAIL ICQ   Вверх
kapbepucm
Дата 1.5.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 6
Всего: 12



Ну, например:
Код
SELECT (Field1*1.3)as Field2 from Table1


Это сообщение отредактировал(а) kapbepucm - 1.5.2008, 20:25


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.