2016-06-04 2 views
0

За последние пару лет я работал над своей собственной простой PHP CMS, которую я использую для своих личных проектов. Единственное, чего не хватает, это простое решение для базы данных.Создание структуры сущности Структура таблиц SQL

Я ищу для создания простой базы данных базы данных контента, в которой я могу указать новый тип (пользователь, книга, событие..ect), а затем иметь возможность автоматически загружать все, что с ним связано.

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

table: event 
columns: id, name, description, date 

table: event_people: 
columns: id_event, id_user 

table: event_pictures: 
columns: id_event, picture 

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

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

Entity:load($id, "event"); 

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

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

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

+0

Вы, кажется, ищете модель db. Как я вижу, PHP не должен быть даже тегом. – Drew

ответ

0

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

Затем, когда новый тип объекта с его собственной таблицей был добавлен, вы можете сделать запись в таблице отношений.

INSERT INTO entity_relationship VALUES 
('event','event_people'), 
('event','event_pictures'), 
('event','event_documents'), 
('event','event_performers'); 
Смежные вопросы