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

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

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

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

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

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

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

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

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

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

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

1) Зарегистрированный пользователь может состоять только в одной роли.
2) "Номер класса" я уберу ,пожалуй.
3) В "Атрибутах классов" хранятся описания (названия) атрибутов класса, в "Значениях атрибутов" - их значения для каждого товара из класса. Как их можно свести в 2 колонки без дочерней связи?
4) Атрибуты "Длина-Ширина-Высота" по ТЗ являются обязательными для каждого вида товаров, и могут быть разными у объектов одного класса , поэтому их место в таблице "Товары".
...
Рейтинг: 0 / 0
04.09.2007, 02:56
    #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
04.09.2007, 03:00
    #34773106
metabox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте схему БД
СлимаЦена товара предполагается неизменной?

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

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

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

IMHO - ресурсы это лишнее, а ACL проще сделать, чем потом извращаться.
...
Рейтинг: 0 / 0
04.09.2007, 10:05
    #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
04.09.2007, 11:19
    #34773692
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте схему БД
Не верный принцип работы с остатками. Схему надо дробить.
...
Рейтинг: 0 / 0
04.09.2007, 11:23
    #34773710
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте схему БД
Поймите одну вещь, что остатки товара - это не есть информация кот. должна храниться в справочнике товаров. Остатки и наличие есть величина постоянно расчетная исходя из приходов и расходов.
...
Рейтинг: 0 / 0
04.09.2007, 11:27
    #34773724
Быкис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте схему БД
спорный вопрос...
...
Рейтинг: 0 / 0
04.09.2007, 11:31
    #34773742
Слима
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте схему БД
metabox СлимаЦена товара предполагается неизменной?

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

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

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


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