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


Автор: HellanD 19.2.2008, 00:00
Доброго Вам времени суток. Я хочу научиться работать с базами данных и грамотно их проектировать. По этому я решил попробовать спроектировать базу данных небольшого предприятия. Я не уверен что правильно это сделал, и по этому очень хочу услышать ваши идеи и мнения. 

Вот условия:
 1. Построить er диаграмму для БД небольшого предприятия по таким входным данным:  
 
  • номер склада
  • назначение склада,
  • площадь склада
  • имя кладовщика
  • название товара
  • количество товара
  • дата приёма
  • название поставщика
  • адрес поставщика
  • Номер телефона

Я считаю необходимым создать такие таблицы:
 
  •  Склады 
     
  •  Продукты
     
  •  Поставки
     
  •  Поставщики

В присоединённом файле моя er диаграмма

Хочу узнать Ваши мнения по этому поводу!

Автор: HellanD 19.2.2008, 00:08
Прошу простить первый файл в аттаче пустой. Используйте второй

Автор: source777 19.2.2008, 00:10
А как же кладовщики? Нужно же и о них где то данные хранить, не говоря уже о том, что у одного склада может быть несколько кладовщиков, причём не обязательно постоянных...

А рисунок у тебя пустой почему то прикрепился...

Добавлено через 4 минуты и 57 секунд
Цитата(HellanD @  19.2.2008,  00:08 Найти цитируемый пост)
Прошу простить первый файл в аттаче пустой. Используйте второй
А что за жесть, почему имена полей на русском, да ещё и с ошибками? 
+ между складами и поставками связь может быть многие ко многим...

Автор: XEugene 19.2.2008, 00:16
А разве дата приема продукта и дата поставки - не одно и то же?

Добавлено @ 00:21
По поводу связи название поставщика-поставщик  -  в качестве первичного и внешнего ключей лучше использовать айдишники.  А то получается,  что название поставщика хранится в двух таблицах.

Добавлено @ 00:23
Т.е.  Поставщики.id - Поставки. id_поставщика.

Добавлено @ 00:25
То же самое Артикул - продукт.

Автор: HellanD 19.2.2008, 10:03
Спасибо за ответы. Внес соответсвующие коррективы в базу данных.

Остались такие вопросы:
 1. Один кладовщик может отвечать за много складов, так и на оборот, в одном складе может быть много кладовщиков. Получаеться нужно создать что то вроде таблицы КладовщикоСклады? Немного странно. (Я новичек в СУБД по этому нужен совет)

 2. По поводу связей складов с поставками, можно ли предположить что поставки у меня идут просто в порядке увеличения номера, соответсвенно одна поставка (я сделал таблицу поставки для решения связи многие ко многим между продуктами и складами), имеет связь один ко многим.

В присоедененном файле база. Написал ее в аксессе. Посмотрите плиз. 

Очень жду ваших отзывов

Автор: HellanD 19.2.2008, 10:05
Вот полученная er диаграмма

Автор: under_sun 19.2.2008, 11:35
Цитата(HellanD @  19.2.2008,  10:03 Найти цитируемый пост)
1. Один кладовщик может отвечать за много складов, так и на оборот, в одном складе может быть много кладовщиков. Получаеться нужно создать что то вроде таблицы КладовщикоСклады? Немного странно.

Так и должно быть. Я бы даже сделал таблицу: Кладовщик, Склад, Когда был назначен отвественным за склад, Когда был снят.

Что касается поставок, то я понимаю под понятием поставка - привоз товаров, т.е. нескольких продуктов на один склад. Тогда между поставками и продуктами связь многие ко многим.
В таблице Продукты дата приема - лишнее поле, т.к. у одного продукта на разных складах разные даты приема (а также есть информация а дате поставки).

p.s.
Про проектирование баз данных можешь почитать Дейта - "Введение в системы баз данных".

Автор: source777 19.2.2008, 22:36
Цитата(HellanD @  19.2.2008,  00:00 Найти цитируемый пост)
Я хочу научиться работать с базами данных и грамотно их проектировать.

Цитата(HellanD @  19.2.2008,  10:03 Найти цитируемый пост)
В присоедененном файле база. Написал ее в аксессе.
Вот это не совместимые вещи, если хочешь научиться грамотно проектировать БД, то забудь про MS Access...

Автор: HellanD 21.2.2008, 09:49
Что то я в этом аксессе запутался. Не могу понять как сделать запрос

Какието дезайнеры запросов которые непонятно как собирают эти самые очереди. А если есть желание собрать запрос из разных таблиц например что то вроде такого

SELECT продукт.артикул FROM  поставки WHERE поставки.поставщикid LIKE Coca-cola
Подскажите плиз :(

Буду благодарен 

Автор: source777 21.2.2008, 16:51
Цитата(HellanD @  21.2.2008,  09:49 Найти цитируемый пост)
SELECT продукт.артикул FROM  поставки WHERE поставки.поставщикid LIKE Coca-cola
У тебя, что строка в качестве id? smile  
Смотри привыкнешь по-русски поля называть, потом отвыкать придётся, если разберёшься....

P.S. Совет: Установи себе MySQL или MS SQL Server Express.


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