|
|
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Есть задание - для диплома надо написать интернет-магазин по продаже компьютеров и комплектующих. Реализовать надо на php+mysql. Под это дело была разработана схема БД. Какие проблемы могут быть при ее использовании? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2007, 03:29 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Таблица "покупатели" лишена смысла. "Продавцы" - по большому счету тоже. Если надо хранить, является ли субъект продавцом или покупателем, добавьте пару флагов в таблицу "Субъекты" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 10:24 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
И перевозчиков - туда же. Можно сделать столбец "роль субъекта" и писать туда покупатель/продавец/перевозчик, конечно при условии что каждый субъект выполняет одну роль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 10:28 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
В таблице "заказаные товары" явно не нужен столбец "Название товара", а торговую марку наверное стоит перенести в товары. Также вызывает сомнение столбец "Цена товара" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 10:32 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Для таблицы "Значения атрибутотв" будет довольно таки неудобно контролировать целостность данных - понадобится триггер, который будет проверять принадлежность товара к нужному классу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 10:36 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Зарегистрированный пользователь может состоять только в одной роли. Это требование ТЗ? Не уверен, что миграция поля "Номер класса" в первичный ключ таблицы атрибутов обоснована. Часто вам будет нужен список атрибутов товара без описания, какие именно это атрибуты? Так что не надо экономить на лишнем джойне, все равно не сэкономите. Не вижу смысла делать таблицу атрибутов дочерней относительно таблицы классов. Иначе у вас получается, что атрибуты Длина-Ширина-Высота придется повторять для каждого класса, и логически их объединить никак не получится, кроме как хардкодом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 10:42 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Адрес: 1) если это интернет-магазин, то в адресе кроме почтовой составляющей должна быть возможность добавлять описание для курьерской службы (выйти из метро, налево 300 м, серое здание, 5 этаж) 2) Строение возможно только одно (либо корпус, либо строение). но бывают адреса вида: д.5, кор.4, стр. 6 3) не понял зачем нужны "Продавцы" и почему товары завязаны на продавцов? Или один товар может продавать только один продавец? В жизни это не так. Зачем нужна отдельная таблица "Покупатели" - тоже не ясно. Заказ можно прицепить напрямую к субъекту. 4) Не раскрыта тема "Платежей". Как будет платить человек: карточкой, наличными курьеру, WebMony, наложенным платежом на почте? 5) Структура ролей-разрешений - плохая. Я бы добавил еще одну таблицу: ROLE_PERMISSION_LINK, чтобы один и тот же пермишен можно было добавить в разные роли. Почему ресурсы сайта как-то завязаны с разрешениями - тоже не очень понятно. что этим хотелось изобразить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 11:30 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Цена товара предполагается неизменной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 14:24 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
SenjaТаблица "покупатели" лишена смысла. "Продавцы" - по большому счету тоже. Если надо хранить, является ли субъект продавцом или покупателем, добавьте пару флагов в таблицу "Субъекты" Проект делается "на вырост" , поэтому я полагаю , что таблицы "покупатели" , "перевозчики" , "продавцы" лучше не объединять в "субъекты". Если появятся дополнительные требования к набору атрибутов по этим сущностям, то придется таблицу "субъекты" резать на части. Так лучше уж сразу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 01:39 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
SenjaИ перевозчиков - туда же. Можно сделать столбец "роль субъекта" и писать туда покупатель/продавец/перевозчик, конечно при условии что каждый субъект выполняет одну роль Да , каждый субъект выполняет только одну роль. Количество перевозчиков и продавцов предполагается не большим, поэтому пусть регистрируются как "покупатели", если хотят что-либо купить. SenjaВ таблице "заказаные товары" явно не нужен столбец "Название товара", а торговую марку наверное стоит перенести в товары. Также вызывает сомнение столбец "Цена товара" В "заказаных товарах" должна сохраняться цена на момент подтверждения заказа , впоследствии цена может измениться . Торговая марка и название товара тоже должны быть такими , как в подтверждении , отправленным покупателем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 01:52 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
SenjaДля таблицы "Значения атрибутотв" будет довольно таки неудобно контролировать целостность данных - понадобится триггер, который будет проверять принадлежность товара к нужному классу. Да , придется делать именно так. Таблицы "Классы товаров", "Атрибуты классов", "Значения атрибутов" нужны для реализации некоего подобия "модели Тенцера" (она же EAV). Целостность данных - это ее слабое место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 01:59 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelЗарегистрированный пользователь может состоять только в одной роли. Это требование ТЗ? Не уверен, что миграция поля "Номер класса" в первичный ключ таблицы атрибутов обоснована. Часто вам будет нужен список атрибутов товара без описания, какие именно это атрибуты? Так что не надо экономить на лишнем джойне, все равно не сэкономите. Не вижу смысла делать таблицу атрибутов дочерней относительно таблицы классов. Иначе у вас получается, что атрибуты Длина-Ширина-Высота придется повторять для каждого класса, и логически их объединить никак не получится, кроме как хардкодом. 1) Зарегистрированный пользователь может состоять только в одной роли. 2) "Номер класса" я уберу ,пожалуй. 3) В "Атрибутах классов" хранятся описания (названия) атрибутов класса, в "Значениях атрибутов" - их значения для каждого товара из класса. Как их можно свести в 2 колонки без дочерней связи? 4) Атрибуты "Длина-Ширина-Высота" по ТЗ являются обязательными для каждого вида товаров, и могут быть разными у объектов одного класса , поэтому их место в таблице "Товары". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 02:25 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
BelyАдрес: 1) если это интернет-магазин, то в адресе кроме почтовой составляющей должна быть возможность добавлять описание для курьерской службы (выйти из метро, налево 300 м, серое здание, 5 этаж) 2) Строение возможно только одно (либо корпус, либо строение). но бывают адреса вида: д.5, кор.4, стр. 6 3) не понял зачем нужны "Продавцы" и почему товары завязаны на продавцов? Или один товар может продавать только один продавец? В жизни это не так. Зачем нужна отдельная таблица "Покупатели" - тоже не ясно. Заказ можно прицепить напрямую к субъекту. 4) Не раскрыта тема "Платежей". Как будет платить человек: карточкой, наличными курьеру, WebMony, наложенным платежом на почте? 5) Структура ролей-разрешений - плохая. Я бы добавил еще одну таблицу: ROLE_PERMISSION_LINK, чтобы один и тот же пермишен можно было добавить в разные роли. Почему ресурсы сайта как-то завязаны с разрешениями - тоже не очень понятно. что этим хотелось изобразить? 1-2) Спасибо . Переделаю. 3) Предполагается , что один и тот же вид товара могут продавать разные продавцы со своих складов по разным ценам . Покупателей с субъектами объединять не хочется. См. выше. 4) Тема "Платежей" еще прорабатывается. 5) А что будет, если создать связь "Ресурсы сайта - Роли пользователей" как "M:N" через таблицу "Разрешения" ? Число ресурсов не велико , число ролей тоже . Можно ведь расписать все права напрямую , без ACL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 02:56 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
СлимаЦена товара предполагается неизменной? В таблице "Товары" цена может меняться, в таблице "Заказанные товары" цена фиксируется на момент подтверждения заказа покупателем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 03:00 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
metabox5) А что будет, если создать связь "Ресурсы сайта - Роли пользователей" как "M:N" через таблицу "Разрешения" ? Число ресурсов не велико , число ролей тоже . Можно ведь расписать все права напрямую , без ACL ?Можно то можно, но это ограничение - причем не очень понятное и сильно сужающее круг. Я бы пермишены трактовал шире, чем "можно/нельзя открывать страницу". Пермишены могут быть: "Вход в систему", "Просмотр чужих заказов", "Редактирование чужих заказов", "Редактирование цен", "Отпуск товара со склада" итд. Это будут пермышены на действия, а не на открытие страницы. Причем на одной странице будет задействовано несколько пермишенов, и один пермишен может быть задействован на разных страницах. IMHO - ресурсы это лишнее, а ACL проще сделать, чем потом извращаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 09:58 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
metaboxВ "Атрибутах классов" хранятся описания (названия) атрибутов класса, в "Значениях атрибутов" - их значения для каждого товара из класса. Как их можно свести в 2 колонки без дочерней связи?Я имел в виду примерно следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. metaboxАтрибуты "Длина-Ширина-Высота" по ТЗ являются обязательными для каждого вида товаров, и могут быть разными у объектов одного класса , поэтому их место в таблице "Товары".Габариты я привел исключительно для примера. На самом деле имелся в виду любой межклассовый атрибут, который отсутствует в таблице товаров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 10:05 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Не верный принцип работы с остатками. Схему надо дробить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 11:19 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Поймите одну вещь, что остатки товара - это не есть информация кот. должна храниться в справочнике товаров. Остатки и наличие есть величина постоянно расчетная исходя из приходов и расходов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 11:23 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
спорный вопрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 11:27 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
metabox СлимаЦена товара предполагается неизменной? В таблице "Товары" цена может меняться, в таблице "Заказанные товары" цена фиксируется на момент подтверждения заказа покупателем. 1. Предположим, 1 сентября на товар А была назначена цена 2000 р. По этой цене товар никто не покупал, и 10 сентября цена была снижена до 1800 р. Информация о том, что товар А с 1 по 10 сентября стоил 2000 р. будет утеряна. 2. С 1 октября на 1079 товарных позиций вводятся новые цены. Ввод новых цен осуществляется в ночь с 30 сентября на 1 октября, ровно в полночь. Иначе - никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 11:31 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Согласен с предыдущим оратором. Тут еще необходима система учета периодических реквизитов (обязательно). Т.к. это системы затрагивает цены и т.д. необходимо отслеживать изменение их во времени. А остатки надо расчитывать на лету, 100% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 12:06 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Еще необходима система учета движений. Типа, провели продажу , сделали документ или запись в спец. таблицу. И исходя из этих данных будут считаться остатки ( ну и приходы делать также , разумеется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 12:08 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
izoldov-roskiniЕще необходима система учета движений. Типа, провели продажу , сделали документ или запись в спец. таблицу. И исходя из этих данных будут считаться остатки ( ну и приходы делать также , разумеется)1. Никто не мешает склад и приход/расход держать в 1С, а товар и его кол-во в интернет магазине просто показывать. 2. Это дипломная работа, а не дело всей жизни. Если идти по пути "что еще сюда можно воткнуть" - то можно много чего наваять: - Сборочное производство - Бухгалтерию по работе с БН - Финансово учетный модуль всех издержек интернет-магазина - взаиморасчеты с поставщиками, контрагентами, курьерскими службами, балансы - Сервисное обслуживание проданных товаров итд. итп. вобщем - не на один год кодописания... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 12:20 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Всё-таки (если остатки востребовываются часто) их лучше держать в таблице (причём по каждому складу отдельно), и обновлять её при каждой товарной операции; а также остатки на конец каждого периода (для них тоже своя таблица). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 12:23 |
|
||
|
Покритикуйте схему БД
|
|||
|---|---|---|---|
|
#18+
Дипомный проект надо делать мысленно законченным, иначе получится незаконченная система. Остатки должны быть видны оперативно. А если держать что-то в 1С, то и контрагентов и товар тоже в 1С можно держать, тогда надо делать механизм лишь отображающий данные из 1С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 12:27 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=115&tid=1544322]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 352ms |

| 0 / 0 |
