Как стать автором
Обновить

Комментарии 2

Слишком простой пример.

В примере в одной таблице и отделы и сотрудники и ЗП и ФИО в одном поле слитно хранится.

В реальной жизни хранить в одной таблице разные сущности в общем случае не "православно" - есть же нормализации.

Интересно насколько быстрее и проще все это будет для примера, где есть несколько связанных сущностей?

Да, действительно, хранить разные сущности в одной таблице - плохой подход.

Но на самом деле код не сильно усложнится, если добавить несколько сущностей и делать "join" этих данных.

Один из вариантов примерной реализации:

-- в роли storage:
local employee = box.schema.space.create('employee', {if_not_exists = true}
employee:format(...)
-- добавляем новые спейсы, форматы и индексы
local department = box.schema.space.create('department', {if_not_exists = true}
department:format(...)

---------------------------------
-- в роле api:
local employees, err = crud.select('employee', {{'>=', 'salary', salary}}) 

-- получаем список отделов по названиям
local department = {}
for _, x in ipairs(employees) do
    if department[x.department] ~= nil then 
    	local dep, err = crud.get('department', department)
    	department[dep.name] = dep
    end
end

-- возвращаем employee join department 
employees = fun.iter(employees):map(function(x) 
    return {
        employee_id = x.employee_id, 
        ...
        salary = x.salary,
      	department_data = department[x.department],
    }
end):totable()
Зарегистрируйтесь на Хабре, чтобы оставить комментарий