Nano Hash - криптовалюты, майнинг, программирование

2D-сетка в Code-First Entity Framework: как установить первичные ключи для быстрого поиска на основе X и Y?

Если бы я хотел сохранить таблицу плиток, в которой ни одна плитка не может иметь одинаковые значения X и Y (каждая из них имеет уникальное местоположение), было бы лучше сделать первичный ключ строкой вроде «4, -20» (это похоже на неправильный ответ) или использовать стандартный идентификатор первичного ключа приращения и просто хранить X и Y в качестве других столбцов?

В качестве альтернативы, могу ли я сделать X и Y ОБА первичными ключами? Тогда мне не нужно было бы хранить какую-то комбинированную строку, чтобы убедиться, что они уникальны... или нет? Сделать какое-то двойное ограничение?

По сути, я хочу, чтобы поиск строки на основе X и Y или даже диапазона значений X и Y был быстрым.

public class Tile
{
    public int X { get; set; }
    public int Y { get; set; }
}

  • Это с DB-First или Code-First? (Но короткий ответ, да. Составные первичные ключи должны быть подходящими. База данных обеспечит уникальность на основе комбинации всех полей, определенных как первичный ключ) 01.07.2013

Ответы:


1

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

Для создания с помощью Code-First: (это сообщение в блоге используется как ссылка)

public class Tile
{
    [Key, Column(Order=1)]
    public int X { get; set; }

    [Key, Column(Order=2)]
    public int Y { get; set; }

    public string AdditionalField1 { get ;set; }
}

Для создания с помощью DB-First (что я всегда предпочитаю)

create table Tile
(
    [X] int not null,
    [Y] int not null,
    AdditionalField1 nvarchar(max) null,

    constraint PK_Tile primary key ([X], [Y])
);
30.06.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..