Size: a a a

2016 December 18

NK

ID:412143 in Ruby School .us
можно хранить свойства одного объекта в разных таблицах, но это, имхо, нужно только в больших и сложных системах, где у разных объектов есть одни и те же свойства
источник

NK

ID:412143 in Ruby School .us
я с таким сталкивался на авиапроизводстве
источник

R

Ro in Ruby School .us
не обязательно, обычно 1 объект - не 1 таблица, это только упрощенный вариант
источник

R

Ro in Ruby School .us
есть есть has_one, has_many - то это минимум 2
источник

NK

ID:412143 in Ruby School .us
правильно ли я понимаю, что если мы создали сущность (например, Clients, или Barbers), то данные, которые относятся к экземплярам этой сущности могут храниться в разных таблицах?
источник

R

Ro in Ruby School .us
скажем так: простые свойства (имя, телефон) будут храниться в 1 таблице. Как только ты делаешь сложные свойства - например барбер работает в каком-то барбершопе. То вот инфа о барбершопе хранится в другой таблице.
источник

R

Ro in Ruby School .us
т.е. ты говоришь barber.barbershop.address
источник

R

Ro in Ruby School .us
получается, что обращаешься к barber, а адрес барбершопа считывается из другой таблицы
источник

R

Ro in Ruby School .us
но бывает и т.н. денормализация - когда данные о двух сущностях хранятся в 1 таблице
источник

R

Ro in Ruby School .us
обычно эти сущности схожи
источник

NK

ID:412143 in Ruby School .us
а что мешает запилить одну большую таблицу и хранить там вообще всё, что относится к сущности barbers?
источник

NK

ID:412143 in Ruby School .us
или если надо что-то добавить, то делать миграцию с изменением количества столбцов?
источник

R

Ro in Ruby School .us
теоретически такое возможно
источник

R

Ro in Ruby School .us
на практике такое не делают, т.к. чем больше таблица - тем меньше скорость ее чтения
источник

R

Ro in Ruby School .us
ну и мешать все в одно - как-то геморно, потом не поймешь что к чему относится
источник

NK

ID:412143 in Ruby School .us
мне кажется наоборот, можно запутаться в выискивании связей между таблицами и определении, каким sql-запросом что вытягивается
источник

R

Ro in Ruby School .us
еще подумай об индексах - индексация помогает быстрее искать по таблице. Но ты за это платишь обычно местом на диске (и/или в памяти). Чем больше индексировано полей в 1 таблице, тем больше требуется памяти на обработку данных в этой таблице. Тут уже как бы вопрос ограничений БД
источник

NK

ID:412143 in Ruby School .us
походу дела, надо брать книгу по теории баз данных
источник

NK

ID:412143 in Ruby School .us
и курить е
ё
источник

NK

ID:412143 in Ruby School .us
её
источник