|
|
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
> БД для плохо формализованных задач У вас нормально формализуемая задача. Вспомните, чему вас учили в школе. Биология была? Значит, имеете представление о классификации живых организмов, их фазах развития и пищевых цепочках, т. е. основных фрагментах задачи. Единственная сложность для вас - то, что элементы пищевой цепочки могут быть не только искусственными, но и естественными. Мыши - удав. Мотыль - рыба. Задача, может, и сложновата для начинающего, зато с предметной областью все достаточно просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2013, 20:09 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
The_Immortal, Тебе надо в первую очередь прочитать про отношение подкатегории, оно же реляционное наследование, и активно его применять тут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 06:57 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
Сделайте две таблицы. В первую включите характеристики товаров, которые будут одинаковыми для большинства товаров (бренд, категория, упаковка, вес (?), цена и т.д..). Во вторую, - уникальные характеристики товара. Т.е. вторая таблица будет содержать три поля: ключ (для связи с первой таблицей), наименование характеристики (например: возраст собаки, "порода", и т.п.), третья - значение характеристики (щенок, молодая, беременная, старая, мелкая, крупная, средняя, гигант, универсальный и т.п.). Конечно, нужна будет таблица-справочник, которая содержит наименование характеристики и значение характеристики. Запросы делать убибикаешься, но можно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 21:04 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
Ребят, у меня пока такой быстрый и, наверное, глупый вопрос :-) Пусть по-прежнему имеется связь: Категория и Брэнд. У меня эта связь была отражена вот таким образом: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 18:56 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
Знакомый, взглянув на эту связь, поинтересовался. А к чему, собственно, разделять Брэнд и Категорию? Почему бы название Брэнда не включить в Категорию? (см. скриншот). На этот вопрос я завис... Попытался объяснить, что отдельные сущности должны всегда как-то обособляться. - Ну а чисто технически в чем тут преимущество? Ведь даже запрос на выборку брэндов в той или иной категории будет проще: не надо связывать таблицы. - спрашивает он. На это я ответил, что, наверное, все дело в экономии объема данных. Ведь в таком случае, у нас будет дублироваться один и тот же бренд (название брэнда - набор символов), когда разные категории будут включать один и тот же брэнд. В случае связанных таблиц мы будем иметь дело с числовым значением (Id), сэкономив при этом. Его ответ явно не удовлетворил. Он сказал, что по его мнению, разделять таблицы имеет тогда, когда у таблиц достаточное число (правда, какое именно число - он не уточнил) атрибутов - вот тогда экономия будет ощутима. Но не в моем случае. Вот собственно вопрос: а как быть в таких случаях? :-) Если я прав, то почему? В общем, вопрос об основах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 18:56 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
The_Immortal, А какое отношение вообще имеет бренд к категории? На мой взгляд это отдельные, независимые свойства товара. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 21:29 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
miksoft, хм... Да, согласен. Учту :-) Но на самом деле не в этом вопрос был. Я спрашивал в общем. Какой же пример привести... А, вот. Тупо: Работник Id Фамилия ДолжностьId1 Иванов 12 Петров 13 Сидоров 2... ... ... Должность Id НазваниеДолжности1 психиатр2 психолог... ... Гипотетически предположим подобную структуру (понятно, что должность без оклада и прочего не бывает, но все же). В таком случае, имеет ли смысл выделять Должности в отдельную таблицу? Если да, то почему ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 22:15 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
The_Immortal, У сущности "работник" и сущности "должность" явно слишком разные атрибуты (свойства), чтобы хранить их в одной таблице. По крайней мере, если не увлекаться EAV-ами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 22:23 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
miksoft , а если, скажем, у второй таблицы (от которой идет связь "1 ко многим" помимо Id всего лишь один атрибут. Названием, скажем. Как в таком случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 22:36 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
The_ImmortalВ таком случае, имеет ли смысл выделять Должности в отдельную таблицу? Если да, то почему ?Если в должности работника более нет ничего, кроме её названия, то можете не выделять. Правда, ситуация слишком гипотетическая. Как правило, должность подразумевает дополнительные атрибуты, которые закреплены именно за должностью, а не за работником. Но самое главное, удаляя(увольняя) работника, вы также теряете информацию не только о его должности, но, возможно, о должности, как таковой, вообще, если эту должность имел только этот работник. Это классическая аномалия удаления, о которой пишут практически в любом учебнике по базам данных. Смысл в том, что должность независима от человека, она может существовать, а работника её занимающий отсутствовать. И это ещё не упоминается работа по совместительству, история должностей(карьера) работника, штатное расписания и несть других причин, по каких должность выделяется в отдельную сущность. Хотя аномалия удаления уже более чем веская причина для такого выделения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 22:47 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
ChA , большое спасибо за разъяснения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 22:54 |
|
||
|
Каталог кормов для животных
|
|||
|---|---|---|---|
|
#18+
Итак, another try :-) Задача: Необходимо разработать информационный ресурс, который будет предоставлять каталог товаров для разных видов животных. Необходимо отображать категории товаров (сухие корма, консервы и т.д.); брэнды, относящиеся к конкретным категориям; приводить детализированную информацию по конкретному товару. Выводить по нему имеющиеся "экземпляры" (упаковки) с соответствующими ценами и весом, а также уточнять их наличие. Осуществлять фильтрацию товаров по определенным критериям. Заказ/резервирование товаров реализовывать не нужно. Данный ресурс имеет одинаковый публичный доступ для всех посетителей, т.о. у пользователя отсутствует "личный кабинет". Описание схемы БД: Товар ( Product ): список товаров. Каждый товар относится: - к определенному виду животного (табл. AnimalType ); - к конкретной категории ( Product.ProductCategoryID ); - в случае если вид животного "для собак", то к типу породы ( Product.BreedTypeID ). Товар также имеет: - полное описание ( Product.DecriptionFull ); - краткое описание ( Product.DescriptionShort ); - состав ( Product.Composition ); - различные изображения ( Product.Image1 , ...), представляющие данный товар. В случае, если один и тот же товар имеет разные упаковки с разным оформлением, то изображение будет выбираться для одной упаковки и представлять всю "линейку" данного товара. У конкретного товара могут быть разные "экземпляры" (упаковки) - табл. ProductInstance . Для конкретного товара может быть приведен так называемый анализ состава - табл. ProductAnalysis . Анализ корма ( ProductAnalysis ): каждый корм содержит определенное содержание белка, жира, клетчатки и прочего ( ProductAnalysis.Title ). Значения того или иного параметра измеряются в %, мг/кг ( ProductAnalysis.Value ). Экземпляр товара ( ProductInstance ): один и тот же товар (корм, к примеру) может иметь разную фасовку. Соответственно, выделяю вес ( ProductInstance.Weight ) этого "экземпляра" (упаковки), его стоимость ( ProductInstance.Price ) и количество ( ProductInstance.Quantity ) в отдельную таблицу. Вид животного ( AnimalType ): список всех видов животных. Прим.: "для собак", "для кошек" и т.д. ( AnimalType.Title ). Категория ( ProductCategory ): список всех категорий. Прим.: "сухой корм", "консервы" и т.д. ( ProductCategory.Title ). Каждая категория предназначена для определенного вида животного (ProductCategory.AnimalTypeID). Брэнд ( ProductBrand ): список всех брэндов. Прим.: "Acana", "Eukanuba" и т.д. ( ProductBrand.Title ). Тип породы ( BreedType ): включает: - величину/размер породы. Прим.: "мелкая порода", "средняя порода", "крупная порода" ( BreedType.Size ); - возраст питомца. Прим.: "щенок", "взрослая", "старая" ( BreedType.Age ). На основании этих 2ух параметров и будет происходить фильтрация кормов, т.к. это основные характеристики корма. Примеры кормов: - "корм для щенков мелких пород"; - "корм для щенков крупных пород"; - "корм для взрослых собак мелких пород"; - "корм для щенков собак всех пород"; - и т.д. Вопросы: 1. Смущает связь "1 к 1": ProductAnalysis и Product . Выделил ProductAnalysis в отдельную таблицу для удобства восприятия. Но, наверное, имеет смысл все оттуда включить в Product , да? 2. С таблицей AnimalType тоже не уверен. Изначально она у меня сидела непосредственно в Product , но мне показалось, что это как-то излишне. Теперь решил ее присобачить к ProductCategory , аргументировав это тем, что "каждая категория предназначена для определенного вида животного". Не знаю насколько это правильно. К примеру, "для собак" и "для кошек" содержат совершенно идентичный список категорий. 3. Желаю очень сильно критики по остальному :-) Благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2013, 02:03 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38145346&tid=1541372]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 379ms |

| 0 / 0 |
