Структура таблиц для системы публикации

У меня есть проект по созданию базы данных в памяти для системы публикации, и мне нужна помощь в структуре базы данных, какова будет структура и поля таблиц и отношения между ними. Ниже приводится объяснение базы данных и таблиц. В этом проекте схема состоит из 3 таблиц: Пользователи, Контент, Лицензия, необходимо добавить достаточное количество столбцов для поддержки лицензий на основе временных ограничений (включая бессрочные) или количества доступов, которые предоставляют доступ к определенным фрагментам контента (фрагмент контента - это любой критерии, которые могут идентифицировать часть контента, такую ​​как дата публикации в диапазоне или список идентификаторов контента и / или фильтр по имени журнала).

Пытался написать 3 таблицы.

таблица пользователей и состоит из:

-id
-name
-password
-authority

таблица лицензий:

-id
-name

таблица пользовательских лицензий "

-id
-user-id (FK)
-license-id (FK)
-price
-expiration date 
-created at

Привет и добро пожаловать в Stack Overflow. Пожалуйста, прочтите stackoverflow.com/help/how-to-ask - в его нынешнем виде ваш вопрос не тот, на который мы можем ответить. Чего не хватает вашему первоначальному решению?

Neville Kuyt 06.01.2019 12:43

Могут ли несколько пользователей иметь одну и ту же лицензию? Может ли пользователь иметь несколько лицензий?

GMB 06.01.2019 14:21

пользователи не могут иметь одну и ту же лицензию, и пользователь может иметь несколько лицензий.

AIMadi 06.01.2019 14:38
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
67
3

Ответы 3

Насколько я понял, ваша проблема заключается в предоставлении разрешений на несколько видов использования. Это Java-приложение этого. Вот почему у вас есть тег java. Потому что в такой базе данных нет ничего плохого. если так

просто попробуйте использовать спящий режим

или создайте новый класс с методами специально для чтения или записи данных

Затем позвольте пользователю получить доступ к этим методам, как вы хотите, по наследству или любым подходом, который вам нравится.

моя проблема в том, как спроектировать таблицы и отношения между ними, я уже сделал с 3 таблицами и не знаю, как делать контент

AIMadi 06.01.2019 13:35

моя проблема в том, как спроектировать таблицы и отношения между ними, я уже сделал с 3 таблицами и не знаю, как делать контент

Между пользователями и лицензиями существует отношение 1-N, при котором один пользователь может иметь несколько лицензий, а каждая лицензия принадлежит только одному пользователю.

Для представления такой взаимосвязи должно хватить двух таблиц вместо трех. Дополнительная таблица мостов user-license не требуется:

  • таблица user содержит по одной записи для каждого уровня пользователя (идентификатор, имя, пароль, ...)

  • таблица licence содержит одну запись для каждой лицензии со всей соответствующей информацией (имя, цена, срок действия, ...) и внешний ключ, который ссылается на идентификатор пользователя, которому принадлежат лицензии

Вот как добавить внешний ключ в таблицу license:

ALTER TABLE license 
    ADD user_id INT NOT NULL DEFAULT 0;
ALTER TABLE license
    ADD CONSTRAINT fk_user_id 
    FOREIGN KEY (user_id) REFERENCES users(id);

как насчет содержания, какое отношение и как я могу это сделать?

AIMadi 06.01.2019 21:35

@AIMadi: что такое таблица content и что в ней содержится? Вы поместили какую-либо информацию об этой таблице в свой исходный пост.

GMB 07.01.2019 11:18

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

AIMadi 07.01.2019 12:19

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

AIMadi 08.01.2019 08:12

Другие вопросы по теме