Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Помогите составить базу данных?


Автор: unkis 31.10.2006, 15:01
Ребята есть такая задача, нужно составить базу данных.

Задача следующая, есть магазины, они выставляют товары на продажу, и есть клиенты которые могут покупать эти продукты. Клиенты должны быть обязательно зарегистрированы у магазинов.

Заранее благодарен.

Автор: LSD 31.10.2006, 15:12
Берешь бумажку, выписываешь на нее какие у тебя есть сущности и какие у них свойства. Затем рисуешь между ними связи. А потом переносишь все это на базу.

Автор: unkis 31.10.2006, 15:27
вот я к примеру так сделал, насколько это хорошее решения
http://public.rz.fh-wolfenbuettel.de/~barvenko/eer2.pdf

Может есть у кого-то идеи получше?


Заранее Благодарен.

Автор: Vit 31.10.2006, 16:02
Цитата(unkis @  31.10.2006,  06:27 Найти цитируемый пост)
Может есть у кого-то идеи получше?



Кроме Вас никто не знает всех реалий, и скорее всего Вы по неопытности то же не знаете... Начинайте делать, но будьте готовы к тому что по ходу дела Вам прийдётся ни один раз ещё менять структуру и зависимости. Нарисовать базу данных идеальной структуры сразу... это надо иметь несколько лет опыта работы с базами, и то коррективы будут. Это как раз тот случай, когда лучше учится на своих ошибках.

Автор: unkis 31.10.2006, 16:27
Спасибо за ответ.

Я попробую рассказать ход своих мыслей при составлении такой схемы, а вы, если вам не трудно, поправите меня если что-то не так и должно быть иначе.

Есть магазин( их может быть много), один магазин может иметь много счетов то есть 1:n. 
Так же есть клиенты, которые зарегистрировали (открыли) счета у этого магазина, то есть один клиент может иметь много счетов у одного магазина, и один счёт может принадлежать только к одному клиенту в этом магазине то есть счёт n - - - - 1 клиент. 

Магазин предлагает товары, и один и тот же товар может находится в разных магазинах поэтому магазин n------ m товар

Над одним и тем же товаром могут производится разные действия (покупка, продажа, ...) поэтому 1:n.

А вот дальше я не уверен.

Клиенты
 через свои счета могут проводить действия над товаром(покупать, продавать), то есть с одного счёта можно купить или продать конкретный товар, поэтому счёт  1- - - - - - - n  действия


ну во общем где-то вот так вот я рассуждал. 


Заранее благодарен.



Автор: Dremlin 31.10.2006, 17:31
связи типа "многие-ко-многим" исключаем от греха...

(товар) 1 -----> n (товар_магазин) n <----- 1 (магазин) : каждый магазин может иметь много товаров, каждый товар может быть во многих магазинах.

(магазин) 1 -----> n (магазин_клиент) n <----- 1 (клиент) : каждый клиент может ходить во много магазинов, в каждый магазин может прийти много клиентов.

(историяПродаж) : где(магазин) кто(клиент) что(товар) сделал(купил/продал, сколько, когда и пр. нужные поля).

Итого:

(товар) 1 -----> n (товар_магазин) n <----- 1 (магазин) 1 -----> n (магазин_клиент) n <----- 1 (клиент)
    1                                                1                                                  1
    |                                                |                                                  |
    |                                                n                                                  |
    |------------------------------------> n (историяПродаж) n <---------------------------------------|



Мне почему-то так видится. Воть  smile 

ЗЫ. Нам бы к форуму тулзу для рисования диаграмм... smile 

Автор: LSD 31.10.2006, 18:00
Цитата(Dremlin @  31.10.2006,  17:31 Найти цитируемый пост)
ЗЫ. Нам бы к форуму тулзу для рисования диаграмм... 

При ответе жмешь "Предварительный просмотр", откроется форма где можно будет прикрепить файл. Например картинку с диаграммой.

Автор: unkis 31.10.2006, 18:14
спасибо поразмыслим и над такой схемой.



Цитата(Dremlin @  31.10.2006,  17:31 Найти цитируемый пост)
связи типа "многие-ко-многим" исключаем от греха...


а можно узнать почему?

Автор: TaNK 11.11.2006, 13:29
Цитата(unkis @ 31.10.2006,  15:01)
Ребята есть такая задача, нужно составить базу данных.

Задача следующая, есть магазины, они выставляют товары на продажу, и есть клиенты которые могут покупать эти продукты. Клиенты должны быть обязательно зарегистрированы у магазинов.

Заранее благодарен.

качаешь с инета программульку ErWin версии эдак 4,1 и рисуешь в ней свои сущности указываешь все аттрибуты и PK/FK а потом генерируешь ее..и она тебе уже выдает готовый код для твой бд...можешь сделать ее в InterBase а можешь в чем нить по проще!

Автор: Shymep 16.11.2006, 19:28
Цитата(TaNK @ 11.11.2006,  13:29)
качаешь с инета программульку ErWin версии эдак 4,1 и рисуешь в ней свои сущности указываешь все аттрибуты и PK/FK а потом генерируешь ее..и она тебе уже выдает готовый код для твой бд...можешь сделать ее в InterBase а можешь в чем нить по проще!

Причем здесь ErWin?
Во-1, сущности и связи еще не разработаны. По крайней мере тут я их не увидел. Во-2, ErWin больше подходит как средство документирования данных, чем как разработчик СУБД. От того что он сгенерирует какой-то SQL-код, это еще не значит, что у нас есть готовая СУБД...

Автор: TaNK 16.11.2006, 19:33
Цитата(Shymep @ 16.11.2006,  19:28)
Цитата(TaNK @ 11.11.2006,  13:29)
качаешь с инета программульку ErWin версии эдак 4,1 и рисуешь в ней свои сущности указываешь все аттрибуты и PK/FK а потом генерируешь ее..и она тебе уже выдает готовый код для твой бд...можешь сделать ее в InterBase а можешь в чем нить по проще!

Причем здесь ErWin?
Во-1, сущности и связи еще не разработаны. По крайней мере тут я их не увидел. Во-2, ErWin больше подходит как средство документирования данных, чем как разработчик СУБД. От того что он сгенерирует какой-то SQL-код, это еще не значит, что у нас есть готовая СУБД...

она очень упрощает создание бд, руками писать саму базу не придется, сначало поработай с этой программой а потом говори, что с ней можно делать а что нельзя!

Автор: Shymep 16.11.2006, 19:55
Цитата(TaNK @ 16.11.2006,  19:33)
она очень упрощает создание бд, руками писать саму базу не придется, сначало поработай с этой программой а потом говори, что с ней можно делать а что нельзя!

Не люблю разводить пустые разговоры  smile 
У меня была возможность в свое время испытать программы BPWin и ErWin. В поисках CASE-систем в результате я остановился на Rational Rose.  Однако, необходимо понимать, для чего эти средства применяются, и не применять их не по назначению. Если Вам необходимо написать лабораторную работу и не хочется руками набивать команды CREATE Table - это одно дело, а если Вам нужно создать реальную базу данных, то тут Вам ErWin ничем не поможет. Его можно использовать только как средство документации.

Автор: TaNK 16.11.2006, 20:04
Цитата(Shymep @ 16.11.2006,  19:55)
Цитата(TaNK @ 16.11.2006,  19:33)
она очень упрощает создание бд, руками писать саму базу не придется, сначало поработай с этой программой а потом говори, что с ней можно делать а что нельзя!

Не люблю разводить пустые разговоры  smile 
У меня была возможность в свое время испытать программы BPWin и ErWin. В поисках CASE-систем в результате я остановился на Rational Rose.  Однако, необходимо понимать, для чего эти средства применяются, и не применять их не по назначению. Если Вам необходимо написать лабораторную работу и не хочется руками набивать команды CREATE Table - это одно дело, а если Вам нужно создать реальную базу данных, то тут Вам ErWin ничем не поможет. Его можно использовать только как средство документации.

каждому свое!

Автор: chief39 17.11.2006, 12:35
Не знаю, не знаю...
Мне PowerDesigner от сайбейса очень помогал.
Просто оперируешь бизнес-объектами, тягаешь, раставляешь, редактируешь их. 
Всё на виду, легко представить, а уж потом сгенерил скл и правишь ручками что надо.

Для документации только... - спорный вопрос....

Мой текущий проект изначально был написан в Rational Rose и сгенерён в код, который потом дописывался.
По крайней мере смотреть структуру и что-то советовать гораздо нагляднее и легче, чем на словах или в куче скл DDLей.



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)