powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Покритикуйте схему БД
32 сообщений из 32, показаны все 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
Покритикуйте схему БД
    #34774102
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniДипомный проект надо делать мысленно законченным, иначе получится незаконченная система. Остатки должны быть видны оперативно. А если держать что-то в 1С, то и контрагентов и товар тоже в 1С можно держать, тогда надо делать механизм лишь отображающий данные из 1С.Сможете побыстренькому сделать схемку, где бы все вот это было учтено и было бы мысленно законченным?

автор- Склад
- Учет себестоимости товара с учетом курсов валют
- Сборочное производство
- Бухгалтерию по работе с БН
- Финансово учетный модуль всех издержек интернет-магазина
- взаиморасчеты с поставщиками, контрагентами, курьерскими службами, балансы
- Сервисное обслуживание проданных товаров
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34774866
2b&2b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
metaboxЕсть задание - для диплома надо написать интернет-магазин по продаже компьютеров и комплектующих

Оценка сразу минус на один бал.
Вас просили реализовать "интернет-магазин по продаже компьютеров и комплектующих", а не Одын-Це бухгалтерию. Советую посмотреть
1) законодательство, где сказано что торговля по инету ничем не отличается от обычной торговли
2) как реализованы существующие движки инет магазинов. Интернет вам в руки.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34776119
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelyIMHO - ресурсы это лишнее, а ACL проще сделать, чем потом извращаться.
Уговорили , буду делать ACL.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34776121
metabox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слима
1. Предположим, 1 сентября на товар А была назначена цена 2000 р. По этой цене товар никто не покупал, и 10 сентября цена была снижена до 1800 р. Информация о том, что товар А с 1 по 10 сентября стоил 2000 р. будет утеряна.
2. С 1 октября на 1079 товарных позиций вводятся новые цены. Ввод новых цен осуществляется в ночь с 30 сентября на 1 октября, ровно в полночь. Иначе - никак.


1) Зачем на сайте хранить информацию , которая нигде не сайте используется ?
2) Спасибо за замечание. Введу атрибуты "Будущая цена" и "Дата установки новой цены" в "Товарах".
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34776267
Фотография Rin@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
metabox
1) Зачем на сайте хранить информацию , которая нигде не сайте используется ?


На сайте она может и не нужна, хотя, как знать. Можно устроить показательную акцию о снижении цен с такой-то на такую-то. Для внутренних дел фирмы снижение (повышение) цен имеет значение.
...
Рейтинг: 0 / 0
Покритикуйте схему БД
    #34776631
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
metabox Слима2. С 1 октября на 1079 товарных позиций вводятся новые цены. Ввод новых цен осуществляется в ночь с 30 сентября на 1 октября, ровно в полночь. Иначе - никак.
2) Спасибо за замечание. Введу атрибуты "Будущая цена" и "Дата установки новой цены" в "Товарах".Лучше не так - лучше добавить таблицу - история цен/управление ценами.
Если цена указана в будущем - то в час "Х" цена должна измениться в основной таблице.

Кроме того - в этой же таблице можно держать информацию кто менял цену.

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


А что, сотрудники интернет-магазина у Вас будут работать с какой-то параллельной базой?
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Покритикуйте схему БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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