powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно спроектировать БД?
17 сообщений из 17, страница 1 из 1
Как правильно спроектировать БД?
    #39027248
maxyc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость

Тема следующая:
Надо сделать базу данных, в которой будут сети магазинов, в этих сетях есть магазины. Магазины в конкретных городах. В СЕТЯХ (не в магазинах) есть товары, например, молоко. Но молоко может быть ОАО Залесский фермер или ОАО ЕЖК. В разных сетях товар разных вендоров стоит по разному. Помимо этого в одной сети в разных городах может стоить по разному товар...
Встал вопрос как правильно хранить цену в базе, так чтобы было не сложно вытаскивать ее потом запросами.
Усложняется все тем, что товар не товар. То есть товар нужно делать SKU. Поэтому цена будет зависеть от параметров товара. Я привел пример базы с конкретным товаром, и что то не могу продумать схему "товары с SKU"

Плюсом нужна история по датам
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39027255
maxyc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39027486
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxycВстал вопрос как правильно хранить цену в базе, так чтобы было не сложно вытаскивать ее потом запросами.
Дата начала + дата окончания действия цены
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39027583
inse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxyc,

А Вы для каких целей проектируете БД? Где она будет использоваться?
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39027925
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
insemaxyc,

А Вы для каких целей проектируете БД? Где она будет использоваться?Курсач ? :)
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39027969
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inseА Вы для каких целей проектируете БД? Где она будет использоваться?
А что это как то меняет правила проектирования БД?

ИМХО: В любом случае нужно делать хорошо- плохо само получится. :)
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39028013
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxyc Встал вопрос как правильно хранить цену в базе, так чтобы было не сложно вытаскивать ее потом запросамиА зачем ее (цену) вообще хранить в отдельной таблице - какая в этом выгода? Нехай лежит себе в журнале движения товаров и не надо ее вытаскивать.
maxyc Но молоко может быть ОАО Залесский фермер или ОАО ЕЖКТо бишь оно потом сливается в одну бочку? С молоком в розничной продаже я такое в последний раз видел как бы не 20-30 лет назад. А если это фасованная продукция, то она заслуживает собственной записи в каталоге товаров.
maxyc То есть товар нужно делать SKU.Если вы поясните, что вы подразумеваете под "товары с SKU", то ваши шансы получить адекватный ответ возрастут.
LSV Курсач ? :) Не сезон для курсачей. Больше похоже на экзарсис на тему - "как бы я написал свою торговлю и склад"
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39028073
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257maxyc Встал вопрос как правильно хранить цену в базе, так чтобы было не сложно вытаскивать ее потом запросамиА зачем ее (цену) вообще хранить в отдельной таблице - какая в этом выгода? Нехай лежит себе в журнале движения товаров и не надо ее вытаскивать.

Потому что цена - более широкое понятие, чем движение товара.
У движения - должна быть цена, а вот цена - совершенно не обязана быть связана с движением.
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39028157
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergueiinseА Вы для каких целей проектируете БД? Где она будет использоваться?
А что это как то меняет правила проектирования БД?

ИМХО: В любом случае нужно делать хорошо- плохо само получится. :)

для OLTP учётных задач - одна структура БД, для отчётности - другая.
ещё как минимум надо учитывать рост нагрузки как по кол-ву записей, так и по количеству пользователей, пиковые нагрузки. развитие системы по функционалу
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39028159
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,

а ещё похоже - какие-то торгаши очень жадные, что нанимают студента на боевую задачу. и настолько жадны, что студент ни опыта проектирования ни знания предметной области
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39046352
ShkrylAndrei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
Тема следующая:
Надо сделать базу данных, в которой будут сети магазинов, в этих сетях есть магазины. Магазины в конкретных городах. В СЕТЯХ (не в магазинах) есть товары, например, молоко. Но молоко может быть ОАО Залесский фермер или ОАО ЕЖК. В разных сетях товар разных вендоров стоит по разному. Помимо этого в одной сети в разных городах может стоить по разному товар...
Встал вопрос как правильно хранить цену в базе, так чтобы было не сложно вытаскивать ее потом запросами.
Усложняется все тем, что товар не товар. То есть товар нужно делать SKU. Поэтому цена будет зависеть от параметров товара. Я привел пример базы с конкретным товаром, и что то не могу продумать схему "товары с SKU"

Плюсом нужна история по датам

Вы вводите своими комментариями в заблуждение. Магазин это магазин, товар(например молоко) это товар, в принципе они никак не связаны в реальной жизни, они подчиняются только законом логике - чтобы купить товар, нужно сходить в магазин, в данном случае мы говорим о продуктовом магазине. Цена это свойство любого товара, также как и дата изготовления, и цвет упаковки. Свойство цена прикрепляется к товар, как неотъемлемая его часть, так как товар-это сущность-> объект реального мира. Наверное уместно говорить о каком-то складе, тогда логика прояснится Есть магазин-есть склад-на складе есть товары, товары разгружаются со склада в магазин и поступают в продажу. Наверное логично выделить сущность движение товара(или его история), чтобы можно было отследить, когда и где он был закуплен, по какой цене, по каким накладным, и каким образом он попал в конкретный магазин. Мне не понятно почему вы считаете, что цена зависит от товара, товар, это сущность(или контейнер) хранящий набор атрибутов(свойств): цена, вес, срок годности. Если таблицы спроектированы правильно, то при любом количестве свойств, зная логику устройства вашей базы данных, с помощью Structured query Language можно получить всю необходимую информацию.

Я виж решение вашей задачи именно так.

Мне не понятно зачем вы выделяет Items и Prices, получается что цена товара это отдельная сущность, я считаю что здесь логика не верна, потому что если брать аналогию например, автомобиль, то вы отдельно описываете автомобиль и колеса автомобиля, хотя логическая единица всего одна Автомобиль, также как и с товаром-там всего одна логическая единица Товар, у него есть свойство цена, эту цену можно разбить -закупочная цена, цена реализация, наценка, но все равно все это относится именно к товару, цена сама по себе быть не может.

А вот поле adress из сущности stores лучше перенести в справочник, так и назвать его Adress,там будет храниться информация о горое, стране и физическом адресе расположения магазина, с номером телефона, и кодом города, и директором магазина.
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39046614
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShkrylAndreiМне не понятно зачем вы выделяет Items и Prices, получается что цена товара это отдельная сущность, я считаю что здесь логика не верна, потому что если брать аналогию например, автомобиль, то вы отдельно описываете автомобиль и колеса автомобиля, хотя логическая единица всего одна Автомобиль, также как и с товаром-там всего одна логическая единица Товар, у него есть свойство цена, эту цену можно разбить -закупочная цена, цена реализация, наценка, но все равно все это относится именно к товару, цена сама по себе быть не может.

Цена полезна как отдельная сущность хотя бы потому что она зависит от даты (а может зависеть, в принципе, и от других параметров).
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39046695
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинShkrylAndreiМне не понятно зачем вы выделяет Items и Prices, получается что цена товара это отдельная сущность, я считаю что здесь логика не верна, потому что если брать аналогию например, автомобиль, то вы отдельно описываете автомобиль и колеса автомобиля, хотя логическая единица всего одна Автомобиль, также как и с товаром-там всего одна логическая единица Товар, у него есть свойство цена, эту цену можно разбить -закупочная цена, цена реализация, наценка, но все равно все это относится именно к товару, цена сама по себе быть не может.

Цена полезна как отдельная сущность хотя бы потому что она зависит от даты (а может зависеть, в принципе, и от других параметров). Поддержу, ибо автор хотел разные цены в разных магазинах
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39047223
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShkrylAndreiА вот поле adress из сущности stores лучше перенести в справочник, так и назвать его AdressЧем лучше?
-Вероятность переиспользования адреса минимальна
-Вероятность смены магазином адреса (чтобы было удобно хранить старый адрес минимальна)
То бишь необходимости замены длинного адреса коротким address_id нет.
ShkrylAndreiс номером телефона, и кодом города, и директором магазина. А это то как связано с адресом?
Выносом адреса в отдельную таблицу получается вертикальное секционирование, причем будут ли использованы достоинства такого секционирования это бабушка надвое сказала, а недостатки (в виде поддержки дополнительной таблицы) будут обязательно
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39047389
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257ShkrylAndreiА вот поле adress из сущности stores лучше перенести в справочник, так и назвать его AdressЧем лучше?
Практически всем. Вероятность дополнения схемы другими сущностями, тоже имеющими адрес, высока. Вероятность изменения и дополнения формата хранения адреса высока. Вероятность появления сравнительно сложной бизнес-логики, связанной с адресами, высока.
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39047533
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxyc,
какую программу использовали для диаграммы?
...
Рейтинг: 0 / 0
Как правильно спроектировать БД?
    #39051439
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxycТема следующая:
Надо сделать базу данных, в которой будут сети магазинов, в этих сетях есть магазины. Магазины в конкретных городах. В СЕТЯХ (не в магазинах) есть товары, например, молоко. Но молоко может быть ОАО Залесский фермер или ОАО ЕЖК. В разных сетях товар разных вендоров стоит по разному. Помимо этого в одной сети в разных городах может стоить по разному товар...
Встал вопрос как правильно хранить цену в базе, так чтобы было не сложно вытаскивать ее потом запросами.
Усложняется все тем, что товар не товар. То есть товар нужно делать SKU. Поэтому цена будет зависеть от параметров товара. Я привел пример базы с конкретным товаром, и что то не могу продумать схему "товары с SKU"

Плюсом нужна история по датам
Почти норм.
Единственый принципиальный момент - prices разве устанавливается для города? Она устанавливается для магазина. Иначе возможно нарушение целостности - цена ссылается на сеть1 и на город2 в котором нету магазинов этой сети. Так что лучше цену свяжи с stores. И убери связь с городом и сетью.
Второй серьезный момент - вендор это свойство товара а не цены. Опять лишние связи, опять может быть нарушение целостности - когда прайс ссылается на товар1 и вендор2, а у этого вендора такого товара и нету. Сделай ссылку у items на vendors. А у prices убери её.

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


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