Создание 20 связанных таблиц для динамических данных или лучшего решения — MySQL

Я ищу лучшее решение для моего ниже требования.

Я должен хранить любимую вещь пользователя, как —

  1. Фильмы
    1. название
    2. Тип // Вроде научная фантастика, триллер, комедия, романтика
    3. URL [если есть]
  2. Музыка
    1. название
    2. Тип
    3. URL [если есть]
  3. Кухня
    1. название
    2. Тип
    3. URL [если есть]
  4. Спортивный
    1. название
    2. Тип
    3. URL [если есть]

так далее.,

Этот список любимых может расти больше & Для каждого Фаворита.

Эти столбцы выше будут для каждого любимого предмета. Мои текущие решения — это создание таблицы для каждой любимой вещи, например, [Любимые фильмы, Любимые виды спорта и т. Д.]. Но так как эти любимые элементы могут увеличиваться, и я не хочу создавать еще одну таблицу для этого снова из MySQL.

Итак, я ищу решение, как, Создание таблицы с именем просто, «избранное», с колонкой: —

  1. Название.
  2. Ссылка на страницу.
  3. Тип.

Эти названия могут быть «фильмы», «книги» и т. Д., И внутри каждого «фильма» или «книги» будут все данные. И эти данные будут связаны с другим пользователем.

Итак, мне нужна помощь в разработке схемы таблицы с отношением, создав меньше таблицы.

Язык программирования, я использую: —

  1. MySQL для базы данных /
  2. PHP для серверной части.

2

Решение

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

1. tbl_favoritemaster

Column List: favoriteId (PK), favoriteName
Data:

| favoriteId | favoriteName |
|      1     | Movie        |
|      2     | Book         |

2. tbl_favoritedetail

Column List: Id (PK), favoriteId (Reference to tbl_favoritesmaster), Name, Type, URL
Data:

| Id | favoriteId | Name | Type | URL  |
|  1 |    1       | M1   |  T1  | URL1 |
|  1 |    2       | B1   |  T2  | URL2 |
0

Другие решения

То, как я бы подошел к этому.

______________________________________________________________
| UniqueID | FavouriteID | Data | Name    | Page Link | Type |
| Int(11)  | Int(11)     | Blob | varchar | Varchar   | Int? |
______________________________________________________________

Второй стол

___________________________
| UniqueID | FavouritName |
| INT(11)  | VarChar      |
___________________________

Создайте внешний ключ между таблицей 2 UniqueID и таблицей 1 FavouritID

при доступе через PHP я сам использую этот набор функций

function RDataLink($field, $table, $current=""){
accessDB();
$QTable=mysql_query("SHOW CREATE TABLE $table");
$Table=mysql_result($QTable,0,1);
exitDB();
// CONSTRAINT `jobSeeker_ibfk_1` FOREIGN KEY (`location`) REFERENCES `24_location` (`UID`)
$x=preg_match_all('/FOREIGN[^(]+.[^(]+[^)]+./',$Table,$matches);
foreach ($matches as $array){
foreach ($array as $value){
if(preg_match("/(?<=FOREIGN\sKEY.{3})$field/",$value)){
if (preg_match("/(?<=REFERENCES[^`].)[^`]+/",$value,$ForeignTable)){
accessDB();
$Qrows=mysql_query("SELECT * FROM ".$ForeignTable[0]);
exitDB();
$options="<select name=\"$field\">";
while ($rows=mysql_fetch_array($Qrows,MYSQL_ASSOC)){
$options.="<option value=\"".$rows['UID']."\"".($current==$rows['UID'] ? "selected" : "") .">".$rows['name']."</option>";
}
$options.="</select>";
}
}
}
}
if(!$x){
return false;
}
else {
return $options;
}
}

function RQuery($field,$table,$current){
accessDB();
$QTable=mysql_query("SHOW CREATE TABLE $table");
$Table=mysql_result($QTable,0,1);
exitDB();
$x=preg_match_all('/FOREIGN[^(]+.[^(]+[^)]+./',$Table,$matches);
foreach ($matches as $array){
foreach ($array as $value){
if(preg_match("/(?<=FOREIGN\sKEY.{3})$field/",$value)){
if (preg_match("/(?<=REFERENCES[^`].)[^`]+/",$value,$ForeignTable)){
accessDB();
$Qrow=mysql_query("SELECT name FROM ".$ForeignTable[0]." WHERE UID='$current'");
return mysql_result($Qrow,0);
exitDB();
}
}
}
}

}

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

1

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

введите описание изображения здесь

1
По вопросам рекламы [email protected]