powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование базы данных
22 сообщений из 47, страница 2 из 2
Проектирование базы данных
    #37459213
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul, то есть база (без всяких "В таблице с типами изделий есть такой тип как "Книга"") в таком виде, как представлена у меня, если ее сделать с 9 таблицами, и полями которые указаны на рисунке будет не правильно спроектированной?
В таблицах таких как например "Статус" "Бумага" "Печать" "Обработка" и "Вид заказа" я хочу поместить статические данные, что бы пользователь мог выбрать уже имеющееся значение в базе. Все остальное подлежит заполнению. Если это не правильно, скажите пожалуйста. Очень хочется сделать все грамотно, но не хватает знаний. А книг именно по проектированию я в сети не встречал.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37459232
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D7naОчень хочется сделать все грамотно, но не хватает знаний. А книг именно по проектированию
я в сети не встречал.

Вон там, повыше, я дал ссылку на описание нормальных форм. Грамотно спроектированной
считается база, которая их без нужды не нарушает.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37459282
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, ткните носом, что неправильно?
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37459371
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D7na,

На первый взгляд последняя схема отторжения не вызывает.

Опять же повторю.
Не пытайтесь сразу спроектировать всю БД.

Лучше в начале иметь логическую схему.
Причем как можно более подробную.
Затем уже на ее основе проектировать БД.

Тут Вам говорили про нормализацию.
В общем случае это "правильный подход".
Но иногда удобнее работать с не нормализированной БД.

Опять же не имея логической схемы трудно сказать "как удобнее".
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37459468
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробую реализовать. На личном опыте, быстрее дойдет что именно не так.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37459561
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okхотя бы потому что, зачем два справочника делать?

Ну, если минимизировать по этому критерию, то можно вообще дойти до Шекспира: мир есть объект, а остальное - свойства.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37459569
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D7naCane Cat Fisher, Пожалуйста помоги. В таблице с типами изделий есть такой тип как "Книга". Если выбран тип "Книга", то поля для заполнения должны содержать в себе помимо всего прочего еще и внутренности и обложку. Соответственно, у внутренностей есть: цветность, количество страниц, тип и размер бумаги и тип печати. А у обложки: Тип печати, цветность, тип и размер бумаги.
Как можно реализовать такое?

Как минимум, двумя способами. Первый - предусмотреть в заказе все эти поля, а заполнять - только заказа для типа "Книга".

Второй - сделать еще одну таблицу, "Атрибуты книги", с этими полями, и связью с заказом 1:1, и добавлять туда запись только для заказов типа "Книга".

Какой из этих способов будет удобнее и правильнее - по имеющейся информации сказать нельзя. Это зависит от того, сколько еще таких особых типов выявится, будут ли они независимы, или наследоваться друг из друга, и какие для них потребуются дополнительные атрибуты, в том числе общие и частные.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37461376
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал такую вот базу. Посмотрите пожалуйста, кто что увидит неправильного?
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37461830
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D7na,

По-русски было понятнее :-(
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37461842
Ejhi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D7na,

Тему не читал, но что-то мне подсказывает, что таблицы Paper и PaperInside можно объединить. Как и TypeOfPaper и TypeOfPaperInside.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37461890
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще просьба автору: на таких схемах, рядом со специфическими справочниками, вроде всех этих PaperInside, приводить несколько строк содержимого, чтобы было сразу понятно, о чем речь.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37461988
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat Fisher, проектировать базу с русскими названиями - бред.
Ejhi - Таблицы Paper и Paper Inside - это бумага обложки и внутренностей соответственно. Так что их объединять никак нельзя.
Cane Cat Fisher, привожу список всего что здесь есть с переводами:

Order - Заказ

Включает в себя:

Id order - Id Заказа
Id customer - Id Заказчика
Order No - Номер заказа
Receipt - Дата принятия заказа
Deadline - Срок сдачи
Due Date - Срок исполнения
Id Designer - Id Дизайнера
Id Status -Id Статуса
Circulations - Тираж
Comments - Комментарии

Customer - Заказчик

Включает в себя:

Id Customer - Id Заказчика
Name - Имя или название компании
E-mail - почта
Phone - Телефон

Status - Статус

Включает в себя:

Id Status - Id Статуса
Status - Статус

Type of order - Тип заказа

Включает в себя:

Id Type of order - Id Типа заказа
Type of order - Тип заказа

Designer - Дизайнеры

Включает в себя:

Id Designer - Id Дизайнеров
Designer name - Имя дизайнера

Options - Опции

Включает в себя:

Order No - Номер заказа
Paper - Бумага
Paper Inside - Внутренности бумага
Id print - Id Типа печати
Id Print Inside - Id Типа печати внутренностей
Id Type of treatment - Id Типа обработки
Id Type of Order - Id Типа заказа
Chroma - Цветность
Chroma Inside - Цветность внутренностей

Paper Inside - Внутренности Бумага

Включает в себя:

Paper Inside - Внутренности Бумага
Inside Sheet Size - Размер Бумаги внутренностей
Inside Size Products - Размер готового продукта
Inside Thickness - Толщина бумаги внутренностей
Id Type of paper inside - Id типа бумаги внутренностей

Type of Paper Inside - Тип бумаги внутренностей

Включает в себя:

Id Type of Paper Inside - Id Типа бумаги внутренностей
Type of Paper Inside - Тип бумаги внутренностей

Print Inside - Тип печати внутренностей

Включает в себя:

Id Print Inside - Id Типа печати внутренностей
Print Inside - Типа печати внутренностей

Print - Тип печати

Включает в себя:

Id Print - Id Типа печати
Print - Тип печати

Paper - Бумага

Включает в себя:

Paper - Бумага
Sheet Size - Размер Бумаги
Size Products - Размер готового продукта
Thickness - Толщина бумаги
Id Type of paper - Id типа бумаги

Type of paper - Тип бумаги

Включает в себя:

Id Type of Paper - Id Типа бумаги
Type of Paper - Тип бумаги

Type of treatment - Тип обработки

Включает в себя:

Id Type of Treatment - Id Типа обработки
Type of Treatment - Тип обработки
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37462375
Ejhi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D7naEjhi - Таблицы Paper и Paper Inside - это бумага обложки и внутренностей соответственно. Так что их объединять никак нельзя.

Paper Inside - Внутренности Бумага
Включает в себя:

Paper Inside - Внутренности Бумага
Inside Sheet Size - Размер Бумаги внутренностей
Inside Size Products - Размер готового продукта
Inside Thickness - Толщина бумаги внутренностей
Id Type of paper inside - Id типа бумаги внутренностей

Paper - Бумага
Включает в себя:

Paper - Бумага
Sheet Size - Размер Бумаги
Size Products - Размер готового продукта
Thickness - Толщина бумаги
Id Type of paper - Id типа бумаги


Можно эти две таблицы заменить одной, добавив поле Inside, в котором будет признак обложка/внутренность.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37462775
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ejhi, ты имеешь ввиду так?:

Paper - Бумага

Включает в себя:

Paper - Бумага
Sheet Size - Размер Бумаги
Size Products - Размер готового продукта
Thickness - Толщина бумаги
Id Type of paper - Id типа бумаги
Paper Inside - Внутренности Бумага
Inside Sheet Size - Размер Бумаги внутренностей
Inside Size Products - Размер готового продукта
Inside Thickness - Толщина бумаги внутренностей
Id Type of paper inside - Id типа бумаги внутренностей
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37462794
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ejhi, просто если выбран тип "Книга", то в заказе присутствует и обложка, и внутренние страницы.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37462812
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D7naесли выбран тип "Книга", то в заказе присутствует и обложка, и внутренние страницы.

А у книги могут быть несколько разных обложек? Или несколько разных внутренних страниц?
Как обрабатываются книги с суперобложкой? А с вложенным широкоформатным постером?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37462851
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, У книги может быть только одна обложка. Внутренности соответственно, по типу бумаги внутри книги не должны отличаться. Про суперобложку и вкладки пишется в комментариях к заказу, если таковые есть. Такие заказы довольно редкие. Не думаю что стоит ради этого что-то менять.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37463294
Ejhi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D7naEjhi, ты имеешь ввиду так?:



Нет, вот так:

Paper - Бумага
Sheet Size - Размер Бумаги
Size Products - Размер готового продукта
Thickness - Толщина бумаги
Id Type of paper - Id типа бумаги
Inside - Признак обложка/внутренность
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37463365
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D7naCane Cat Fisher, проектировать базу с русскими названиями - бред.

Мы не проектируем, мы обсуждаем. А туманный перевод начисто отбивает охоту разбираться. Кстати, Circulations в смысле "тираж" употребляется только в единственном числе, а Due Date - это, скорее, срок какого-то платежа, вроде налогов или процентов.

D7naПро суперобложку и вкладки пишется в комментариях к заказу, если таковые есть. Такие заказы довольно редкие. Не думаю что стоит ради этого что-то менять.

Снабженец, закупающий бумагу для всех заказов на следующий месяц, будет иного мнения. Он захочет запрос "СКАЖИТЕ МНЕ НУЖНОЕ КОЛИЧЕСТВО БУМАГИ, В РАЗРЕЗЕ ПО СОРТАМ БУМАГИ, ПО ВСЕМ ПЛАНИРУЕМЫМ ЗАКАЗАМ", или, проще говоря,

Код: plaintext
select БумагаТип, SUM(БумагаКоличество * Тираж) from Заказы where Невыполнено group by БумагаТип. 

И Вас заставят, вместо SQL-сервера, ежемесячно перечитать глазами все комментарии, и подбить итожек в Экселе. Чтоб в следующий раз проектировали правильно.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37464738
D7na
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ejhi, а если одновременно в книге присутствуют и обложка, и внутренности?
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37464830
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, напрашивается таблица деталей, (один-заказ-много-деталей), и у детали уже будет тип детали, плотность бумаги, и ее количество для одного экземпляра. Отдельной деталью будет обложка из картона, отдельной - внутренние страницы, и, при необходимости, отдельной - плотные цветные вкладыши.
...
Рейтинг: 0 / 0
Проектирование базы данных
    #37479781
AnaceH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему бы не сделать атомарный иерархический справочник, и не запихнуть туда все атомарные значения?(В Вашем случае это типы)
id idOwner name synonym.
1 null Тип бумаги PAPERTYPE
2 1 Тип бумаги А PAPERTYPE_A
3 1 Тип бумаги В PAPERTYPE_B
4 1 Тип бумаги С PAPERTYPE_C
5 null Тип обработки TREATMENTTYPE
6 5 обработка А TREATMENTTYPE_A
итд.
Чтобы отобразить нужную ветку на интерфейсе используем процедуру, которая принимает синоним нужного справочника, например PAPERTYPE. В процедуре сначала получаем айдишник записи с синонимом PAPERTYPE (1), а потом выводим записи с idOwner = 1.
Просто если у Вас в базе не десяток сущностей, а несколько сотен, и в среднем каждая вторая сущность имеет тип\статус, то иметь лишнюю сотню однотипных таблиц как-то не весело. К тому же данный подход позволяет не хардкодить цифирьки или имена, которые могут в любой момент поменяться.
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование базы данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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