|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
Сразу предупреждаю, я полный нуб, объясняю как могу. Например имеется абстрактное устройство, будем называть классом Device и задачи для него: Task1, Task2, Task3. Для конкеретизации, опишу все в java кодах. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Далее, для каждого девайса назначаются определенное количество тасков, как с различающийся классов, так и с одинаковых. Напр. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Я создал таблицу Device со всеми нужными полями, а вот как все это правильно сохранить в базу данных - пока не знаю. Предположу что - нужно создавать еще таблицы: Task1, Task2, Task3 ? - (при сохранении) в эти определенные таблицы заносить таски, Device.id которых соотвутсвует Task.device_id и порядок их выполнения ? - (при загрузке) делать выборку со всех таблиц Device, Task1, Task2, Task3 - и проверять из каждого таска, равен ли Device.id = Task1.device_id AND Device.id = Task2.device_id AND Device.id = Task3.device_id ? Во первых, правильное ли предположение, правильная ли организация структуры базы данных или ....? Если да, как правильно делать оптимизированную выборку с нескольких таблиц, напишите sql запрос, если можно.. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 18:51 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilw, а если завтра появятся такси 5,6,7 , а послезавтра ещё и 8,9,10- будешь ещё таблиц клепать? А как потом планируешь выгребать данные из них? Логичнее было бы сделать на все таски одну таблицу, в которой будут поля id-девайса, id-таска и прочие атрибуты именно таска. На экшины внутри таска сделать другую таблицу (id-таска, id-экшина, прочая атрибутика экшинов). Сами девайсы - в третьей таблице.... Тогда всё красиво ляжет на линейные запросы с (внешними) джойнами . Модератор: Тема перенесена из форума "SQLite". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 19:05 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
Спасибо, надо все обмозговать. А вы, примерчик, если не трудно можете набросать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 19:13 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
Ищите на этом форуме по слову "наследование" Варианты решения для двух тасков С одной общей таблицей (таски скорее общие, чем разные) С двумя таблицами (таски скорее разные, чем общие) - ваш вариант С тремя таблицами (с одним родителем) - некий гибридный вариант Кроме того есть бесструктурные варианты EAV - структура базы понятна только приложению и CLOB (xml или JSON) - каждый таск хранится в виде объекта целиком Каждый вариант имеет свои достоинства и недостатки. ilwА вы, примерчик, если не трудно можете набросать? Здесь же поиск по слову EAV ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 19:34 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
Спасибо, из этого https://m.habrahabr.ru/post/28023/ мне что-то подойдёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 21:51 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilw Спасибо, из этого https://m.habrahabr.ru/post/28023/ мне что-то подойдёт? Те же яйца, вид сбоку. Строковые параметры для объектов = CLOB (xml или JSON) Параметры всех объектов в одной таблице = С одной общей таблицей Каждый объект в своей таблице = С двумя таблицами Параметры объектов в отдельной таблице = EAV Каждый параметр объектов в отдельной таблице = С тремя таблицами Чтобы выбрать оптимальный способ нужно знать вы будете свою базу использовать (сейчас и потом). Достань все свойства у одного объекта (таски у дивайса) - запрос тривиальный и ВСЕ структуры его выполняют хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 22:30 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
2ТС: Не вздумайте хранить (числа, даты) параметры в строчных полях. Это приведет к катастрофическим тормозам. Сделайте для всех типов (целое, флоат, строка, дата, булеан пр.) отдельные поля. Тогда по ним можно и джоины делать и сложный поиск. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2018, 20:54 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilw Я создал таблицу Device со всеми нужными полями, а вот как все это правильно сохранить в базу данных - пока не знаю. Так Hibernate же, если уж ты Java-парень... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 11:58 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilw Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Ну моветон же, даже в Java. В СУБД это называется нарушение 1-ой нормальной формы... в Java не знаю как называется, наверное, просто идиотизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 12:00 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
Я все ещё не определился окончательно, каким способом воспользоваться, сейчас сижу, трачу время изучая базы данных уже основательно. Например из этой статьи https://m.habrahabr.ru/post/28023/, я не понял как должны выглядеть таблицы "Параметры всех объектов в одной таблице", и как они отличаются от "Параметры объектов в отдельной таблице"? > Ну моветон же, даже в Java. Объяснись ! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 12:07 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilwЯ все ещё не определился окончательно, каким способом воспользоваться, сейчас сижу, трачу время изучая базы данных уже основательно. Например из этой статьи https://m.habrahabr.ru/post/28023/, я не понял как должны выглядеть таблицы "Параметры всех объектов в одной таблице", и как они отличаются от "Параметры объектов в отдельной таблице"? > Ну моветон же, даже в Java. Объяснись ! В том смысле, что есть как минимум массивы. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 14:12 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
Это ты к чему конкретно процитировал, выделить необходимую часть текста не судьба? Есть массивы и дальше что? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 14:42 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
Наверное один с другим считает , что это int anotherAction2; int anotherAction3; однотипные даные, да я просто в спешке написал инты и экшены , чтобы подчеркнуть, что классы тасков абсолютно разные, только и всего. Сами классы тасков, находятся лишь в зачаточном состоянии и абсолютно далеки от реальных. А пример дан, лишь для показания, что ОНИ СУЩЕСТВЕННО отличаются, большего знать и не надо, для того чтобы ответить на мой вопрос. На , читай как : вместо int anotherAction2; int anotherAction2; int anotherAction3; float somedigit; String path; boolean condition; int flags; Давай, умник один с другим - делай нормализацию и пихай в массивы разнородные типы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 14:55 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilw, как бы очень странно, что ты даёшь абы какие данные и хочешь услышать совет по проектированию БД под них.... типа " у меня тут есть база данных, в ней хранятся таблицы, разные, у каждой таблицы там разные атрибуты, у них разные типы данных могут быть, а как мне это лучше все организовать , в какую структуру?" что же тебе можно ответить на такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 00:39 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilw. Сами классы тасков, находятся лишь в зачаточном состоянии и абсолютно далеки от реальных. А пример дан, лишь для показания, что ОНИ СУЩЕСТВЕННО отличаются, большего знать и не надо, . ну храни тогда все в СУЩЕСТВЕННО разных таблицах. чо... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 00:42 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
MasterZiv, Товарищ, давай не разводи демогогию тут, все объяснено нормально, просто кое-кто из умников невнимателен, либо не в том направлении думает. А кое-кто нормально воспринял инфу: С двумя таблицами (таски скорее разные, чем общие) - ваш вариант MasterZiv, [Quote] ну храни тогда все в СУЩЕСТВЕННО разных таблицах. чо... [Quote] Чэрэз плэчо, давай досвиданья! Иди перечитывай мой изначальный пост ещё раз, дятел. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 11:47 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilw я не понял как должны выглядеть таблицы "Параметры всех объектов в одной таблице"Все таски со всеми свойствами всех типов хранятся в одной таблице. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
естественно для такой структуры будут дыры (в некоторых полях будут null) я не знаю как SQLite их хранит, возможно с этим можно боротся Зато такая структура самая простая и быстрая особенно для тяжелых запросов типа: дай мне список дивайсов у которых множества свойств пересекается. (Задания стартовали с разницей не более 5 минут, причем первое было успешным, а второе обломалось) Главный минус такой структуры - она принципиально ограничена количеством столбцов поэтому, чаще всего применяют гибридный вариант (с тремя таблицами = Каждый параметр объектов в отдельной таблице) вынося в общую таблицу не все, а только некоторые свойства или свойства для индексирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 17:05 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
Главный минус такой структуры....Главный ее минус в том, что она полностью адово-бредовая. :) На каждый тип объекта отдельную таблицу ???????? На каждый экшн отдельное поле ??? Это ад. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 18:32 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
ilw, По сути, из того как будут использовать данные увидел только "для каждого девайса назначаются определенное количество тасков, как с различающийся классов, так и с одинаковых" Таблица задачи (код задачи, тип) Таблица действий по задачам(код задачи, название действия, приоритет действия внутри задачи) Таблица устройства (код устройства,....) Таблица применения задач в устройствах(код записи, код устройства, код задачи, приоритет) Еще возможно пригодится таблица параметров по задачам Но для этого лучше две таблицы. Одной определить какие параметры бывают у каждой задачи вообще, без привязки к устройствам. а в другой хранить значения параметров по каждой задаче для каждого устройства. Совет, более точно определитесь с сущностями и как Вы будете работать с этими данными. От этого зависит и реализация структуры в базе и запросы на изменения и выборку. Вам правильно указали, без этого нормальные советы в проектировании базы Вы не получите. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 22:11 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 22:56 |
|
Помогите правильно организовать структуру и выборку.
|
|||
---|---|---|---|
#18+
SERG1257естественно для такой структуры будут дыры (в некоторых полях будут null) я не знаю как SQLite их хранит, возможно с этим можно боротся Зато такая структура самая простая и быстрая особенно для тяжелых запросов типа: дай мне список дивайсов у которых множества свойств пересекается. (Задания стартовали с разницей не более 5 минут, причем первое было успешным, а второе обломалось) Главный минус такой структуры - она принципиально ограничена количеством столбцов поэтому, чаще всего применяют гибридный вариант (с тремя таблицами = Каждый параметр объектов в отдельной таблице) вынося в общую таблицу не все, а только некоторые свойства или свойства для индексирования. Вам не сюда, вам в NoSQL, т.к. вы не можете построить реляционную модель ваших данных. Например MongoDB. Храните как хотите и что хотите. Иногда по этой свалке данных можно делать запросы :-) Когда вы "увидите" структуру данных, тогда сможете мигрировать в СУРБД, если захотите. NoSQL затягивает :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2018, 05:20 |
|
|
start [/forum/topic.php?fid=32&msg=39584420&tid=1540088]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 238ms |
total: | 493ms |
0 / 0 |