Основной вопрос MySQL / хранения данных: информационная архитектура, а не столько кода - PullRequest
1 голос
/ 01 июля 2011

Я пытаюсь выяснить свое первое «более сложное» приложение SQL, и мне трудно понять, как лучше всего сделать что-то простое. Я понимаю код, я думаю, вокруг различных концепций, но хочу знать, как лучше всего вы думаете, это путь, и, что более важно, какие термины / как называть этот метод , чтобы я мог провести больше исследований на это я сам без лишних хлопот!

Я создаю плагин WP, который позволит кому-то добавлять любое количество ящиков к любому количеству «транзакций». По сути, в транзакции 1 может быть коробка 3, называемая яблоками, фруктами, органами. Транзакция 2 может иметь 10 ящиков. И так далее. Я хочу показать это конечному пользователю наилучшим образом. Как начинающий, мой (я уверен, плохой) инстинкт состоит в том, чтобы иметь один ключ, называемый, скажем, транзакциями, который представляет собой список через запятую «1,2,3,4,5». Затем, есть другая таблица, где индекс составляет 1,2,3, и для каждого из этих ключей у меня есть различные поля. Я беру первый список CSV из базы данных, «разбиваю» его на массив и перебираю циклы, собирая ключи из второй таблицы, которые отражают этот #. Но во второй таблице каждый «ключ» указывает на другие ключи? Это где я запутался. Это лучший способ продолжить? Какой код мне нужно искать? РЕДАКТИРОВАТЬ: Вот визуальное изображение того, что я ищу:

Transaction 1: #12878321: Apples, Oranges, Pears
Transaction 2: #11239089: Berries, Oranges, Apples
Transaction 3: #89792834: Spaghetti, Berries, Oranges, Pears, Apples

Я бы хотел отобразить на странице информацию, подобную этой. Поэтому мне нужно сохранить номер транзакции, случайный код и «что было куплено» (поля в моем примере выше) для конечного пользователя.

Я уже сделал вставки, обновления и т. Д. Для одной таблицы, но никогда не связывал (правильное слово?) Две таблицы и не знаю, так ли это сделать, чтобы создать другую таблицу WP.

Я прошу прощения, если это странный и длинный вопрос, но среди 1000 учебных пособий в Интернете трудно понять, каким из них следовать, потому что я не знаком с самими терминами!

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

То, что вы хотите - это (я думаю), называемое отношениями «многие ко многим».Обычно они лучше всего обрабатываются таблицей ассоциаций;таблица ассоциации просто имеет два (соответствующих) столбца;идентификатор записи в одной таблице и идентификатор записи во второй таблице.Таким образом, вы можете создать инструкцию SQL, которая найдет для вас все «ящики» (записи в таблице 2), которые существуют для данной «транзакции» (записи в таблице 1);Вы также можете создать запрос, который позволит вам найти все «транзакции» (записи в таблице 1), которые ссылаются на данный «ящик» записей в таблице 2.

Для этого вам понадобятся три таблицы:

Transactions
ID,   Whatever else you keep for transactions

Boxes
ID,   Contents

TransactionBoxes
TransactionID,   BoxID
0 голосов
/ 01 июля 2011

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

Базовая настройка таблицы для чего-то подобного будет:

transactions:
    userID - who the transaction belongs to
    transactionID - unique id for the transaction itself

boxes:
    transactionID - which transaction does this box belong to
    name  - oranges, apples, etc...

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

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