Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / создание реляционной бд / 16 сообщений из 16, страница 1 из 1
18.07.2015, 10:38
    #39010372
NEvOl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
Предметная область такая: существуют разные типы инвентаря. У этих объектов есть общие атрибуты (дата привоза, отдел, стоимость за шт). Так же существует информация уникальная для каждого типа инвентаря, например тип "Мячи" их уникальная информация это диаметр, упругость. Для типа инвентаря скакалка доп. информация это ее длина, и т.д. Типов инвентаря может быть 20-50 шт. У каждого типа может быть 1-5 уникальных атрибутов (чаще 1-3). Достаточно часто требуется информация общая для всех типов инвентаря (дата привоза, отдел, стоимость за шт). Стоит вопрос над тем как это все отобразить в БД. На данный момент известно только 2 типа инвентаря, но известно что будут еще типы.
Реализация:
Имеется идея создать 1 общую таблицу Инвентарь с общими атрибутами:
id, дата привоза, отдел, стоимость за шт, тип инвентаря, id записи в таблице с доп информацией о данном типе инвентаря.
И для каждого типа инвентаря создавать свою таблицу, например.
Мячи:
id, Радиус, Упругость
Скакалка:
id, длина.
И так далее.
Либо есть еще вариант хранить вместо "id записи в таблице с доп информацией о данном типе инвентаря" дополнительные данные в определенном формате типа (json, xml).
Все это в дальнейшем будет отражено на объектную модель данных с помощью EntityFramework. Вопрос какой подход лучше ? Лично я склоняюсь к 1-ом, ибо во втором придется таскать дополнительную информацию из БД которая не всегда нужна ,но при этом увеличится нагрузка на трафик.
P.S. Можете посоветовать другой вариант реализации, указать на ошибки, любая помощь приветствуется ибо это первая моя работа с БД.
...
Рейтинг: 0 / 0
18.07.2015, 11:02
    #39010383
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
NEvOlВопрос какой подход лучше ?
Второй если по дополнительным атрибутам не нужен быстрый поиск и EAV - если нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.07.2015, 11:27
    #39010408
NEvOl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
Dimitry SibiryakovNEvOlВопрос какой подход лучше ?
Второй если по дополнительным атрибутам не нужен быстрый поиск и EAV - если нужен.

А какие аргументы в защиту второго подхода ? Много таблиц с малым числом атрибутов усложняют работу с данными БД ?
...
Рейтинг: 0 / 0
18.07.2015, 11:30
    #39010413
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
NEvOlМного таблиц с малым числом атрибутов усложняют работу с данными БД ?

Да. Ты сам почувствуешь это когда начнёшь писать SQL.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.07.2015, 11:54
    #39010423
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
NEvOlDimitry Sibiryakovпропущено...

Второй если по дополнительным атрибутам не нужен быстрый поиск и EAV - если нужен.

А какие аргументы в защиту второго подхода ?

Единственный кейс- если типы инвентаря у Вас будут часто и непредсказуемо прибавляться. Тогда вторая схема позволит заводить новый тип не правя ни строчки в коде. Все остальное в проигрыше - и производительность, и надежность.
...
Рейтинг: 0 / 0
18.07.2015, 12:57
    #39010437
NEvOl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
а с точки зрения производительности что можете посоветовать ? ибо обращаться к бд будут очень часто (вебсервис).
...
Рейтинг: 0 / 0
18.07.2015, 13:33
    #39010446
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
NEvOl,

У Вас объем данных какой предполагается? что-то мне подсказывает, что записей будет хорошо если десятки тысяч.
...
Рейтинг: 0 / 0
18.07.2015, 14:06
    #39010452
NEvOl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
Кот Матроскин,
думаю не более 5к экземпляров инвентаря.
...
Рейтинг: 0 / 0
18.07.2015, 16:36
    #39010521
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
NEvOl,

Ну тогда вряд ли структура базы будет узким местом производительности.
...
Рейтинг: 0 / 0
18.07.2015, 19:46
    #39010582
NEvOl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
спасибо всем.
...
Рейтинг: 0 / 0
28.07.2015, 20:43
    #39018072
NEvOl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
возник вопрос, а если же записей будет десятки тысяч, то тогда как лучше сделать с точки зрения производительности ?
...
Рейтинг: 0 / 0
28.07.2015, 22:21
    #39018109
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
NEvOlвозник вопрос, а если же записей будет десятки тысяч, то тогда как лучше сделать с точки зрения производительности ?
Лучше использовать систему управления базами данных.
...
Рейтинг: 0 / 0
29.07.2015, 09:21
    #39018265
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
Ни одна из известных моделей данных не накладывает ограничений на число "свойств" в "таблице". Кроме того, в системах управления базами данных есть специальный тип свойства, значение которого определяет подтип сущности и набор присущих ему свойств. Поэтому используйте одну "таблицу" и у Вас не будет проблем ни с "часто и непредсказуемо" прибавляющимися подтипами и их свойствами, ни с производительностью запросов.
...
Рейтинг: 0 / 0
29.07.2015, 09:44
    #39018292
Serguei
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
NEvOlвозник вопрос, а если же записей будет десятки тысяч, то тогда как лучше сделать с точки зрения производительности ?

Рано вы задумались о производительности. Базы данных могут хранить миллионы и милллиарды записей. 10 тысяч - считай что пустая база.
Сначала нужно спроектировать базу "по наитию" , а уже потом думать что там с производительностью (еще до генерации скриптов и программирования). Нужно спроектировать такую структуру, которая бы решала все поставленные задачи.
Сделайте например в ервине.
Иначе вы даже не сможете приступить к проектированию.
...
Рейтинг: 0 / 0
29.07.2015, 09:48
    #39018295
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
По сабжу: это банальнейший ЕАВ.

1.Таблица: Список свойств с настройками.
2.Таблица привязок: "свойство"+"тип инвентаря" (для простоты выбора/поиска не из тысячи свойств а из 1-2 десятков. Пример: фильтры интернет-магазинов по электронике)
3.Таблица фактов: IDинвентаря+IDсвойствa+значение свойства(это неск. полей разных типов. Тип данных всегда известен из п1.)

Даты привоза, стоимость - в документах прихода (банальнейший складской учет)

Подход гибок, очень прост и универсален. Можно навесить на стороннюю систему.

(профит)
...
Рейтинг: 0 / 0
29.07.2015, 12:47
    #39018538
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание реляционной бд
NEvOlа с точки зрения производительности что можете посоветовать ? ибо обращаться к бд будут очень часто (вебсервис).MongoDB :) и храните какой угодно инвентарь в коллекции
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / создание реляционной бд / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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