powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Покритикуйте схему БД
25 сообщений из 32, страница 1 из 2
Покритикуйте схему БД
    #34770073
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задание - для диплома надо написать интернет-магазин по продаже компьютеров и комплектующих. Реализовать надо на php+mysql. Под это дело была разработана схема БД.
Какие проблемы могут быть при ее использовании?
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34770868
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица "покупатели" лишена смысла. "Продавцы" - по большому счету тоже. Если надо хранить, является ли субъект продавцом или покупателем, добавьте пару флагов в таблицу "Субъекты"
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34770884
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И перевозчиков - туда же. Можно сделать столбец "роль субъекта" и писать туда покупатель/продавец/перевозчик, конечно при условии что каждый субъект выполняет одну роль
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34770890
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице "заказаные товары" явно не нужен столбец "Название товара", а торговую марку наверное стоит перенести в товары. Также вызывает сомнение столбец "Цена товара"
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34770898
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для таблицы "Значения атрибутотв" будет довольно таки неудобно контролировать целостность данных - понадобится триггер, который будет проверять принадлежность товара к нужному классу.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34770915
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зарегистрированный пользователь может состоять только в одной роли. Это требование ТЗ?
Не уверен, что миграция поля "Номер класса" в первичный ключ таблицы атрибутов обоснована. Часто вам будет нужен список атрибутов товара без описания, какие именно это атрибуты? Так что не надо экономить на лишнем джойне, все равно не сэкономите.
Не вижу смысла делать таблицу атрибутов дочерней относительно таблицы классов. Иначе у вас получается, что атрибуты Длина-Ширина-Высота придется повторять для каждого класса, и логически их объединить никак не получится, кроме как хардкодом.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34771076
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адрес:
1) если это интернет-магазин, то в адресе кроме почтовой составляющей должна быть возможность добавлять описание для курьерской службы (выйти из метро, налево 300 м, серое здание, 5 этаж)
2) Строение возможно только одно (либо корпус, либо строение). но бывают адреса вида: д.5, кор.4, стр. 6

3) не понял зачем нужны "Продавцы" и почему товары завязаны на продавцов?
Или один товар может продавать только один продавец?
В жизни это не так.

Зачем нужна отдельная таблица "Покупатели" - тоже не ясно.
Заказ можно прицепить напрямую к субъекту.

4) Не раскрыта тема "Платежей". Как будет платить человек: карточкой, наличными курьеру, WebMony, наложенным платежом на почте?

5) Структура ролей-разрешений - плохая.
Я бы добавил еще одну таблицу: ROLE_PERMISSION_LINK, чтобы один и тот же пермишен можно было добавить в разные роли.

Почему ресурсы сайта как-то завязаны с разрешениями - тоже не очень понятно.
что этим хотелось изобразить?
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34771760
Слима
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Цена товара предполагается неизменной?
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773084
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SenjaТаблица "покупатели" лишена смысла. "Продавцы" - по большому счету тоже. Если надо хранить, является ли субъект продавцом или покупателем, добавьте пару флагов в таблицу "Субъекты"

Проект делается "на вырост" , поэтому я полагаю , что таблицы "покупатели" , "перевозчики" , "продавцы" лучше не объединять в "субъекты". Если появятся дополнительные требования к набору атрибутов по этим сущностям, то придется таблицу "субъекты" резать на части. Так лучше уж сразу...
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773089
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SenjaИ перевозчиков - туда же. Можно сделать столбец "роль субъекта" и писать туда покупатель/продавец/перевозчик, конечно при условии что каждый субъект выполняет одну роль

Да , каждый субъект выполняет только одну роль. Количество перевозчиков и продавцов предполагается не большим, поэтому пусть регистрируются как "покупатели", если хотят что-либо купить.

SenjaВ таблице "заказаные товары" явно не нужен столбец "Название товара", а торговую марку наверное стоит перенести в товары. Также вызывает сомнение столбец "Цена товара"

В "заказаных товарах" должна сохраняться цена на момент подтверждения заказа , впоследствии цена может измениться . Торговая марка и название товара тоже должны быть такими , как
в подтверждении , отправленным покупателем.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773091
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SenjaДля таблицы "Значения атрибутотв" будет довольно таки неудобно контролировать целостность данных - понадобится триггер, который будет проверять принадлежность товара к нужному классу.

Да , придется делать именно так.
Таблицы "Классы товаров", "Атрибуты классов", "Значения атрибутов" нужны для реализации некоего подобия "модели Тенцера" (она же EAV). Целостность данных - это ее слабое место.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773098
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor TiegaelЗарегистрированный пользователь может состоять только в одной роли. Это требование ТЗ?
Не уверен, что миграция поля "Номер класса" в первичный ключ таблицы атрибутов обоснована. Часто вам будет нужен список атрибутов товара без описания, какие именно это атрибуты? Так что не надо экономить на лишнем джойне, все равно не сэкономите.
Не вижу смысла делать таблицу атрибутов дочерней относительно таблицы классов. Иначе у вас получается, что атрибуты Длина-Ширина-Высота придется повторять для каждого класса, и логически их объединить никак не получится, кроме как хардкодом.

1) Зарегистрированный пользователь может состоять только в одной роли.
2) "Номер класса" я уберу ,пожалуй.
3) В "Атрибутах классов" хранятся описания (названия) атрибутов класса, в "Значениях атрибутов" - их значения для каждого товара из класса. Как их можно свести в 2 колонки без дочерней связи?
4) Атрибуты "Длина-Ширина-Высота" по ТЗ являются обязательными для каждого вида товаров, и могут быть разными у объектов одного класса , поэтому их место в таблице "Товары".
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773103
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelyАдрес:
1) если это интернет-магазин, то в адресе кроме почтовой составляющей должна быть возможность добавлять описание для курьерской службы (выйти из метро, налево 300 м, серое здание, 5 этаж)
2) Строение возможно только одно (либо корпус, либо строение). но бывают адреса вида: д.5, кор.4, стр. 6

3) не понял зачем нужны "Продавцы" и почему товары завязаны на продавцов?
Или один товар может продавать только один продавец?
В жизни это не так.

Зачем нужна отдельная таблица "Покупатели" - тоже не ясно.
Заказ можно прицепить напрямую к субъекту.

4) Не раскрыта тема "Платежей". Как будет платить человек: карточкой, наличными курьеру, WebMony, наложенным платежом на почте?

5) Структура ролей-разрешений - плохая.
Я бы добавил еще одну таблицу: ROLE_PERMISSION_LINK, чтобы один и тот же пермишен можно было добавить в разные роли.

Почему ресурсы сайта как-то завязаны с разрешениями - тоже не очень понятно.
что этим хотелось изобразить?

1-2) Спасибо . Переделаю.
3) Предполагается , что один и тот же вид товара могут продавать разные продавцы со своих складов по разным ценам . Покупателей с субъектами объединять не хочется. См. выше.
4) Тема "Платежей" еще прорабатывается.
5) А что будет, если создать связь "Ресурсы сайта - Роли пользователей" как "M:N" через таблицу "Разрешения" ? Число ресурсов не велико , число ролей тоже . Можно ведь расписать все права напрямую , без ACL ?
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773106
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СлимаЦена товара предполагается неизменной?

В таблице "Товары" цена может меняться, в таблице "Заказанные товары" цена фиксируется на момент подтверждения заказа покупателем.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773400
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
metabox5) А что будет, если создать связь "Ресурсы сайта - Роли пользователей" как "M:N" через таблицу "Разрешения" ? Число ресурсов не велико , число ролей тоже . Можно ведь расписать все права напрямую , без ACL ?Можно то можно, но это ограничение - причем не очень понятное и сильно сужающее круг.

Я бы пермишены трактовал шире, чем "можно/нельзя открывать страницу".
Пермишены могут быть:
"Вход в систему", "Просмотр чужих заказов", "Редактирование чужих заказов", "Редактирование цен", "Отпуск товара со склада" итд.

Это будут пермышены на действия, а не на открытие страницы.
Причем на одной странице будет задействовано несколько пермишенов, и один пермишен может быть задействован на разных страницах.

IMHO - ресурсы это лишнее, а ACL проще сделать, чем потом извращаться.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773419
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
-- Классы товаров
create table GoodsType (
Id int not null primary key,
Name varchar( 100 ) not null
);
-- Товары
create table Goods(
Id int not null primary key,
Name varchar( 255 ) not null,
TypeId int not null,
...);
-- Атрибуты классов
create table GoodsField (
Id in not null primary key,
Name varchar( 100 ) not null,
...);
-- Значения атрибутов классов
create table GoodsFieldValue(
GoodsId int not null,
FieldId int not null,
... ,
primary key (GoodsId, FieldId));

-- Самое главное - внешние ключи
alter table Goods add constraint Goods_TypeId_FK foreign key (TypeId) references GoodsType(Id);
alter table GoodsFieldValue add constraint GoodsFieldValue_GoodsId_FK foreign key (GoodsId) references Goods(Id);
alter table GoodsFieldValue add constraint GoodsFieldValue_FieldId_FK foreign key (FieldId) references GoodsField(Id);
Посмотрите, покрутите - может, вам такая схема больше понравится.
metaboxАтрибуты "Длина-Ширина-Высота" по ТЗ являются обязательными для каждого вида товаров, и могут быть разными у объектов одного класса , поэтому их место в таблице "Товары".Габариты я привел исключительно для примера. На самом деле имелся в виду любой межклассовый атрибут, который отсутствует в таблице товаров.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773692
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не верный принцип работы с остатками. Схему надо дробить.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773710
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поймите одну вещь, что остатки товара - это не есть информация кот. должна храниться в справочнике товаров. Остатки и наличие есть величина постоянно расчетная исходя из приходов и расходов.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773724
Фотография Быкис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спорный вопрос...
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773742
Слима
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
metabox СлимаЦена товара предполагается неизменной?

В таблице "Товары" цена может меняться, в таблице "Заказанные товары" цена фиксируется на момент подтверждения заказа покупателем.

1. Предположим, 1 сентября на товар А была назначена цена 2000 р. По этой цене товар никто не покупал, и 10 сентября цена была снижена до 1800 р. Информация о том, что товар А с 1 по 10 сентября стоил 2000 р. будет утеряна.
2. С 1 октября на 1079 товарных позиций вводятся новые цены. Ввод новых цен осуществляется в ночь с 30 сентября на 1 октября, ровно в полночь. Иначе - никак.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773943
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с предыдущим оратором. Тут еще необходима система учета периодических реквизитов (обязательно). Т.к. это системы затрагивает цены и т.д. необходимо отслеживать изменение их во времени. А остатки надо расчитывать на лету, 100%
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34773953
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще необходима система учета движений. Типа, провели продажу , сделали документ или запись в спец. таблицу. И исходя из этих данных будут считаться остатки ( ну и приходы делать также , разумеется)
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34774008
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniЕще необходима система учета движений. Типа, провели продажу , сделали документ или запись в спец. таблицу. И исходя из этих данных будут считаться остатки ( ну и приходы делать также , разумеется)1. Никто не мешает склад и приход/расход держать в 1С, а товар и его кол-во в интернет магазине просто показывать.
2. Это дипломная работа, а не дело всей жизни.
Если идти по пути "что еще сюда можно воткнуть" - то можно много чего наваять:
- Сборочное производство
- Бухгалтерию по работе с БН
- Финансово учетный модуль всех издержек интернет-магазина
- взаиморасчеты с поставщиками, контрагентами, курьерскими службами, балансы
- Сервисное обслуживание проданных товаров
итд. итп.

вобщем - не на один год кодописания...
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34774029
Фотография Быкис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё-таки (если остатки востребовываются часто) их лучше держать в таблице (причём по каждому складу отдельно), и обновлять её при каждой товарной операции; а также остатки на конец каждого периода (для них тоже своя таблица).
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34774044
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дипомный проект надо делать мысленно законченным, иначе получится незаконченная система. Остатки должны быть видны оперативно. А если держать что-то в 1С, то и контрагентов и товар тоже в 1С можно держать, тогда надо делать механизм лишь отображающий данные из 1С.
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Покритикуйте схему БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]