Что лучший способ состоит в том, чтобы сохранить заголовок в базе данных, чтобы позволить сортировать без продвижения,

Попробуйте это,

// Define Schemas
var schema = buildSchema(`
    type Query {
        getUser: User
        getSocialMedia: SOCIALMEDIA
    }
    type User {
        firstName: String
        lastName: String
        email: String
        socialMedia: SOCIALMEDIA
    }
    type SOCIALMEDIA {
        facebook: String
        instagram: String
        twitter: String
    }
`);

// Define resolver functions
var root = {
    getUser: {
        firstName: () => 'John',
        lastName: () => 'Doe',
        email: () => 'John.Doe@gmail.com',
        socialMedia: {
          facebook: () => 'John Doe Facebook',
          instagram: () => 'John Doe Instagram',
          twitter: () => 'John Doe Twitter'
        }
    },
    getSocialMedia: {
        facebook: () => 'John Doe Facebook',
        instagram: () => 'John Doe Instagram',
        twitter: () => 'John Doe Twitter'
    }

 };
8
задан Kevin Fairchild 16 November 2008 в 02:33
поделиться

5 ответов

Вы на правильном пути с двумя столбцами, но я предложил бы хранить весь визуализуемый заголовок в одном столбце, вместо того, чтобы связать столбцы. Другой столбец используется просто для сортировки. Это дает Вам полную гибкость по сортировке и дисплею, вместо того, чтобы застрять с простым префиксом.

Это - довольно общий подход при поиске (который связан с сортировкой). Один столбец (с индексом) свернут случаем, de-punctuated, и т.д. В Вашем случае Вы также применили бы грамматическую конвенцию удаления передовиц к значениям в этом поле. Этот столбец затем используется в качестве ключа сравнения для поиска или сортировки. Другой столбец не индексируется и сохраняет исходный ключ для дисплея.

17
ответ дан 5 December 2019 в 08:55
поделиться

Сохраните заголовок в двух полях: ПРЕФИКС ЗАГОЛОВКА и ТЕКСТ ЗАГОЛОВКА (или некоторые такой). Затем вид на втором, но дисплей конкатенация этих двух, с пространством между.

1
ответ дан 5 December 2019 в 08:55
поделиться

Мое собственное решение проблемы состояло в том, чтобы создать три столбца в базе данных.

article   varchar(4)
sorttitle varchar(255)
title     computed (article + sortitle)

"статья" только будет любой, "A" (отметьте конечный пробел на каждом), или пустая строка (не пустой)

"sorttitle" будет заголовком с удаленной передовицей.

Таким образом, я могу отсортировать на SORTTITLE и отобразить ЗАГОЛОВОК. Существует мало фактической обработки, идущей на вычисленное поле (таким образом, это быстро), и существует только немного работы, которая будет сделана при вставке.

1
ответ дан 5 December 2019 в 08:55
поделиться

Я соглашаюсь с doofledorfer, но я рекомендовал бы хранить пробелы, вводимые как часть префикса вместо того, чтобы предположить, что это - одиночный пробел. Это дает Вашим пользователям больше гибкости. Можно также смочь сделать некоторую конкатенацию в запросе самом, таким образом, Вы не должны объединять поля как часть Вашей бизнес-логики.

0
ответ дан 5 December 2019 в 08:55
поделиться

Я не знаю, может ли это быть сделано в SQL Server. Если можно создать основанные на функции индексы, Вы могли бы создать тот, который делает regex на поле, или это использует Вашу собственную функцию. Это заняло бы меньше места, чем дополнительное поле, будет усовершенствовано самой базой данных и позволяет полному заголовку быть сохраненным вместе.

0
ответ дан 5 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: