powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Одна общая таблица или несколько унаследованных?
12 сообщений из 12, страница 1 из 1
Одна общая таблица или несколько унаследованных?
    #37367398
ares4322
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Есть сущности предметной области, которые имеют отношения общности. То есть у них есть общие для всех и характерные только для себя атрибуты. Необходимо в приложении их выводить в одном списке и позволять работать с ними (CRUD).
Как их лучше хранить в БД? Сделать одну общую таблицу и унаследовать от нее таблицы отдельных сущностей, а обращаться к ним через view или определять на уровне приложения, к какой таблице необходимо обратиться? Или сделать общую таблицу для всех сущностей и пофиг, что будут пустые поля?
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37367514
ZezaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ares4322...То есть у них есть общие...
имхо туплю: парент-чайлд, не ?
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37367520
ares4322
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, отношение общности - это наследование.
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37367847
111222333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тяжело дать единственно правильный ответ - всё зависит от того как будет меняться структура таблиц(ы) и как быстро будет заполняться она.

Если структура атрибутов более-менее стабильная, и кол-во строк не очень велико, то будет лучше хранить всё в одной таблице.

Если же, Вы видите, что структура в будущем будет меняться, или кол-во записей будет "бешено" расти - лучше разбить по нескольким таблицам.
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37368355
ares4322
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему в случае роста появятся проблемы?
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37368437
111222333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ares4322,

1. Касательно структуры:
Мы мыслим категориями: сущности. Наследование это способ оптимизации кода и данных - что лучше делать постфактум ;).
Если проект молодоай, то Вы не можете наверняка предсказать как будет расти какая сущность - и через время Ваша одна таблица всех сущностей превратится в "тут играй, тут не играй, а здесь играй только так" - Начнётся постоянный ребрендинг.


2. Касательно кол-ва строк:
Сделайте самый простой запрос к таблице из 1 000 000 записей, а потом к таблице из 30 000 000 - посмотрите во сколько раз выросло время выполнения запроса.
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37368576
ares4322
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С первым пунктом полностью согласен. Проект молодой и много непоняток. И вообще - преждевременная оптимизация - зло ).
По второму пункту есть ньюанс. При загрузке приложения необходимо вывести все сущности этого типа. И придется запрашивать данные из всех подобных таблиц.
Наверное, я приду к отдельным таблицам под каждый тип сущности. Но реализую это попозже. Пока есть более важные задачи.
Спасибо)
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37368908
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ares4322 ,

Как я понимаю, Вы используете реляционную СУБД ?

Наследование в PostgreSQL

Наследование таблиц (топик в разделе Oracle)

Для объектной СУБД Caché пример с наследованием выглядит так:

///Класс предок
Class del.p1 Extends %Persistent
{
  Index iExtent [ Extent ];
  Property Поле1 As %Integer;
  Property Поле2 As %Date;
  Property Поле3 As %String(MAXLEN = 20);
}

///Класс наследник
Class del.p2 Extends del.p1
{
  ///Коллекция-список чисел;
  Property Поле4 As list Of %TinyInt;
}

Заполняем данными:
insert into del.p1(Поле1,Поле2,Поле3) values (1,current_date,'test1')
insert into del.p2(Поле1,Поле2,Поле3,Поле4) values (2,current_date,'test2',2)

select * from del.p1
Результат:IDПоле1Поле2Поле31127.07.2011test12227.07.2011test2
select * from del.p2
Результат:IDПоле1Поле2Поле3Поле42227.07.2011test22
К данным наследников можно обратиться и из предка, используя служебное поле x__classname :

select * from del.p1 where x__classname [ 'del.p2'
Результат:IDПоле1Поле2Поле32227.07.2011test2
В цепочке наследования может участвовать более двух классов, поддерживается множественное наследование.

Objects, SQL, and the Unified Data Architecture: Inheritance and SQL
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37369097
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1112223332. Касательно кол-ва строк:
Сделайте самый простой запрос к таблице из 1 000 000 записей, а потом к таблице из 30 000 000 - посмотрите во сколько раз выросло время выполнения запроса.Многое зависит от используемой СУБД.
Например, в СУБД Caché существуют специальные индексы ( bitmap /bitslice), которые дают возможность использовать встроенную в неё бизнес-аналитику в режиме реального времени без необходимости создания отдельного хранилища данных.
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37369404
ares4322
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению у нашей компании нет возможности использовать платные СУБД.
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37369453
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ares4322К сожалению у нашей компании нет возможности использовать платные СУБД.Жаль...

А что насчёт бесплатного PostgreSQL?
...
Рейтинг: 0 / 0
Одна общая таблица или несколько унаследованных?
    #37369566
ares4322
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как раз им и пользуемся. Но наследование в нем не доведено до конца, так как ограничения (например, индексы), работают независимо от наследования. Поэтому и пользоваться наследованием для моей задачи особого смысла нет.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Одна общая таблица или несколько унаследованных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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