SQL - REST - хранение данных и извлечение их с использованием дружественных идентификаторов - PullRequest
0 голосов
/ 08 июня 2018

ОБНОВЛЕНИЕ 09/06/2018

Мои модели выглядят так:

public class Activity
{
    public int Id { get; set; }

    public List<Additive> Additives { get; set; }
}

public class Additive
{
    public int Id { get; set; }
    public int ActivityId { get; set; }

    public Activity Activity { get; set; }
}  

Оригинальный вопрос

Я разрабатываю RESTful API и хочу сделать его максимально чистым способом.

В настоящее время я работаю над получением данных.Итак, я получил это

Если я создаю новый ресурс, называемый Activity, и у него есть массив объектов, скажем (жестко, не репрезентативно):

{  
"name": "act1",  
"objects": [  
    { "obj1":"val1" },  
    { "obj2":"val2" }]  
}

Я мог бы добавить илиудалите объекты из моего массива.
Теперь мой вопрос, если я хочу получить к ним доступ с помощью URL-адреса, подобного следующему:

 Api/activity/1/objects/2

Какой правильный способ сообщить MySQL, что этот объект является моим 2-мобъект списка?

Или, может быть, я должен выбрать ВСЕ объекты Act1 на сервере и отфильтровать их, чтобы получить только 2-й.

Ответы [ 2 ]

0 голосов
/ 17 июля 2018

Я наконец нашел ответ, который искал. mysql двухколонный первичный ключ с автоинкрементом

Это функция механизма MyISAM.

Для таблиц MyISAM и BDB вы можете указать AUTO_INCREMENT для вторичного столбцав индексе нескольких столбцов.В этом случае сгенерированное значение для столбца AUTO_INCREMENT рассчитывается как MAX (auto_increment_column) + 1 префикс WHERE = данный префикс.Это полезно, когда вы хотите поместить данные в упорядоченные группы.

В моем случае этот запрос выполняет работу

CREATE TABLE additive (
    id INT NOT NULL AUTO_INCREMENT,
    activity_id INT NOT NULL,
    other_column VARCHAR(30) NOT NULL,
    PRIMARY KEY (activity_id, id)
) ENGINE=MyISAM;
0 голосов
/ 10 июня 2018

Очень важно, чтобы ресурсы в вашем REST-сервисе имели стабильные URL-адреса.Итак, чтобы понять, что такое «второе», вам действительно нужно подумать о том, что значит быть вторым в списке.

Вы что-то упорядочиваете?Если это так, то, вероятно, плохая идея использовать эту структуру, потому что добавление новой записи может изменить порядок, а то, что было «вторым» раньше, может больше не быть в будущем.

Лучшее, что вы можете сделать, это добавитькакой-то новый идентификатор для этих записей, поэтому доступ к конкретному ресурсу с помощью uri всегда будет возвращать этот ресурс (или 404 и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...