Часто ли таблица с полем в строке ссылается на идентификатор другой строки в той же таблице (fk)? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь построить иерархию ресурсов URL-адресов (для нескольких служб REST), которые можно хранить в базе данных. Пример:

Скажем, у меня есть основная служба, такая как Store, у которой есть несколько URL-адресов API, которые вы можете создавать и отправлять в базу данных (вроде того, как вы настраиваете aws API Gateway). Таким образом, что-то вроде этого будет одна запись:

GET: https://<domain>//store/v1/api/product/category/mens-clothing/shirt

другая может быть:

GET: https://<domain>//store/v1/api/product/category/womens-clothing/dress

еще одна может быть:

GET: https://<domain>//store/v1/api/product/category/home-improvement/tools

еще одна :

POST: https://<domain>//store/v1/api/service/customer/{customer_id}/refund/item/{item_id}

Итак, учитывая простой пример того, что мне нужно хранить и извлекать в rdbms, я думаю, что мог бы сделать что-то вроде:

Table: services
id | name | version |

Table: resources
id | name | service_id (fk) | parent_id (fk) (reference to another row in this table) | index

Учитывая две таблицы , разве я не смогу создать весь URL-адрес, выполнив что-то вроде:

без указания версии и ресурсов API

<id=3 service_name>
<id=22 resource_name, index=0, parent_id=null (which means service is the parent), service_id=3>
<id=49 resource_name, index=0, parent_id=22, service_id=3>
<id=76 resource_name, index=5, parent_id=49, service_id=3>

, как видите, я ' m пытается создать, например, / store / product / category / mens-clothing, используя имя службы и индексирование ресурсов. Но для этого мне пришлось бы ссылаться из одной строки на другую в той же таблице. Это обычное дело? Или, может быть, кто-то делал это в прошлом и может предложить лучшее решение. Имейте в виду, что пользователи используют этот инструмент для создания своих собственных конечных точек REST, поэтому мне и нужно построить эту модель данных.

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