Гость
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Категории или одна таблица / 25 сообщений из 44, страница 1 из 2
28.04.2020, 22:58
    #39952637
Albert Oreol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Имеется около 6-10 таблиц вида:
Код: plsql
1.
2.
3.
4.
5.
6.
CREATE TABLE `tablet_**` (
  `id` mediumint(8) UNSIGNED NOT NULL,
  `id` tinyint(3) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- UNIQUE KEY `_UNIQUE` (`id`,`id2`),



Всё же думаю переделать в одну таблицу, но с уже добавлением, скажем так, поля с категорией:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE `tablet` (
  `id` mediumint(8) UNSIGNED NOT NULL,
  `cat` varchar(12) NOT NULL,
  `id2` tinyint(3) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- UNIQUE KEY `_UNIQUE` (`id`,`cat`,`id2`),



Для чего таблица - записать и выборка всех `id2` по `id`. Они никак не пересекаются и не связаны, одинаковые данные, просто для различных вещей. Во втором варианте они все будут в одном месте, но к запросу добавится еще и категория.

Стоит ли так переделать таблицы? Не слишком сильно это скажется на время выборки? В каждой разное количество данных, но в общей сумме где-то 35+ тысяч записей.
...
Рейтинг: 0 / 0
28.04.2020, 23:23
    #39952645
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Albert Oreol
Стоит ли так переделать таблицы?
Нет, не стоит.
Однажды вам понадобится сделать разное количество поле/типы данных и придется городить костыли.
А профита никакого не видно.
...
Рейтинг: 0 / 0
29.04.2020, 05:11
    #39952670
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Ищите по форуму на тему 'универсальный справочник'

В двух словах: плюсов не видно. Да, будет в базе на несколько десятков таблиц меньше, но чем больше таблиц будет слито тем больше между ними будет разницы (разные поля, разные права)

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

Дальше - рано или поздно возникнет необходимость работать с разными сущностями (типа старых таблиц)
Вы налепите вьюх типа select * from mytable where cat=`mycat` и экономии на числе объектов не будет от слова совсем.

овчинка выделки не стоит.
...
Рейтинг: 0 / 0
29.04.2020, 11:10
    #39952750
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Albert Oreol,

я против т.н. универсального справочника. Но надо посмотреть на сущности. Что именно в таблицах? Бывает есть смысл, когда запрос легче делать по одной таблице нежели по 6-10. Озвучьте конкретику. Смущает, что у Вас полей в таблицах мало. Поэтому вряд ли это справочники. И есть вероятность, что они одинаковой сущности.
...
Рейтинг: 0 / 0
04.01.2021, 14:19
    #40033383
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
SERG1257
Ищите по форуму на тему 'универсальный справочник'

В двух словах: плюсов не видно. Да, будет в базе на несколько десятков таблиц меньше, но чем больше таблиц будет слито тем больше между ними будет разницы (разные поля, разные права)

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

Дальше - рано или поздно возникнет необходимость работать с разными сущностями (типа старых таблиц)
Вы налепите вьюх типа select * from mytable where cat=`mycat` и экономии на числе объектов не будет от слова совсем.

овчинка выделки не стоит.
Есть справочников много и если все они заведома одинаковые по структуре (обычно это минисправочники ключ+значение), то вполне их можно сделать на базе 1-й таблицы. Написать единый код, который будет работать хоть с тыщей минисправочников, в т.ч. с теми которых еще нет в ТЗ.
Для создания нового (мини)справочника не нужны будут DDL-команды и админские БД-права.
Это полезно для непрерывно эволюционирующих систем класса ERP/CRM и е-магазинных витрин.

Если вдруг понадобится добавить в него новые поля... Ну чтож. Ничто не мешает сделать ему полноценную отдельную таблицу.

зы: Интересно, на каком нибудь OZON-е фильтры слева это отдельные таблички ? Чо серьёзна ?????
...
Рейтинг: 0 / 0
04.01.2021, 17:30
    #40033421
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
L_argoЭто полезно для непрерывно эволюционирующих систем класса ERP/CRM и е-магазинных витринА для остальных это выглядит как тюнингованый жигуль: заниженный, с огромным антикрылом и маленьким рулем.
...
Рейтинг: 0 / 0
04.01.2021, 18:23
    #40033436
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
L_argo,

больше всего не люблю такие таблицы из-за того, что во всех таблицах, которые на них ссылаются, приходится хранить не только ссылку на элемент справочник, но и код этого справочника (хотя бы в вычисляемом постоянном поле). Иначе foreign key не сделать.
...
Рейтинг: 0 / 0
04.01.2021, 18:50
    #40033447
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
KreatorXXI
надо посмотреть на сущности. Что именно в таблицах?

+
и какие могут быть перспективы...
А пока похоже на вопрос типа если пропеллер крутить быстро- взлетит или не взлетит?...
- если пропеллер это нож мясорубки, прикрученной к столу - то не взлетит...
...
Рейтинг: 0 / 0
04.01.2021, 19:48
    #40033461
harvest6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Albert OreolОни никак не пересекаются и не связаны, одинаковые данные, просто для различных вещей.

Получается одна сущность с одним и тем же набором атрибутов?
Тогда, целесообразней хранить их в одной таблице. Категории - в другой. Итого две таблицы.
...
Рейтинг: 0 / 0
04.01.2021, 22:08
    #40033481
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Albert Oreol
Стоит ли так переделать таблицы?

Зависит от того, что будет дальше. Если через месяц выбросишь эту поделку и забудешь - да, стоит. Если не выбросишь, но хочется через три года получать матюки на голову того, кто это придумал - тоже стоит.
...
Рейтинг: 0 / 0
05.01.2021, 11:25
    #40033568
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
ptr128
L_argo,

больше всего не люблю такие таблицы из-за того, что во всех таблицах, которые на них ссылаются, приходится хранить не только ссылку на элемент справочник, но и код этого справочника (хотя бы в вычисляемом постоянном поле). Иначе foreign key не сделать.
Если у мультисправочника сделать сквозное ключ-поле, то необязательно.

Ниодна ERP-система foreign key не использует. За ненадобностью.
...
Рейтинг: 0 / 0
05.01.2021, 12:00
    #40033573
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
L_argo
Если у мультисправочника сделать сквозное ключ-поле, то необязательно.

Какой смысл в таком контроле целостности, если ссылка может указывать на запись любой категории, а не только нужной?

L_argo
Ниодна

Почитайте тут в разделе "Апелляция к очевидности, ложная авторитетность".
Если Вы чего-то не знаете, то из этого вовсе не следует, что этого не существует )))

Иными словами, трехуровневые системы, расчитанные на работу с более чем одним сервером баз данных одновременно, вынужденны контролировать ссылочную целостность на уровне сервера приложений, так как средствами БД контролировать ссылочную целостность между разными серверами баз данных проблематично. То есть, foreign key все равно существуют и активно используются, только не на уровне БД, а на уровне сервера приложений.
...
Рейтинг: 0 / 0
05.01.2021, 14:06
    #40033604
Serguei
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
L_argo
Ниодна ERP-система foreign key не использует. За ненадобностью.


Ишь ты.... вот ведь... :)

Откуда такие категоричные выводы? Если вы лично не используете foreign key , это не означает, что никто не использует.
Можете назвать причины по которым считаете, что foreign key это ненужный рудимент?
...
Рейтинг: 0 / 0
05.01.2021, 14:54
    #40033619
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
авторТо есть, foreign key все равно существуют и активно используются, только не на уровне БД, а на уровне сервера приложений . Именно так. Проверка на уровне БД неудобна или не нужна. В ряде случаев невозможна.

Если чо, изначально мой пост был именно про СЦ на уровне БД .
Разумеется, что подобные проверки делают, но не с помощью бд-констрайнт foreign key.

Иногда foreign key нарушен умышленно, н-р если =0 принято в системе как отсутствие ссылки.

Что-то про OZON никто ничего не ответил... :-)
...
Рейтинг: 0 / 0
05.01.2021, 14:56
    #40033621
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Serguei
Откуда такие категоричные выводы? Если вы лично не используете foreign key , это не означает, что никто не использует. Можете назвать причины по которым считаете, что foreign key это ненужный рудимент?

Человека просто несёт. Если мне не изменяет память, в прошлый раз я ткнул его носом в кучу ERP, которые используют FK. Результат ожидаемый - ушёл в тень, а через какое-то время вылезает и несёт ту же самую пургу. Было бы странно ожидать другой результат.
...
Рейтинг: 0 / 0
05.01.2021, 15:00
    #40033624
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
softwarer,
в реальности, действительно есть ERP, которые не используют foreign key на уровне БД. Но тогда они используют foreign key на уровне сервера приложений. Причины я описал выше. 22258865
...
Рейтинг: 0 / 0
05.01.2021, 15:04
    #40033628
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
L_argo
Разумеется, что подобные проверки делают, но не с помощью бд-констрайнт foreign key.

Следовательно вопрос остается открытым:
ptr128
L_argo
Если у мультисправочника сделать сквозное ключ-поле, то необязательно.

Какой смысл в таком контроле целостности, если ссылка может указывать на запись любой категории, а не только нужной?
...
Рейтинг: 0 / 0
05.01.2021, 15:09
    #40033633
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
ptr128
softwarer,
в реальности, действительно есть ERP, которые не используют foreign key на уровне БД.

Вы видите разницу между утверждениями "Есть ERP, которые не используют" и "Ни одна ERP не использует"?
...
Рейтинг: 0 / 0
05.01.2021, 15:12
    #40033635
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Какой смысл в таком контроле целостности, если ссылка может указывать на запись любой категории, а не только нужной?Если ссылка указывает на неверную запись из правильной категории (н-р яблоки в овощах) это тоже ошибка. И чо ?

Ссылки на неверные категории достаточно легко отловить и исправить с помощью обычного SQL.

При наличии же жесткой БД-шной СЦ большая заливка данных может вообще зафейлиться целиком. А на поиск причин может уйти гора времени.
...
Рейтинг: 0 / 0
05.01.2021, 15:15
    #40033637
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Вы видите разницу между утверждениями "Есть ERP, которые не используют" и "Ни одна ERP не использует"? Возможно такие ERP все таки есть. Но их доля на рынке исчезающе мала.
Настолько мала, что нет смысла их упоминать, как значимые.
...
Рейтинг: 0 / 0
05.01.2021, 16:09
    #40033651
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
softwarer
Вы видите разницу между утверждениями "Есть ERP, которые не используют" и "Ни одна ERP не использует"?

Вижу и писал об этом 22258865
...
Рейтинг: 0 / 0
05.01.2021, 16:12
    #40033652
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
L_argo
Какой смысл в таком контроле целостности, если ссылка может указывать на запись любой категории, а не только нужной?
Если ссылка указывает на неверную запись из правильной категории (н-р яблоки в овощах) это тоже ошибка. И чо ?

Ничего. Целостность БД не нарушена и никаких трудно диагностируемых эффектов в запросах, использующих эту таблицу не возникнет.

L_argo

Ссылки на неверные категории достаточно легко отловить и исправить с помощью обычного SQL.

Но сначала покувыркавшись часик-другой, разбираясь почему в двух отчетах итоги разные. Спасибо, не надо )
...
Рейтинг: 0 / 0
06.01.2021, 07:53
    #40033760
Serguei
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
ptr128
softwarer,
в реальности, действительно есть ERP, которые не используют foreign key на уровне БД. Но тогда они используют foreign key на уровне сервера приложений. Причины я описал выше. 22258865


Зачем такая категоричность? Данное утверждение было бы верно, если бы вы добавили "из числа известных лично мне" ;)
...
Рейтинг: 0 / 0
06.01.2021, 10:12
    #40033768
ptr128
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
Serguei,

Ваше заявление не было бы пустым звоном, если бы Вы привели пример хотя бы одной ERP, не контролирующей ссылочную целостность ни на уровне БД, ни на уровне приложения )))
...
Рейтинг: 0 / 0
08.01.2021, 13:33
    #40034139
Serguei
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Категории или одна таблица
ptr128
Ваше заявление не было бы пустым звоном, если бы Вы привели пример хотя бы одной ERP, не контролирующей ссылочную целостность ни на уровне БД, ни на уровне приложения )))


По-моему, вы уже потеряли связь с реальностью )
Я никогда не утверждал (и даже не мог такую глупость утверждать), что существуют системы, которые никак не контролируют целостность данных.

Моя система контролирует целостность данных на уровне БД и на уровне сервера приложений.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Категории или одна таблица / 25 сообщений из 44, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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